星空网 > 软件开发 > Java

java中“==”和equal区别

8个月以后就要正式找工作啦,我觉得现在是时候花时间好好深入研究一下以前比较混肴的知识。这就当作是自我成长的第一步!

对于String中的“equal方法”和“==”一直有点混肴,今天重新看了一下他们两点的区别,记录下来让自己以后不在忘记!

先说“==”:

  “==”是用来比较两个String对象在内存中的存放地址是否相同的。例如,

String test1 = "test";String test2 = "test";String test3 = new String(test2);String test4 =new String(test2);blooean result1 = (test1==test2);blooean result2 = (test3==test4);

其中:result1为true,result2为false。

原因:程序在运行时有一个字符串缓存机制,当String test1 = "test"的时候,程序先从缓存池中查找是否有相同的String 对象,如果有的话就不会重新生成而是用缓存池中的字符串对象;如果在字符串缓存池中没找到相同的字符串对象时才会在内存中开辟一块内存区新建字符串对象。对于test1,当test1建立以后会将“test”字符串放入缓存池中,所以运行 String test2 = "test"的时候就会直接从缓存池中取出相同的对象,也就说,test1和test2的内存地址是相同的,所以,result1是true。对于new来说,每new一次就会在内存中开辟一片内存区域,test3和test4的内存地址是不同的,所以result2是false。

再说“equal方法”:

  equal方法是object类的方法,object类中的equal方法也使用“==”实现的,也就是说,如果直接继承object类的equal方法,则也是比较两个对象在内存中的地址是否相同,但是在String中将继承自object的equal方法覆盖啦!String中的equal方法源码如下:

 1 /** 2    * Compares this string to the specified object. The result is {@code 3    * true} if and only if the argument is not {@code null} and is a {@code 4    * String} object that represents the same sequence of characters as this 5    * object. 6    * 7    * @param anObject 8    *     The object to compare this {@code String} against 9    *10    * @return {@code true} if the given object represents a {@code String}11    *     equivalent to this string, {@code false} otherwise12    *13    * @see #compareTo(String)14    * @see #equalsIgnoreCase(String)15   */16   public boolean equals(Object anObject) {17     if (this == anObject) {18       return true;19     }20     if (anObject instanceof String) {21       String anotherString = (String) anObject;22       int n = value.length;23       if (n == anotherString.value.length) {24         char v1[] = value;25         char v2[] = anotherString.value;26         int i = 0;27         while (n-- != 0) {28           if (v1[i] != v2[i])29               return false;30           i++;31         }32         return true;33       }34     }35     return false;36   }

可以看出:在String中的equal方法是比较两个String对象的内容是否相同。




原标题:java中“==”和equal区别

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

Shopee情人节大促6类目分析6大市场爆卖趋势:https://www.goluckyvip.com/news/6119.html
Shopee将根据卖家类型限制店铺商品上架数量:https://www.goluckyvip.com/news/612.html
Lazada食品类目怎么入驻?卖什么好?:https://www.goluckyvip.com/news/6120.html
布局东南亚,亚马逊新加坡站,你值得拥有!:https://www.goluckyvip.com/news/6121.html
店梯erp采集刊登功能助力Shopee店家业绩稳定增长 :https://www.goluckyvip.com/news/6122.html
深圳市浩通天成国际物流有限公司:https://www.goluckyvip.com/news/6123.html
去日本入住酒店,东西随意用却有一个特殊“要:https://www.vstour.cn/a/411241.html
中国有哪些著名的酒店品牌。:https://www.vstour.cn/a/411242.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流