关闭

简析java中string的比较

标签: Javastring
345人阅读 评论(0) 收藏 举报
分类:

简析一下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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7377次
    • 积分:299
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类