java深入解析-第1章 基本概念

1、goto和const都是c/c++的关键字,但java也将它们定义为关键字,但是却没有任何语法应用,也就是保留,因此把他们作为标识符是不允许的。
2、true、false、null这三个是字面常量,前两者是布尔类型的字面常量,后者是引用类型的。同样不可以作为标识符使用。
附录:关键字列表
abstract assert boolean break byte case catch char class const
continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while
3、标识符的定义准则:

  • 首字符所对应的代码点必须是的Character类的isJavaIdentifierStart方法返为true,后续字符所对应的代码点必须使得Character类的isJavaIdentifierPart方法返回值为true。
  • 不能与Java中的关键字相同。
  • 不能与Java中预定义的字面常量名称相同。(true、false、null)
  • 长度必须在系统所支持的范围内。

4、避免使用$作为标识符,因为顶层类A和成员类B在编译之后会产生A.class和A$B.class。若我们有个类名为A$B,那么编译就会发生冲突。
5、标识符的所有字符都是除了null之外的ASCII字符时,其最大长度可以达到65535,如果超过了这个长度,编译器将产生错误信息。
6、转义字符有三种:转义序列符、八进制转义、Unicode转义。三者的区别主要有:

  • Unicode转义的处理时间要早于转义序列符与八进制转义。
  • Unicode转义处理时期实在编译器将程序解析成各种符号前就进行的。如果\u后没有4个十六进制数字,将会产生编译错误,就算在注释中也不例外。
  • 增补字符使用两个代码单元来表示。因此,所有增补字符都不能使用char类型的常量来表示。
  • 增补字符代理对的值区间是U+D800~U+DFFF,该区间没有分配字符。通过这个特征,可以区分一个char字符时单个字符还是一个增补字符的代理字符。

7、如果变量的类型是byte、short或char类型,当对其赋予编译时期的常量,而该常量又没有超过变量的取值范围时,编译器就可以进行隐式的收缩转换。这种转换是安全的,因为只适用于变量的赋值,而不适用于方法调用语句,即不适用于方法调用时的参数传递。
8、char是无符号类型。因此,char与short或char与byte之间的转换都必须显式地使用类型转换。
9、从byte到char的转换为扩展收缩转换,该转换比较特殊,即先将byte扩展转换到int,然后再收缩转换到char。
10、在整型数据间的扩展转换中,如果操作数是char类型(无符号),则进行无符号扩展,扩展位为0.如果是byte、short、int(有符号),则进行有符号扩展,扩展为该变量的符号位。
11、整型数据之间的收缩转换,仅仅是截断并丢弃高位,不做任何其他处理。

你可能感兴趣的:(java基础)