摘要:今天就來談談和的作用和區別。對于基礎類型的作用就是判斷值是否相等比如是是。就是重寫了方法,所以出現了和結果不一致的情況。當然重寫是有一定的標準的,如傳遞性,對稱性等等,具體可以看源碼要求不再一一展開。
判斷對象是否相等是我們在項目中經常用到的,也是入門java必學的知識。今天就來談談==和equals的作用和區別。
1.==如何判斷相等
先看一下一段代碼:
int i1 = 1; int i2 = 1; String s1 = new String("abc"); String s2 = new String("abc"); System.out.println(i1==i2); System.out.println(s1==s2);,
運行結果是true false,為什么一個是相等,而第二個是不等的。
1)對于基礎類型(char、byte、short、int、long、float、double、boolean )==的作用就是判斷值是否相等比如1.1==1.1是true,1=2是false。
2)對于對象來說,==的作用是判斷對象的引用(對象的內存地址)是否一致。如果想判斷對象的值是否一致,就需要用到equals。
2.equals的作用
先看一段代碼:
String s1 = new String("abc"); String s2 = new String("abc"); System.out.println(s1.equals(s2)); System.out.println(s1==s2);
運行結果:true false,那么為什么equals和==的結果是不一樣的?
equals是java.lang.Object中的方法,所有對象都是繼承Objetct的,也就是所有對象都擁有equals方法。源碼如下:
public boolean equals(Object obj) { return (this == obj); }
原始的實現很簡單就是用了==,但是我們可以重寫equals方法,達到我們想要的判斷值的標準。String.class就是重寫了equals方法,所以出現了==和equals結果不一致的情況。
String.class重寫equals的代碼:
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; }
通過判斷每一個字符是否一致來判斷2個String對象是否一致。當然重寫equals是有一定的標準的,如:傳遞性,對稱性等等,具體可以看源碼要求不再一一展開。
3.總結:
1).==用于基礎數據類型時是判斷值是否一致
用于對象時是判斷對象的引用(所在的內存地址)是否一致
2)equals不可用于基礎數據類型
默認也是使用==進行判斷,但是可通過重寫方法來定義自己的判斷標準(重寫equals方法時也需要重寫hashcode方法)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/67603.html
摘要:百度網盤提取碼一面試題熟練掌握是很關鍵的,大公司不僅僅要求你會使用幾個,更多的是要你熟悉源碼實現原理,甚至要你知道有哪些不足,怎么改進,還有一些有關的一些算法,設計模式等等。 ??百度網盤??提取碼:u6C4?一、java面試題熟練掌握java是很關鍵的,大公司不僅僅要求你會使用幾個api,更多的是要你熟悉源碼實現原理,甚...
摘要:原文地址游客前言金三銀四,很多同學心里大概都準備著年后找工作或者跳槽。最近有很多同學都在交流群里求大廠面試題。 最近整理了一波面試題,包括安卓JAVA方面的,目前大廠還是以安卓源碼,算法,以及數據結構為主,有一些中小型公司也會問到混合開發的知識,至于我為什么傾向于混合開發,我的一句話就是走上編程之路,將來你要學不僅僅是這些,豐富自己方能與世接軌,做好全棧的裝備。 原文地址:游客kutd...
摘要:接下來分析幾個常見的實現方式。再哈希法再哈希法,就是出現沖突后采用其他的哈希函數計算,直到不再沖突為止。,其中為不同的哈希函數。 由表及里,循序漸進,請往下看。隨手點贊是對作者最大的鼓勵!^0^。 什么是哈希表 引用:嚴蔚敏 《數據結構(C語言版)》中的內容 showImg(https://segmentfault.com/img/bVZlmE?w=800&h=364); 哈希表就是 ...
閱讀 1530·2021-11-18 10:02
閱讀 1683·2021-09-04 16:40
閱讀 3181·2021-09-01 10:48
閱讀 882·2019-08-30 15:55
閱讀 1860·2019-08-30 15:55
閱讀 1379·2019-08-30 13:05
閱讀 3024·2019-08-30 12:52
閱讀 1634·2019-08-30 11:24