词法
Unicode
- 形式为\uxxxx,x为16进制数。u可以有很多个,比如\uuuu0002。x必须为4个。
- Unicode会在编译之前进行处理转换。如果有语句
会处理成String s = "abc\u000adef";
从而导致编译错误。String s = "abc def";
行终止符
- 包括 CR,LF,CR LF
标识符
- 包括关键字 、布尔常字 、null常字
- 首字符必须是Java字符 ,余下部分是Java字符 或Java数字
- Java字符:Character.isJavaIdentifierStart方法判断
- Java字符或数字:Character.isJavaIdentifierPart方法判断
关键字、 布尔常字、 null常字
- const与goto是保留的关键字。
- true和false从技术上讲是属于布尔常字的,虽然感觉是关键字。
- null从技术上讲是属于null常字的
数值
- 整数:八进制以0开始,十六进制以0x或0X开始。
- float须要以f或F结尾,double可以以d或D结尾。
- float/double有两种表示形式
- 十进制:如10e1=10*10^1=100
- 十六进制:如0xap1=10*2^1=20,p后面是十进制,而不是十六进制。
字符串
- 常量字符串共享同一个String对象,不论是否在同一个Package或Class。
- 常量字符串的串联(+)也是一个常量字符串。
- 可以使用String.intern(string str)方法返回常量池中的值为str的常量字符串对象,如果不存在,则在池中新建一个常量字符串对象并返回。
类型、变量、值
类型
- 类型分类
- 原子类型
- 布尔:boolean
- 整数:byte,short,int,long,char
- 小数:float,double
- 引用类型
- 类
- 接口
- 数组
- 特殊的null类型
- 特点:没有名称,无法创建此类型的对象。此类型只有一个对象,即null。
- 原子类型
整数
- 种类
- byte : [-128, 127] = [- 2^7, 2^7-1]
- short : [–32768, 32767] = [- 2^15, 2^15-1]
- int : [–2147483648, 2147483647] = [- 2^31, 2^31-1]
- long : [–9223372036854775808, 9223372036854775807] = [- 2^63, 2^63-1]
- char : ['\u0000','\uffff'] == [0,65535] = [0,2^16-1]
- 可以自动装箱与卸箱
- 对于a op b, op不是移位操作
- a或b是long,则返回long类型;否则,返回int类型(可能会溢出)。
(待续)