“==” 和 equals 的区别
-
对于==,如果作用在基本数据类型,则是值比较,如果是作用在引用对象(堆中数据),则是物理地址比较
-
对于equals,不能作用于基本的数据类型的变量,如果没有对equals方法进行重写,则比较的是引用数据类型变量所指向的对象的地址;
String ,Date等类对equals方法进行了重写,比较的是所指向对象的内容。
String s1 = "abc";String s2 = "abc";String s3 = new String("abc");String s4 = new String("abc");System.out.println("s1==s2, " + (s1==s2));System.out.println("s2==s3, " + (s2==s3));System.out.println("s2 equlas s3," + (s2.equals(s3)));System.out.println("s4==s3, " + (s4==s3));System.out.println("s4 equlas s3," + (s4.equals(s3)));输出:s1==s2, true //同一常量池中,地址相同s2==s3, false//String为引用对象,new出来的在堆栈中,地址不同s2 equlas s3,true // equlas被重写,值比较s4==s3, false //new出的对象在堆中为两个对象,拥有不同地址s4 equlas s3,true //String中equals被重写,为内容比较
-
博观而约取,厚积而薄发

浙公网安备 33010602011771号