简析java中string的比较

简析一下java中的String的比较

虽然这很简单,但还是让不少新手困惑。

说明一下 ==和equals 的区别。

==比较的是引用,就是地址,而equals是比较值,比较值的话,是值相同就返回true,而引用的话,值相同不一定相等,只有引用的地址相同才会相等,但是引用相同,值一定相等。

下面举例说明一下

String str= "hello";
String str1 ="hello";
Boolean b1= str==str1?true:false;
Boolean b2=srt.equals(str1)?true:false;
System.out.println(b1+ " "+b2);
结果是true ,true。
 

说明一下java声明String的机制,在声明过程中,没有使用new关键字的话,它会在常量池中去找,是否有hello这个字符串,如果有,那么那就会指向这个引用,也就是说不会创建新的常量,如果没找到的话才会创建一个新的常量hello ,在这里第二个字符串没有使用new关键字,且有hello字符串常量的存在,所以str1的引用和str相同

String str= "hello";
String str1 =new String("hello");
Boolean b1= str==str1?true:false;
Boolean b2=srt.equals(str1)?true:false;
System.out.println(b1+ " "+b2);



结果是false ,true

使用new关键字的话,它不管常量池中是否有hello这个字符串,会直接声明一个新的引用,分配新的地址。所以在这里str==str1返回false

本人才疏学浅,如果疑问或有不足之处都欢迎沟通。 


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值