本篇文章的主要内容如下:
目录
-
关键字
(1)被Java语言赋予特定含义的单词
(2)特点:全部小写。
-
标识符
(1)就是给类,接口,方法,变量等起名字的字符序列
(2)组成规则:
A:英文大小写字母
B:数字
C:$和_
(3)注意事项:
A:不能以数字开头
B:不能是java中的关键字
C:区分大小写
(4)常见的命名规则(见名知意)
A:包 全部小写
单级包:小写 举例:liuyi,com
多级包:小写,并用.隔开 举例:cn.itcast,com.baidu
B:类或者接口
一个单词:首字母大写 举例:Student,Demo
多个单词:每个单词首字母大写 举例:HelloWorld,StudentName
C:方法或者变量
一个单词:首字母小写 举例:name,main
多个单词:从第二个单词开始,每个单词首字母大写
举例:studentAge,showAllNames()
D:常量 全部大写
一个单词:大写 举例:PI
多个单词:大写,并用_隔开 举例:STUDENT_MAX_AGE
-
注释
(1)就是对程序进行解释说明的文字
(2)分类:
A:单行注释 //
B:多行注释 /**/
C:文档注释 /** */
(3)注释的作用
A:解释说明程序,提高了代码的阅读性。
B:可以帮助我们调试程序。
-
常量
(1)在程序执行的过程中,其值不发生改变的量
(2)分类:
A:字面值常量
B:自定义常量
(3)字面值常量
A:字符串常量 "hello"
B:整数常量 12,23
C:小数常量 12.345
D:字符常量 'a','A','0'
E:布尔常量 true,false
F:空常量 null
(4)在Java中针对整数常量提供了四种表现形式
A:二进制 由0,1组成。以0b开头。
B:八进制 由0,1,...7组成。以0开头。
C:十进制 由0,1,...9组成。整数默认是十进制。
D:十六进制 由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。
-
变量
(1)在程序的执行过程中,其值在某个范围内可以发生改变的量
(2)变量的定义格式:
A:数据类型 变量名 = 初始化值;
B:数据类型 变量名;
变量名 = 初始化值;
-
数据类型
(1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。
(2)分类:
A:基本数据类型:4类8种
B:引用数据类型:类,接口,数组。
(3)基本数据类型
A:整数 占用字节数
byte 1
short 2
int 4
long 8
B:浮点数
float 4
double 8
C:字符
char 2
D:布尔
boolean 1
注意:
整数默认是int类型,浮点数默认是double。
长整数要加L或者l。
单精度的浮点数要加F或者f。(否则编译器报错)
byte,short在定义的时候,他们接收的其实是一个int类型的值,如果不再它们的范围内,就报错。
字符char型可以存储一个中文汉字,因为char类型占用两个字节,JAVA使用的是Unicode编码。
-
数据类型转换
(1)boolean类型不参与转换
(2)默认转换
A:从小到大
B:(byte,short,char) --> int -- >long -- >float --> double (long可以转换成float的原因:一是它们底层的存储结构不同,
二是float表示的数据范围比long的范围大
long:2^63-1 float:3.4*10^38)
C:byte,short,char之间不相互转换,直接转成int类型参与运算。(在运算时尤为注意)
(3)强制转换
A:从大到小
B:可能会有精度的损失,一般不建议这样使用。
C:格式:
目标数据类型 变量名 = (目标数据类型) (被转换的数据);
-
思考题及面试题
(1)下面两种方式的区别:
float f1 = 12.345f; //直接将一个单精度浮点常量赋值给f1 float f2 = (float)12.345; //将一个双精度浮点常量强制转换为单精度浮点常量,再赋值给f2 //注意:如果没有强制转换,将报错
(2)下面程序的错误:
byte b1 = 3; byte b2 = 4; byte b3 = b1 + b2;//错误 byte b4 = 3 + 4; //正确
解析:
第四句正确的原因:3和4都是常量,java在编译时期会检查该常量的和是否超出byte类型的范围。如果没有可以赋值。
第三句错误的原因在于:在运算时,b1 和 b2 先被提升为int 类型进行加法运算,得到的结果是int型,如果不对结果进行强制转换成byte型,将出现4字节的数值传给1字节的变量的情况,因此程序出错。而b1 和 b2 会被提升为int 类型计算的原因在于 b1 和 b2 是变量,因为变量的值会变化,不确定具体的值,所以默认使用int类型进行存储。
(3)下面的操作结果:
byte b = (byte)130;//如果不进行强制转换将会出错,因为byte类型的范围在-128~127 System.out.print(b);
首先,常量130以4字节形式存储,对应的二进制数为(符号位为正):
00000000 00000000 00000000 10000010
其次,强制转化后对应的二进制数为: 10000010
最后,对于有符号的byte类型,上述的运算过程采用的是补码,由于此时符号位为负,因此需转化成原码赋值给变量b:
将补码10000010转化原码为11111110,对应十进制数 -126.
所以打印出来的b的值为-126.
(4)写出下列程序结果
System.out.println('a'); System.out.println('a' + 1); System.out.println("hello"+'a'+1); System.out.println('a'+1+"hello"); System.out.println("5+5="+5+5); System.out.println(5+5+"=5+5");
结果:
这里只需注意两点:
①任何数据和字符串进行操作,结果都是字符串类型。在字符运算中,“+”是字符串连接符
②要注意运算的顺序:从左到右。