您的位置:首页 > 编程语言 > Java开发

java equals() 与‘==’区别

2015-12-24 21:11 246 查看
java中数据类型有基本类型和引用类型。

‘==’如果比较基本类型,直接比较值,值相等就返回true

‘==’如果比较引用类型,比较的是虚地址,不是同一个对象肯定不可能相等,就算值相同也是false

equals()方法是Object中的一个方法,基本类型无法调用此方法,他比较的也是对象的虚地址,但是很多类中都对equals方法进行了重写

比如String类重写了equals()方法,比较的是字符串的值,也就是说如果两个String类型的字符串如果值相同,那么他们比较就返回true

下面是一些实例:

String a = "a";
String b = "a";

String c = new String("a");
String d = new String ("a");

System.out.println(a == b);
System.out.println(a.equals(b));
System.out.println(c == d);
System.out.println(c.equals(d));

Integer e = 14;
Integer f = 14;

System.out.println(e == f);
System.out.println(e.equals(f));

int g = 1;
int h = 1;

System.out.println(g == h);


打印结果是:
true//jvm有一个常量池,a创建的时候先去常量池里找有没有"a"这个常亮,有的话就直接拿来用,没有
就新建一个,a创建之后常量池里就有"a"了,b创建的时候先去常量池里找,有的话就直接拿来用,所以他
俩指向的是同一个对象,虚地址相同,因此返回true
true//String类重写了equals方法,比较的是字符串的值,因此返回true
false//c,d都是new出来的,并不是从常量池拿的,不是一个对象,因此返回false
true//跟第二个true同理
true//同理
true//同理
true//基本类型就不用说了吧(有人可能会问,怎么没equals,基本类型能有equals方法吗,哈哈)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java equals 对象 boolean