String s="hello";
String substr=s.substring(5);
System.out.println(substr=="");//打印 false
System.out.println(substr.length()==0);//打印 true

String s="hello";
String substr=s.substring(5);
System.out.println(substr=="");//打印 false
System.out.println(substr.length()==0);//打印 true
1 Tubering Dec 26, 2020 substr.equals(""); |
2 gainsurier Dec 27, 2020 undefined hhhh |
3 jmc891205 Dec 27, 2020 via iPhone substr 和””是不同的 object |
4 binbinyouliiii Dec 27, 2020 重修 Java |
5 momocraft Dec 27, 2020 jawa 里面对象==是引用相等, equals (一般) 是值相等 |
6 tudouxiong Dec 27, 2020 via Android Java 字符串不应该用==比较 |
7 Frankhong OP Java 里面两个字符串变量需要用 equals 来比较,但是变量和带引号的字符串是可以用==来比较的。并且直接定义一个空字符串,==""是返回 true 的: String s=""; System.out.println(s=="");//返回 true |
8 Frankhong OP 为什么在这里==""却返回了 false 呢? |
10 AllenHua Dec 27, 2020 via iPhone @AllenHua #9 这条回复 7 楼 ; substr 是 new 出来的 String 对象 reference 不一致 == 比较 肯定是 false |
11 micean Dec 27, 2020 System.out.println(substr=="");//打印 false System.out.println(substr.intern()=="");//打印 true |
12 Jooooooooo Dec 27, 2020 人和人都是人 但是是不同的个体 |
13 nmlgb Dec 27, 2020 你把 c++和 java 搞混了。c++是可以这样的,java 不行。 |
14 chrisia Dec 27, 2020 自己看源码,substring 截取的字符串会以 new String 的方式返回,所以为 false 。另外,比较字符串总是用 equals 就不会有问题。 |
15 nmlgb Dec 27, 2020 @binbinyouliiii 虽然这是一道很基础的题但我觉得阴阳怪气没有必要。谁没有年轻的时候 |
16 binbinyouliiii Dec 27, 2020 @nmlgb #15 阴阳怪气?这词现在这么滥用的吗? |
19 SingeeKing PRO Java 不支持运算符重载是真的难受 |
20 crayygy Dec 27, 2020 via Android String 有缓存池的,所以直接 == 有时候也是返回 true,但不代表这是正确做法。 |
21 Ptu2sha Dec 27, 2020 。。。java 学习第一天就是知道字符串比较不是= |
22 agagega Dec 27, 2020 via iPhone 哈哈哈,Java 一大坑 |
23 lewis89 Dec 27, 2020 @SingeeKing #19 有运算符重载才难受,你都不知道你的表达式被人重载成什么样了,我基本上看不到 重载不被滥用的情况,好好的用函数不好吗 |