目录
一、关键字与保留字
二、标识符
命名规则:
- a~z A~Z 0~9 _ $
- 不能数字开头
- 不能关键字、保留字
- 严格区分大小写
- 不能包含空格
如果不遵守,编译不通过,编译报错。。。
命名规范:
- 包名:都小写xxyyzz
- 类名、接口名:XxxYyyZzz
- 变量名、方法名:xxxYyyZzz
- 常量名:XXX_YYY_ZZZ
尽量“见名知意”
不遵守编译可以通过,建议这样,约定俗成。。。
三、变量
必须包含:变量类型、变量名xxxYyyZzz、存储的值
定义变量的格式:数据类型 变量名 = 变量值;
两步:1.声明什么数据类型 2.赋值
变量必须先声明后使用。没声明直接使用编译报错,不可以在同一个作用域内重复定义同名变量编译报错,在不同作用域使用变量编译报错。
四、数据类型
基本数据类型(8种):整型 byte(2字节)-128~127 \ short(2字节) \ int(4字节) \ long(8字节)必须以”l或者L“结尾
浮点型float(4字节)必须以”f或者F“结尾 \ double
字符型char (1字符=2字节)
'' 必须只能写一字符,不能为' ','A'、'1'、'坤',如果写'AB'编译不通过编译报错,写' '编译报错。
布尔型boolean 只能取两者之一:true false
引用数据类型:类class
接口interface
数组[]
字符串String
基本数据类型的运算规则:不包括boolean
1.自动类型提升:byte、char、short-->int-->long-->float-->double
结果自动小向大提升,特别地byte、char、short之间的运算结果是int
2.强制类型转换:自动类型提升的逆运算
问题:
long l=123;不是说long类型必须以”l或者L“结尾吗,为什么可以编译通过?
答:默认123为 int 型,long l = 123,就是 自动类型提升 转换为long 型,可以编译通过。如果 long l1 = 122222222222;这时的整数过大,就会编译报错,必须要以”l或者L“结尾。
float f = 12.3;//编译失败,为什么long可以,float失败了,必须要加必须以”f或者F“结尾?
答:12.3默认为 double 型,所以自动类型提升失败了。可以写为float = (float)12.3;就可以了。或者老实写 float f = 12.3F; 。
为什么下面这两个编译失败?
byte b = 12;
byte b1 = b +1 ;//编译失败
float f = b + 12.3;//编译失败
答:整型常量默认类型为 int 型。浮点型常量,默认为 double 型。不符合自动类型提升,第一个 1 默认为 int 型,相加后 b1 为 int 型;第二个 12.3 默认为 double 型,相加后 f 为 double 型。
String类型:""
引用数据类型,不是基本数据类型。
声明String类型变量时,使用一对""。
可以和8种基本数据类型变量做运算,且运算只能是:连接运算:+。
运算的结果都是String类型。
String = 123;//编译错误,因为String必须使用 ""
进制与进制之间的转换(了解)
- 二进制binary:0 1,以0b或者0B开头
最高位为符号位1为负数0为正数。正数的原码、反码、补码都一样,负数原码除符号取反->反码,反码加1->补码。
- 十进制decimal:0~9
- 八进制octal:0~7,以数字0开头
- 十六进制hex:0~9~A~F,以0x或者0X开头
计算机底层都是以补码存储。