1.==的含义,如果是比较基本数据类型,那么就是比较数据类型字面值的大小。如果是比较引用数据类型,就是比较它们在内存地址上是否是相同的。
2.equals方法,是Object类的方法之一,所有的java类都有这个方法,区别只是自己有没有重写的问题。如果没有重写,那么也是直接比较内存地址是否相同。重写了,那就要看它们是怎么重写的。
看下面的例子
String str1 = "abc"; String str2 = "abc"; String str3=new String("abc"); String str4=new String("abc"); StringBuffer str5=new StringBuffer("abc"); StringBuffer str6=new StringBuffer("abc"); System.out.println("1:"+(str1==str2)); System.out.println("2:"+(str1.equals(str2))); System.out.println("3:"+(str2==str3)); System.out.println("4:"+(str2.equals(str3))); System.out.println("5:"+(str3==str4)); System.out.println("6:"+(str3.equals(str4))); System.out.println("7:"+(str4.equals(str5))); System.out.println("8:"+(str5==str6)); System.out.println("9:"+(str5.equals(str6))); // 输出结果: 1:true 2:true 3:false 4:true 5:false 6:true 7:false 8:false 9:false
----------------------------------
说明:
String对象的初始化有两种方式。
str1和str2表示的"abc"都是存放在字符串池中,而在字符串池中,这两个"abc"其实是一个内存中的数据,
所以str1==str2是true。str1.equals(str2)是true。
str3和str4采用的new方式,那么它们对用的字符串"abc"都是在堆中非字符串池中,分别存放在堆中不同的地方,所以str2==str3是false。str3==str4是false。
而String和Stringbuffer除了都是直接继承Object之外,并没有其他的直接联系,两者完全是不相干的类。
所以才有str4==str5是false、str4.equals(str5)是false。
而StringBuffer也根本没有重写从父类继承的equals方法,所以str5==str6是false。str5.equals(str6)是false。
相关推荐
藏区特产销售平台--论文.zip
文件放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件放服务器下载,请务必到电脑端资源详情查看然后下载
该单片机项目可作为课程设计和期末大作业或者毕设,项目完整,有原理图和代码,需要的自行下载即可!
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件太大放服务器下载,请务必到电脑端资源详情查看然后下载
文件放服务器下载,请务必到电脑端资源详情查看然后下载
文件放服务器下载,请务必到电脑端资源详情查看然后下载
文件放服务器下载,请务必到电脑端资源详情查看然后下载
文件放服务器下载,请务必到电脑端资源详情查看然后下载