JAVA中==与equals方法的比较

JAVA中==与equals方法的比较

   在JAVA中,双等号(==)和equals()方法应用于两个字符串比较时,所比较的内容是有差别的。==比较的是两个字符串对象在内存中的地址,就是判断是否是同一个字符串对象,而equals()方法比较的是两个字符串对象的值。
   在字符串类型对象创建的时候,当使用
   String str1="hello" 时
   字符串默认存储在栈的缓冲池中,假设地址为0X01
   String str2="hello"时,
   str2会到缓冲池中去找是否有“hello"这个词,如果有这个词,就会把"hello"这个词的地址(即0x01)直接赋给str2,所以str1和str2的地址是一样的。这时
   str1==str2的返回值为true.
   如果:
   String str3=new String ("hello");
   String str4=new String ("hello");
   用这种带new的创建方式,默认存储在堆中,并开辟空间赋值, 每new一个对象便开辟一个新的空间,故str3和str4的地址不同,所以
  str3==str4的返回值为true.
  那么,
   str1==str2的结果呢?
   一个存储在栈的缓冲池的,一个存储在堆中,所以是不同的两个地址,当然返回值为false。
   综上:两个非new的返回true,两个new的返回false,一个new 一个非new返回false。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值