标识符:
组成:26个英文字母大小写,数字,0-9,符号:$,_
规则:
1.数字不可以开头(1ab)
2.不能使用关键字(class)
java严格区分大小写
Java中的一些命名规范:
1.包名:xxyyzz……
2.类名/接口名:XxxYyyZzz……
3.变量名/函数名:xxYyyZzz……
4.常量名:XXX_YYY_ZZZ……
常量:
整数常量几种特殊表现形式:
八进制:0123(十进制的83)
十六进制:0x13(0X13)
二进制
注意:
长整形必须以l(L小写/小写)结尾:9l,1238238238L
单精度浮点型(float)以f结尾:3.6f, .4f, 5.022e+23f
变量:
基本类型:
注意:整数默认:int,小数默认:double
基本类型转换:
例子:
class TypeConversion1 { public static void main(String[] args) { byte b=1;//判断1这个整形常量在不在-128~127范围内,在则正确,否则报错 //b=b+2;//ERROR!,此时b的数据类型提升为int,与2(默认int),和为int //因此不能放在byte变量中 b=(byte)(b+2);//把b+2的值强制转换为byte赋值给b,可能丢失精度(看下面的情况) int i=393;//此时已经超出byte范围 System.out.println((byte)i);//-119,发生截断 详解转 截断图
//long i2=1238989001234;//虽然定义的long,
//但是此时已经超出默认int范围(-2^31~2^31-1),会报错
long i2=1238989001234L;
System.out.println(‘a‘+1);//98,字符类型会被提升为int(对应ASCII码为97) int n=123456789; float f=n;//1.234567892E8,虽然n的值没有超出f的数值范围, //但是float的有效数字为7位,也就是说 92这两位数字 //已经不准了 System.out.println(f);
//float f=1.2;//由于浮点数默认为double,1.2赋值给f在编译时会报”可能损失精度”,这时可以使用单精度浮点数1.2f
} }
需要知道:计算机中的数据以二进制补码的形式存储,其中正数的原码,反码,补码相同.
而负数的反码为:符号位不变,其余位取反.补码:反码+1.
基本类型间的转换图:
注意:
实心箭头表示无精度丢失的转换,虚箭头表示可能有精度损失的转换
转换规则:
一 数值类型转换规则
数值型数据进行运算时,如果操作数的类型不同或操作数的类型均低于int型,则
会进行自动类型转换处理,具体规则如下:
1)如果两个操作数中有一个是double型,则系统先将另一个操作数的值转换为double
型,然后再进行运算,否则
2)如果两个操作数中有一个是float型,则系统先将另一个操作数的值转换为float
型,然后再进行运算,否则
3)如果两个操作数中有一个是long型,则系统先将另一个操作数的值转换为long
型,然后再进行运算,否则
4)两个操作数的值都将被转换为int型
5)如果只有一个操作数(例如进行"~"位运算时)且其类型低于int型时,则将该操作数的值转换为int型
简单归结为:
1) byte,short,char->int->long->float->double
2) byte,short,char之间不会互相转换,他们三者在计算时首先会转换为int类型
注意:Java中可以将int型数值常量直接赋值给相应低级的byte,short,char型变量,
而不需要进行强制类型转换,只要不超出变量的数值范围.