Equals和==的差别
生活随笔
收集整理的这篇文章主要介绍了
Equals和==的差别
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
java中的数据类型。可分为两类:
1.基本数据类型
包含:byte,short,char,int,long,float,double,boolean 。基础数据类型比較大小的时候使用的是双等号(==);
2.引用数据类型
除了基本数据类型之外的全部数据结构都是引用数据类型。
此时双等号是用来比較他们在内存中的存放地址(除非是同一个new出来的对象,他们的比較后的结果为true。否则比較后结果为false); JAVA其中全部的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这种方法的初始行为是比較对象的内存地 址,但在一些类库其中这种方法被重写。如String,Integer,Date在这些类其中equals有其自身的实现。而不再是比較类在堆内存(引用数据类型是存放到堆内存)中的存放地址了。
引用数据类型之间进行equals比較,在没有重写equals方法的情况下,他们之间的比較还是基于他们在内存中的存放位置的地址值的。由于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;}总结
以上是生活随笔为你收集整理的Equals和==的差别的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: [codevs2597]团伙并查集
- 下一篇: java中时间各种格式