Java操作符易错内容2016-08-12Leafage_M在最底层,Java中的数据是通过使用操作符来操作的。1."=" 赋值对于基本数据类型就是简单的赋值,如a=b,则无论改变a还是b均不会对另一个产生影响。但是在java中,对于对象来说,‘=’相当于对对象引用,假如c=d,若c或者d发生变化,则另一个也会变化。
class A{int a;}public class Practice{public static void main(String[] args){A a1 = new A();A a2 = new A();a1.a = 1;a2.a = 2;System.out.println("a1:" + a1.a);System.out.println("a2:" + a2.a);a1 = a2;System.out.println("a1:" + a1.a);System.out.println("a2:" + a2.a);a1.a = 99;System.out.println("a1:" + a1.a);System.out.println("a2:" + a2.a);a2.a = 100;System.out.println("a1:" + a1.a);System.out.println("a2:" + a2.a);}}
a1:1<span style="white-space:pre"></span>//输出a2:2a1:2a2:2a1:99a2:99a1:100a2:100
2."/ "除法Java中的除法会直接去掉小数点的部分。
public class Practice{public static void main(String[] args){int a = 3;int b = 2;System.out.println(a/b);}}
1 <span style="white-space:pre"></span>//输出
3.关系操作符"==" 、"!=" 如果是基本数据的话就正常操作但如果是对象间的比较的话,比较的是对象的引用,而不是基本的值。
public class Practice{public static void main(String[] args){Integer n1 = new Integer(47);Integer n2 = new Integer(47);System.out.println(n1);System.out.println(n2);//可以看出这里的值都是47System.out.println("n1==n2?:" + (n1 == n2)); //但是这里n1于n2不相等,因为n1、n2引用的对象不一样System.out.println("n1!=n2?:" + (n1 != n2));Integer n3,n4;n3 = n1;n4 = n2;System.out.println("n3==n4?:" + (n3 == n4)); //这里n3,n4也是引用了不一样的对象所以不相等n3 = n1;n4 = n1;System.out.println("n3==n4?:" + (n3 == n4)); //这n3、n4引用了同一个对象,相等了}}//输出47n1==n2?:false n1!=n2?:truen3==n4?:falsen3==n4?:true
4.逻辑运算符(与)&&、(非)!、(或)||逻辑运算符操作符只可应用于布尔值,与C++不同的是:不能将一个非布尔值当做布尔值在逻辑表达式中使用。如:在C++中可以看到while(1) 这样的语句,因为true的值就是1,所以可以用1代替true或者0代替false但是在Java中不允许这样做,只能用while(true),不能使用while(1)