Equals和==的差别
java中的數(shù)據(jù)類型。可分為兩類:?
1.基本數(shù)據(jù)類型
? ? ? ? 包含:byte,short,char,int,long,float,double,boolean?。基礎(chǔ)數(shù)據(jù)類型比較大小的時候使用的是雙等號(==);?
2.引用數(shù)據(jù)類型?
? ? ? ? ?除了基本數(shù)據(jù)類型之外的全部數(shù)據(jù)結(jié)構(gòu)都是引用數(shù)據(jù)類型。
此時雙等號是用來比較他們在內(nèi)存中的存放地址(除非是同一個new出來的對象,他們的比較后的結(jié)果為true。否則比較后結(jié)果為false);?JAVA其中全部的類都是繼承于Object這個基類的,在Object中的基類中定義了一個equals的方法,這種方法的初始行為是比較對象的內(nèi)存地 址,但在一些類庫其中這種方法被重寫。如String,Integer,Date在這些類其中equals有其自身的實現(xiàn)。而不再是比較類在堆內(nèi)存(引用數(shù)據(jù)類型是存放到堆內(nèi)存)中的存放地址了。
? ? ? ? 引用數(shù)據(jù)類型之間進行equals比較,在沒有重寫equals方法的情況下,他們之間的比較還是基于他們在內(nèi)存中的存放位置的地址值的。由于Object的equals方法也是用雙等號(==)進行比較。
例證:
package demo;/*** @author wanghj* @date 2016/03/06 */ public class CSDN_equals {public static void main(String []args){//variable poolsString str1="TestString";String str2="TestString";String str3="TestStringDif";String str4=new String("TestString");String str5=new String("TestString");//Just compare "=="System.out.println("str1==TestString:"+ (str1=="TestString")); System.out.println("str1==str2:"+ (str1==str2));System.out.println("str1==str3:"+ (str1==str3));System.out.println("str1==str4:"+ (str1==str4));System.out.println("str4==str5:"+ (str4==str5));//Just compare "equals"System.out.println("str1.equals(TestString):"+str1.equals("TestString"));System.out.println("str1.equals(str2):"+str1.equals(str2));System.out.println("str1.equals(str3):"+str1.equals(str3));System.out.println("str1.equals(str4):"+str1.equals(str2));System.out.println("str4.equals(str5):"+str4.equals(str5));System.out.println("equals special test:"+"2016".equals(2016));} }Object的equals方法:
public boolean equals(Object obj){return this == obj;}String的equals方法:
public boolean equals(Object obj){if(this == obj)return true;if(obj instanceof String){String s = (String)obj;int i = value.length;if(i == s.value.length){char ac[] = value;char ac1[] = s.value;for(int j = 0; i-- != 0; j++)if(ac[j] != ac1[j])return false;return true;}}return false;}總結(jié)
以上是生活随笔為你收集整理的Equals和==的差别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [codevs2597]团伙并查集
- 下一篇: java中时间各种格式