Java基础总结

142 阅读9分钟

基础概述

· Java 语言的介绍

Java 语言 是 由美国sun 公司研发 一门计算机语言。Java 之 父 詹姆斯.高斯林。

· Java 语言的版本

Java SE: 桌面应用开发

Java ME : 嵌入式开发

Java EE : 企业级网站开发

· Java 跨平台原理

平台: 操作系统 (Windows ,Mac ,Linux)

跨平台:Java可以 跨 操作系统运行

原理: JVM Java虚拟机*(JVM不可以跨平台)*

· JRE 和 JDK

JRE : Java 运行时环境,包含 JVM 和 核心类库 。

JDK Java开发工具包: 重要的工具:编译工具、运行工具 ,包含JRE

a. java 程序文件后缀 是 .java b. 类,简单理解 一个Java文件就是一个类 ,比如 A.java A 是一个类。 c .类库: 多个类放在一起 就是类库

JDK 和 JRE 什么样关系???

JDK 包含 JRE,JRE 包含 JVM

JDK 包含JRE ,提供了 很多开发使用工具:比较重要 编译工具、运行工具!

JRE 包含 JVM 和 核心类库 。

JVM Java虚拟机,使用Java程序跨平台依据

· 写一个Java程序 步骤

① 编写Java代码

② 编译Java代码(命令框:javac 文件名.java)

③ 执行Java程序(命令框:Java 文件名)

Java程序初体验

· JDK 下载和安装

JDK 版本

1995 第一个版本 1.0

2004 Java 5.0 版本

2014 Java 8.0 版本 【LTS 长期支持版本】 (市占率)
2018 Java 11.0 版本 【LT长期支持版本】 【学习】

Java 17 版本 【LTS 长期支持版本】

Java 21 版本 【LTS 长期支持版本】 【协程】

· 介绍Dos 命令

① 调出dos命令窗口 Win+R ② 切换磁盘 比如 切换到 D盘 > D: 敲一个回车 切换到对应D盘 ③ 清理dos屏幕 > cls ④ 进入指定的目录(文件夹) > cd 指定的目录 比如 cd D:/Apps/Develop/Java/jdk11 进入jdk11 目录

· 配置Java环境变量

为什么要配置环境变量? 为了在任意目录下使用javac和java

电脑打开设置,找到系统设置,找到高级系统设置,找到环境变量

可以多个jdk进行配置,最后

需要在path中配置一下

基础语法

· 注释

注释的特点:不会和代码一起执行

什么是注释 :解释说明某一段代码意思。

有几种注释方式:

   - 1. 单行注释     // 我是一个单行注释
   
   - 2. 多行注释     /* 我是多行注释 */
   
   - 3. 文档注释     /**  我是文档注释 */
   

· 关键字

什么是关键字: 被Java 赋予特定含义的英文单词!

比如 :类前面的 public 是一个关键字。 限定类名字必须和文件名字一样!

关键字特点

① 全部小写

② 不同颜色标记

问题:main是不是关键字 main 不是关键字。但是JVM 是通过main 识别程序入口。

· 常量

什么是常量: 不变的数据(不变的量)!【程序运行过程中永远不会改变的量】

常量分类:

字符串常量: 比如 "abc" ,"黑马程序员"

整数常量: 比如 11 ,-100

小数常量: 比如 1.001 , -100.34

字符常量: 比如 'a' , '1' ,'A'

布尔常量: 比如 true (真) ,false (假)

空常量 : null

· 变量

什么是变量 :程序运行过程中会不断变化的量变量,变量本质上就是内存中一块存储空间

如何在Java程序中定义一个变量: 数据类型 变量名称 = 值 ;

· 数据类型:

什么是数据类型:数据类型本质上就是对Java中数据分类!

数据类型有哪些?Java中将数据分成2中类型:

基本数据类型: 4类8种

整型(整数): 根据表示数字范围将整型分成4个小类

byte (字节) 1字节

short (短) 2字节

int (整) 4字节

long (长) 8字节

浮点型(小数):根据表示数字范围将整型分成2个小类

float 4字节

double 8字节

布尔型 (真假):

boolean 1字节

字符型 :

char 2字节

引用数据类型:

字符串类型:

String

· 键盘录入功能

 import java.util.Scanner;
//导包
      Scanner sc=new Scanner(System.in);
//创建一个sc的Scanner对象
      int a=sc.nextInt;
//用int a 接收键盘输入的值
      String b=sc.next;
//用字符串接收键盘输入的值

· 标识符

标识符: 给方法或者类或者变量 起名字的字符!

比如 int aa = 10; 这里 aa 就是标识符!

标识符书写规范:

① 不能是关键字

② 区分大小写

③ 不能以数字开头

④ 由 数字、字母、_ 和 $ 组成

命名规范

类名:

大驼峰 HelloWorld 所有单词首字母都大写

变量名和方法名:

小驼峰 helloWorld 除了第一个单词外,所有单词首字母都大写

经验内容:

1.变量名称见名知意

比如:int age = 10; String userName = "张三";

2.禁止使用简写

比如:用 a b c........

· 类型转换

隐式转换 : 小的类型可以直接用大的类型接收!特别注意 : long --->float 接收!

显式(强制)转换: 大的类型用小的类型接收 (溢出,精度丢失)

强制转换写法:目标类型 变量名 = (目标类型)被转换的数据;

比如 : int a = 100000; byte b = 10; b = (byte)a;

特殊的:① Java中存在 【常量优化机制!】 , ​ ② 当两个【byte,short,char ,int】 参与运算的时候 主动提升为 int 。

运算符

· 算数运算符

分类:

+:加法

特殊用途

+号左右两边全都是数字,执行的是加法运算。例如:5 + 5

+号在字符参与运算的时候,将字符对应的码表值进行运算 'a' + 2

'a'-----97 'A'-----65 '0'-----48

+号在字符串参与运算的时候,做字符串的拼接

-:减法

*:乘法

/:除法(java中整数相除,结果只能得到整除。如果想得到小数,需要将其中某一个数据变成小数类型)

%:取余(取模)

++:自增

--:自减

···················同上

· 赋值运算符

1.基本赋值运算符: =

代表将右侧的数据交给左侧的变量. 例如: int a = 30;

2.扩展赋值运算符: += ,-= ,*= ,/= ,%=

a+=b----->a=a+b 其他的相同

但是需要注意一点: 扩展赋值运算符底层自带强转功能

· 比较(关系)运算符

== 比较左右两边是否相等,结果是布尔类型的

< 比较左边是否小于右边,结果是布尔类型

比较左边是否大于右边,结果是布尔类型

<= 比较左边是否小于等于右边,结果是布尔类型

= 比较左边是否大于等于右边,结果是布尔类型

!= 比较左右两边是否不相等,如果不相等结果是true,否则是false

关系表达式的结果是boolean类型

·逻辑运算符

逻辑运算符有哪些?

& 与 并且 true & false 遇到false,结果就是flase,只有左右两边都为true的时候,结果才为true

| 或 或者 true | false 遇到true,结果就是true,只有左右两边都是false的时候,结果才为false

! 非 取反 非true则false。非false则true

^ 异或 相同为false , 不同才为true true^true=false true^false=true false^false=flase

短路与 短路或

什么是短路?

短路:左边表达式的结果确定之后,如果整个表达式的结果已经被确定了,就不会去执行右边的表达式

短路与: &&

具有短路的效果,并且的意思,在左边表达式能够确定其结果后(当结果为false),右边的表达式就不会在执行了

短路或: ||

具有短路的效果,或者的意思,在左边表达式能够确定其结果后(当结果为true),右边的表达式就不会在执行了

后期写程序一般使用短路与、短路或,提升程序性能

· 三元运算符

格式:

数据类型 变量名= 比较表达式 ? 表达式1 : 表达式2;

纯粹的格式:

布尔表达式 ? 表达式1 : 表达式2;

先判断布尔表达式的结果,如果结果为true三元表达式的结果就是表达式1,否则就是表达式2

分支语句

分支语句分成2种:

  • if 语句
  • switch语句

· if语句

  • 第一种:

语法1:

if(关系表达式){ // 语句 ① }

// 语句②

关系表达式 里面结果只有2种可能 true,false

如果 关系表达式结果为 true 执行语句①

如果 关系表达式结果为 false 执行语句②

第二种

语法2:

if(关系表达式){ 语句1; }else{ 语句 2; }

如果关系表达式 为 true ,执行语句 1

如果关系表达式 为false ,执行语句 2

第三种

语法3:

if(关系表达式1){ 语句1; }else if(关系表达式2){ 语句2; }else if(关系表达式3){

语句3 } .......

else{ 语句 n; }

判断比较表达式1的值。

如果是true,就执行语句体1.

如果是false,判断比较表达式2的值

如果是true,就执行语句体2.

如果是false,判断比较表达式3的值

如果是true,就执行语句体3

。。。。。。

如果是false,就执行最后的else语句中的语句体n

注意

①. 一旦执行了某一个大括号中的语句体,整个if语句就结束了.不可能出现执行两个语句体的情况.

②. 有else{}的情况下,不可能一个语句体都不执行.因为else{}是收尾工作,他的作用就是前边的条件不满足,那么就会执行它.

· switch语句

switch语法:

switch(普通表达式){ case 值1: 语句体1; break; // 防止case穿透现象发生 case 值2: 语句体2; //break; default: 语句体3; break; }

看表达式的结果和哪个case后面的值相同,就执行那个case后面的语句体,碰到break就结束switch.

如果没有符合要求的case则执行default后面的语句体.

注意

switch后面小括号当中只能是下列数据类型:

基本数据类型:byte /short /char /int

引用数据类型:String字符串、枚举

什么是case穿透?

如果不加break就会出现case穿透问题.匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止;

循环语句

· for语句

for语法:

for(初始化表达式;条件判断(比较表达式);条件控制语句){ 循环体; }

执行流程:

先执行初始化语句,然后看条件判断的结果,如果为false 循环结束,如果为true 执行循环体.循环体执行完后执行条件控制语句.然后继续执行条件判断(PS:注意,不是初始化语句)如果结果为false,结束循环,结果为true则继续循环体,然后条件控制语句以此类推.

注意:

for循环的变量在小括号当中定义,只有循环内部才可以使用。