当前位置: 技术问答>java相关
" String ".trim() == "String") !!!!!!!!!!!!!!!!!!!!!
来源: 互联网 发布时间:2017-03-13
本文导语: if(" String ".trim() == "String") System.out.println("Equal"); else System.out.println("Not Equal"); //Not Equal if( "STRING".toUpperCase() == "STRING") System.out.println("Equal"); else System.out.println("Not Equal"); //Equal if("String".substring(0) == "String...
if(" String ".trim() == "String")
System.out.println("Equal");
else
System.out.println("Not Equal"); //Not Equal
if( "STRING".toUpperCase() == "STRING")
System.out.println("Equal");
else
System.out.println("Not Equal"); //Equal
if("String".substring(0) == "String")
System.out.println("Equal");
else
System.out.println("Not Equal"); //Equal
后面的注解相应为结果
请大家解释一下这是为什么?????
System.out.println("Equal");
else
System.out.println("Not Equal"); //Not Equal
if( "STRING".toUpperCase() == "STRING")
System.out.println("Equal");
else
System.out.println("Not Equal"); //Equal
if("String".substring(0) == "String")
System.out.println("Equal");
else
System.out.println("Not Equal"); //Equal
后面的注解相应为结果
请大家解释一下这是为什么?????
|
String a = "String";
String b = "String"; 则 a ==b 是成立的
a和b都只向"String"对象
所以他们相等
String s = " String ";
String tmp = s.trim();
tmp == s;他们都指向" String "对象 所以不等于"String"对象
String s = "String";
String tmp = s.trim();
tmp == s == "String"
所以("String".substring(0) == "String")是成立的
String b = "String"; 则 a ==b 是成立的
a和b都只向"String"对象
所以他们相等
String s = " String ";
String tmp = s.trim();
tmp == s;他们都指向" String "对象 所以不等于"String"对象
String s = "String";
String tmp = s.trim();
tmp == s == "String"
所以("String".substring(0) == "String")是成立的
|
api 中trim、substring和toUpperCase方法中,
如果不需要变换的话是不会改变对象的,如
果需要变换都是会返回个new String()的。
而如果对象是new String()生成的,就是个
新的对象。和原来的String是不同的。所以:
" String ".trim() != "String"
"STRING".toUpperCase() == "STRING"
"String".substring(0) == "String"
如果不需要变换的话是不会改变对象的,如
果需要变换都是会返回个new String()的。
而如果对象是new String()生成的,就是个
新的对象。和原来的String是不同的。所以:
" String ".trim() != "String"
"STRING".toUpperCase() == "STRING"
"String".substring(0) == "String"
|
if(" String ".trim() == "String") //trim()去掉空格,字符串判断相等
//用equals("String"),其它类似
System.out.println("Equal");
else
System.out.println("Not Equal"); //Not Equal
//用equals("String"),其它类似
System.out.println("Equal");
else
System.out.println("Not Equal"); //Not Equal
|
邪门外道,比较为什么要这么用,然后去研究?
|
==是判断对象相等的
字符串不能改变
改变字符串可用StringBuffer类
第一个不等因为" String "和String不是同一个对象 " String "前面有空格
第二个相等因为"String"是同一个对String象
第三个相等因为subString不能改变字符串 所以string这个String对象没有变
字符串不能改变
改变字符串可用StringBuffer类
第一个不等因为" String "和String不是同一个对象 " String "前面有空格
第二个相等因为"String"是同一个对String象
第三个相等因为subString不能改变字符串 所以string这个String对象没有变
|
第二、第三个例子中
前"STRING"和后"STRING",前"String"和后"String"是同一对象实例,所以它们的引用相等。
而第一个例子中" String "和"String"不是同一个对象实例,所以不相等
注意:判断对象是否是同意对象用==,判断对象值是否相等用equal()
如下例:
if(" String ".trim().equals("String"))
System.out.println("Equal");
else
System.out.println("Not Equal"); //Equal
if( "string".toUpperCase() == "STRING")
System.out.println("Equal");
else
System.out.println("Not Equal"); //NOT Equal
if( "string".toUpperCase().equals("STRING"))
System.out.println("Equal");
else
System.out.println("Not Equal"); //Equal
前"STRING"和后"STRING",前"String"和后"String"是同一对象实例,所以它们的引用相等。
而第一个例子中" String "和"String"不是同一个对象实例,所以不相等
注意:判断对象是否是同意对象用==,判断对象值是否相等用equal()
如下例:
if(" String ".trim().equals("String"))
System.out.println("Equal");
else
System.out.println("Not Equal"); //Equal
if( "string".toUpperCase() == "STRING")
System.out.println("Equal");
else
System.out.println("Not Equal"); //NOT Equal
if( "string".toUpperCase().equals("STRING"))
System.out.println("Equal");
else
System.out.println("Not Equal"); //Equal
|
TO: jokerjava(冷血)
我觉得你的第一和第三点说的有矛盾。
看看jdk的源代码:
public String trim() {
int len = count;
int st = 0;
int off = offset; /* avoid getfield opcode */
char[] val = value; /* avoid getfield opcode */
while ((st
我觉得你的第一和第三点说的有矛盾。
看看jdk的源代码:
public String trim() {
int len = count;
int st = 0;
int off = offset; /* avoid getfield opcode */
char[] val = value; /* avoid getfield opcode */
while ((st
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!