Java基础语法
标识符
1.标识符可以由字母,数字,下划线(_),美元符($)组成,但不能包含@,%,空格等其他他叔字符
2.不能以数字开头
3.标识符严格区分大小写
4.标识符的命名最好能反映出其作用,做到见面名知意
5.标识符不能是Java的关键字
关键字
注释:简单
变量
变量类型 变量名 变量值
1.变量名必须是一个有效的标识符
2.变量名不可以是Java关键字
3.变量名不能重复
局部变量
位置:定义在方法里或者或者局部代码块中
注意:必须手动初始化分配内存
作用域:方法里或者局部代码块中,运行完释放内存
成员变量
位置:定义在类里方法外
注意:不用初始化,也会自动被初始化成默认值
作用域:整个类中,类消失了,变量才会释放
常量 static final
数据类型
基本类型介绍
1 Byte=8 Bits =1字节
1 KB = 1024 Bytes 1 MB = 1024 KB 1 GB = 1024 MB
引用类型
包装类型
String为字符串类型,底层为char[]
数据类型字面值5条
1.整数类型的字面值类型是int类型
int x = 99999;
//byte y = 300;//错,300是int类型,byte存不下
//int z = 999999999999;//错,虽然是int类型,但是超出范围
long h = 999999999999L;//如果要定义long类型需要加后缀L
2.byte,short,char三种比int小的证书可以用范围内的值直接赋值
byte b1=127;//对,
byte b2=128;//错,超出byte的范围
char c1=97;//对,对应的是码表中的'a'
char c2 =69999;//错,超出char的范围
3.字面值后缀L D F
4.浮点数类型的字面值类型是double类型
double d = 3.14;
//float f = 3.14;//错,3.14认为自己是double类型
float f = 3.14F;//如果要定义float类型需要加后缀F
double d2 = 3D;//如果要定义的小数是整数,最好加D方便阅读
5.进制前缀
0b-标识这是2进制,如:0b0101
0-标识这是8进制,8进制是三位,如:023
0x-标识这是16进制,如:0x0001
基本类型转换
小转大不需要强转,大转小需要强转,浮变整,小数没;以下为小转大:
运算规则
1.计算结果的数据类型与大数据类型一致
2.byte,short,char三种比int小的整数,运算时会先自动转换成int
3.整数运算溢出
4.浮点数运算不精确
5.浮点数有特殊值
infinity 无穷大 NaN 0/0.0或0.0、0
运算符
分支结构
1.单分支结构
if(){}
2.多分支结构
if(){}else{}
3.嵌套分支结构
if(){}else if(){}else{}
switch结构
switch case 语句用来判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
当一个case成立,从这个case向后穿透所有case,包括default,直到程序结束或者遇到break程序才结束
switch(){
case value :语句 break;
case value :语句 break;
case value :语句 break;
default :语句
}
注意事项:
1.switch 语句中的变量类型可以是: byte、short、int 、char、String(jdk1.7以后支持)
2.switch 语句可以拥有多个 case 语句
3.每个 case 后面跟一个要比较的值和冒号,且此值的数据类型必须与变量的数据类型一致
4.当变量值与 case 语句值相等时,开始执行此case 语句的内容,执行完会判断此行代码是否有break,如果有,结束执行,如果没有,会继续向后执行穿透所有case,包括default
5.switch 语句可以包含一个 default 分支,该分支一般是写在switch 语句的最后
6.如果在default之前的case有break,则default不会执行
循环结构
for循环
for(开始条件;循环条件;更改条件){
循环体
}
for循环遍历
for(遍历得到的类型 遍历之后的内容:需要遍历的内容){
}
嵌套for循环
for(){
for(){
}
}
break:直接结束当前循环,跳出循环体
continue:跳出本轮循环,继续下一轮循环
先判断在执行,死循环需要设置出口
while(循环条件){
循环体;
}
先执行在判断
do{
循环体
}while(循环条件)
三种循环区别:
- for:知道循环次数
- while/do while:当循环次数不确定时
- while:先判断,不符合规则,不执行代码
- do while:代码最少被执行一次,再去判断,符合规则,再次执行代码
- 循环之间都可以互相替代,但是一般最好选择合适的循环结构来完成代码哦~
方法
方法的重载
方法的重载是指在一个类中定义多个同名的方法,但是每个方法的参数列表不同(也就是指参数的个数和类型不同),程序在调用方法时,可以通过传递给他们的不同个数和类型的参数来决定具体调用哪个方法.
数组
数组Array,标志是[ ] ,用于储存多个相同类型数据的集合想要获取数组中的元素值,可以通过脚标(下标)来获取数组下标是从0开始的,下标的最大值是数组的长度减1
创建数组
1.动态初始化
int[] a=new int[5];
2.静态初始化
int[] b=new int[]{1,2,3,4,5};
int[] c={1,2,3,4,5};
创建数组过程
- 在内存中开辟连续的空间,用来存放数据,长度是5
- 给数组完成初始化过程,给每个元素赋予默认值,int类型默认值是0
- 数组完成初始化会分配一个唯一的地址值
- 把唯一的地址值交给引用类型的变量a去保存
数组名是引用类型的变量,他保存着的是数组的地址,不是数组中的数据。
数组长度 length属性来表示,长度不可改变,数组长度允许为0
new Random().nextInt(); 生成随机数
Arrays.toString() 把数组里的数据,用逗号连接成一个字符串[值1,值2]
Arrays.sort() 对数组进行排序,对于基本类型的数组使用的是优化后的快速排序算法,效率高
对引用类型数组,使用的是优化后的合并排序算法
数组类型 数组名=Arrays.copyOf(复制的数组,新长度) 复制数组,增加长度,缩短长度
二维数组(数组之中存数组)
int[][] a={{3,5},{7,9},{1,2}}