我们知道,在java中,equals()方法和==方法是有比较大的区别的,equals()方法执行的是值的比较,而==方法执行的是地址的比较,也就是对象的引用的比较。现在我们来看一段代码
Integer a=new Integer(1);
Integer b=new Integer(1);
System.out.println("测试equals方法 "+a.equals(b));
System.out.println("测试==方法 "+(a==b));
System.out.println("******************");
String a1="a";
String a2="a";
System.out.println("测试equeals方法 "+a1.equals(a2));
System.out.println("测试==方法 "+(a1==a2));
输出结果如下:
测试equals方法 true
测试==方法 false
******************
测试equeals方法 true
测试==方法 true
对于Integer对象,由于a和b是两个不同的Integer对象,但是它们的值是相同的,所以执行equals方法为true,而执行==方法明显为false,两个对象不同,当然它们在内存中的地址就不相同了。
但是,当我们以这种方式去看String时,就开始困惑了,其实这就是String对象和普通的java对象不同之所在。当执行String a1="a";String a2="a";时,a1和a2是指向共同的内存的!他们指向相同的地址,所以无论是equals方法还是==方法,二者的结果均为true。但是,如果我们修改其中的一个String对象,会不会对另一个对象的值有影响呢?请看如下代码:
a1="a1";
System.out.println(a1);
System.out.println(a2);
输出结果如下:
a1=a1
a2=a
a1与a2的值又不同了!这真是奇怪了,在执行a1="a1"之前,a1与a2明明指向相同的内存地址,为什么当a1改变时却对a2没有任何的影响呢?
原来,当执行a1="a1";时,系统会在内存中重新划分一块区域存放“a1”这个字符串,并将Sting变量a1指向这个地址,也就是说,a1指向的地址发生了改变!这就是String与一般类型的区别,当Stiring的值发生改变时,它会重新分配内存区域。所以a1和a2的值不相同,改变它们的任何一个,都不会对另外一个产生影响。
分享到:
相关推荐
java中equals和==的区别.doc java中equals和==的区别.doc
能够加强对java中equals与==区别的理解。
java中equals和==的比较.pdf
Java中的==与equals()实例方法Java中测试两个变量是否相等的方法有两个,一个是用==运算符,另一个就是object类提供的equals()方法。2
java中equals和==的比较文.pdf
Java 中equals和==的区别
Java语言是sun公司的开发成果,他的主要特点是可以执行强,与平台的无关性使他的实用性更强。但是Java中的==与equal是有区别的。
主要介绍了java 中equals和==的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
JAVA Integer == equal 比较 doc 比较大小 是否相等
浅谈Java中的equals和==Java开发Java经验技巧共6页.pdf.zip
java中的比较运算符== 与 equals()方法 值类型、引用类型
主要介绍了详解 Java 中 equals 和 == 的区别的相关资料,equals 和 == 都是用来检测两个字符串是否相等,返回值也都是布尔型,但是两者在内部比较的处理中却不尽相同需要的朋友可以参考下
主要给大家介绍了关于Java中equals与==的用法和区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
java 泛型方法使用示例 java 泛型方法使用示例 java 泛型方法使用示例
主要介绍了java的equals和==的比较示例,需要的朋友可以参考下
主要介绍了java基础之 “==”与“equals”区别详解,需要的朋友可以参考下
JAVA常用方法.rar -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
long转int 由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参考: ...这三种方法都比较简单明了。