一、关键字和标识符
1、关键字和标识符
关键字:被Java语言赋予了特殊含义,用做专门用途的字符串(单词),如public、private、final(修饰类表明这个类是最终类, 不允许被扩展;修饰方法表明这个方法是最终方法, 不允许被重写;修饰变量表明这个变量是常量, 所谓常量是只能赋值一次
)、static等
保留字:为java预留的关键字,虽然现在没有作为关键字,但在以后的升级版本中有可能作为关键字,如:goto、const
标识符:凡是自己可以起名字的地方都叫标识符
2、命名的规则
①必须由英文字母、0-9、_或 $ 组成
②不可以数字开头
③不可以使用关键字和保留字,但可以包含关键字和保留字
④Java中严格区分大小写,长度无限制
⑤标识符不能包含空格
3、Java中的名称命名规范
包名:多单词组成时所有字母都小写,如:xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写,如:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写,如:xxxYyyZzz
常量名:所有字母都大写,多单词时单词间用下划线连接,如:XXX_YYY_ZZZ
二、变量
1、变量类型:
按照数据类型来分类,分为基本数据类型和引用数据类型(数组、类、接口)
基本数据类型:变量的值是多少,内存中的区域中保存的值就是多少,变量存储在内存中
基本数据类型 | 类型 | 备注 |
---|---|---|
整型 | byte(8 bit,1字节,-128~127) short(2字节,-32768 ~ 32767) int(默认类型,4字节,-231 ~ 231 - 1) long(8字节,-263 ~ 263 - 1) |
声明的整数默认都是int型,若需要short、byte、long时需要显示声明或强制转换 |
浮点型 | float(4字节) double(默认类型,8字节) |
|
字符型 | char(2字节,0 ~ 65535) | 本质上是一个整数,是字符的Unicode码值,字符和字符串不同,字符可以直接转化为正数,但是字符串不行 |
布尔型 | boolean(1字节) | 取值只能为true 或false,不能取null |
除基本数据类型之外的类型都是引用数据类型,比如类、接口、数组等,在引用变量中不是保存具体的值,而是保存另外的一个对象的内存的地址
按照在类中的声明的位置的不同,也可将变量分为:成员变量和局部变量
Tip
:局部变量在使用之前必须初始化,它没有默认的初始化值,但是全局变量可以不显示初始化,若不显示初始化的时候会有默认的初始化值
2、变量访问有就近原则
三、进制
常用进制:十进制、二进制、八进制、十六进制
二进制:计算机底层都是用二进制来存储和运算
数据类型转换:
①自动转换:由范围小的赋值给范围大的
byte -> short -> int -> long -> float -> double
②强制转换:由范围大的赋值于范围小的
int i = 256;
byte b = (byte)i;
注意
:byte、short、char之间做运算,结果为int型。short型、byte型、char型数据不会相互转化,它们之间相互计算的结果是int型数据而不是byte或者short和char,所以它们的计算结果一定要拿int型或者更高等级类型来接收,或者使用类型强转。
③将十进制数据转化为二进制:可将int、short、byte等类型的数据转化为二进制
Integer.toBinaryString(参数);
Long.toBinaryString(参数);
④十六进制数适用于所有整数类型
⑤java中采用e或者E表示指数,默认为double类型:
int a = (int)8e2;//a的值是800,相当于8*10^2。
⑥在将float或double转型为整型时总是对该数字执行截尾操作,从前面截取int类型的长度,后面的丢弃
⑦布尔型变量不能参与任何运算,只能被赋值为true或false
四、运算符
+=的使用:
short i = 5;
//i = i + 1;//报异常,因为short类型做运算后变为int,不可以再使用short类型接收
i += 5;//这个不会报异常
位运算符:
<<左移:后面补0
>>右移:原来最前面是0的话补0,原来最前面是1的话补1
>>>无符号右移:前面只补0
~:取反:取反操作并不是取它的反码,而是对原码取反,但是在内存中负数是以补码的形式保存的,对负数取反时,要先转化为原码再取反(该说法不一定准确)
Tip
:
①一个正数左移几位相当于原数乘以2的几次方,右移几位则相当于除以2的几次方,可以据此快速的使原数增加或降低相应的倍数
②移位操作符只能操作整数类型,无符号右移只在java中有,c和c++中没有,移位操作符的使用:<<=、>>=、>>>=,符号左边是要操作的整数,等号右边是移动的位数
三目运算符:(判断条件) ? (表达式1而不是等式或赋值语句) : (表达式2而不是等式或赋值语句);
运算符的优先级:单目>运算>移位>比较>按位>逻辑>三目 >赋值
五、流程控制
switch小括号中的变量可以为byte、short、int、char、枚举、String,不能是long型等其他类型
六、数组
1、一维数组
静态初始化:在声明并初始化数组与给数组相应的元素赋值的操作同时进行
int[] scores1 = new int[]{72,90,59};
动态初始化:在声明并初始化数组与给数组相应的元素赋值操作分开进行
int scores2[] = new int[3];
scores2[0] = 72;
scores2[1] = 90;
scores2[2] = 59;
声明数组的错误写法:
String[] names = new String[5]{"AA","BB","CC"};//静态初始化时不要指明长度
int i[10];//数组的长度不能在变量处指明,应在赋值时指明
int i = new int[];//没指明长度
2、关于数组元素的默认初始化值
①byte short int long 型数组:0
②float double 型数组:0.0
③char型数组:空格
④boolean型数组:false
⑤引用类型数组:null
3、一维数组和二维数组在声明的时候都必须指明长度,以给数组分配空间:二维数组的长度是第一个中括号中的数字,但第二个中括号可以不写而动态的变化:二维数组的每一行都是一个一维数组
int[][] a = new int[4][];