java是建立在c++基础上的,所以java中的操作符大多数与c++类似,这里总结一些容易混淆的地方。
(一)equals和==的区别
个人理解,equals比较的是对象的实际内容,==比较的是对象的引用,通过例子很容易理解:
class equal{
public static void main(String[] args){
Integer a1=new Integer(7);
Integer a2=new Integer(7);
System.out.println(a1==a2);
System.out.println(a1.equals(a2));
}
}
结果会输出:false true;
原因在于a1与a2虽然值相同,但a1,a2是不同的引用,所以用==结果为false。而equals比较两者实际值,所以结果为true。
(二)“别名现象”
对于基本类型,例如int a=7,a并非一个对象的引用,而是存储了实际的数值。但在为类的对象赋值时,实际操作的是对象的引用,如 Integer a=new Integer(7),此时a不存储数值7,而是代表数值7所在内存的地址,即a指向“7”。
(三)逻辑操作符
java中,逻辑操作符只能应用于布尔值;
“短路”现象,即一旦可以确定表达式的值,就不再计算表达式的剩余部分。
(四)三元操作符
boolean-exp?value0:value1
与if-else类似。