几乎所有的运算符只能操作基本类型,但是 = 、 == 、 != 能操作所有对象。另外,String类支持 + 、+= 。
对象类型与基本类型赋值操作的不同效果:别名!
Object类中的equals方法默认是比较引用是否相同。继承后可以用自己的方法覆盖,比如Integer覆盖为比较被包装的基本类型的值。
java.lang.Object:
public boolean equals(Object obj) {
return (this == obj);
}
java.lang.Integer:
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
逻辑运算符操作时候会有短路现象:如果前面的值已经确定最终结果,则后面的值不需要计算 。
c 、c++ 中,复制表达式中得到结果为非零值,则可转换为true;java中,不能够自动转换为布尔值,所以如果放在布尔判断的位置则会得到编译时错误。
如果可能会因范围缩小造成数据丢失,则必须进行强制类型转换。除布尔类型的基本类型可以随意进行相互强制类型转换。
java中没有sizeof运算符,因为不需要平台间移植。