几乎所有操作符都只能操作基本类型,例外的操作符是=、==和!=,这几个操作符能操作所有对象。另外String支持+和+=。
将一个对象引用赋值给另一个对象引用,产生别名现象。
一元+操作符的作用在于将小类型的操作数提升为int类型。
自增和自减操作符是除了赋值类操作符外仅有的存在副作用的操作符,除了boolean类型,所有基本类型都可使用自增和自减操作符。
大部分Java库的类都重写了equals方法,包装类也重写了equals方法。将类声明为final可以在重写equals方法时使用instanceof,因为不可能有它的子类做比较。
所有的String存储在常量池中,会进行复用。对于自动解包装创建的Long、Integer、Short、Character和Byte类型变量,在Byte表示范围内(-128~127)的值会进行复用,超出这个范围不进行复用。
System.out.println()中使用 ,Java会自动将其映射为操作系统的换行,Windows为 ,Unix类操作系统为 。
Java中指数表示法e表示以10为底,这一传统从FORTRAN继承而来,在FORTRAN中自然对数的底以E表示。
异或的中文翻译并不好,英文为EXCLUSIVE OR(XOR),即排他的OR。按位取反也叫做ones complement operator,即取补操作。
boolean类型的非短路逻辑操作实际上是按位操作符,不支持非操作,可能是为了避免与逻辑NOT操作符混淆。
有符号右移>>使用sign extension,无符号右移>>>使用zero extension。
对byte或short执行>>>=可能会出现问题,因为操作数首先会转换为int,进行右移操作后被截断,然后赋值给原来的类型,可能会得到-1的结果。
-1 >> n;永远是-1,i == ~i + 1;(基于补码表示法),负数与其表示之间为正相关。左移操作有可能使操作数变号,没什么意义;对于负数可进行有符号右移,对于整数可进行无符号或有符号右移,因为这两种操作对整数效果相同。十六进制、八进制和二进制表示法实际上是位表示。
除了boolean类型外,Java允许将任何基本类型转换为别的基本类型。