java中的==和equals方法

这东西记了又忘,忘了又记
equals本来实现就是用的==,但是string比较特殊,有一个常量池
1.string类型
''

String s1 = new String("abc");
String s2 = new String("abc");
String s3 = "abc", s4 ="abc" ;

System.out.println(s1.equals(s2));//true
System.out.println(s3.equals(s4));//true
System.out.println(s1.equals(s3));//true

System.out.println(s1==s2);//false
System.out.println(s3==s4);//true,因为常量池的原因

''
string的equals方法重写了的,只要内容相同就返回true
==则是返回地址,如果是new的则是不同的地址,就会返回false

2.基本类型的包装类型,比如Boolean、Character、Byte、Shot、Integer、Long、Float、Double等的引用变量,==是比较地址的,而equals是比较内容的,没有常量池这个东西

在对象相同的情况下内容相同则可以返回true,其他情况返回false

你可能感兴趣的:(java中的==和equals方法)