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对象没有变
前"STRING"和后"STRING",前"String"和后"String"是同一对象实例,所以它们的引用相等。
而第一个例子中" String "和"String"不是同一个对象实例,所以不相等注意:判断对象是否是同意对象用==,判断对象值是否相等用equal()
如下例:
if(" String ".trim().equals("String"))
System.out.println("Equal");
else
System.out.println("Not Equal"); //Equalif( "string".toUpperCase() == "STRING")
System.out.println("Equal");
else
System.out.println("Not Equal"); //NOT Equalif( "string".toUpperCase().equals("STRING"))
System.out.println("Equal");
else
System.out.println("Not Equal"); //Equal
看看jdk的源代码:
public String trim() {
int len = count;
int st = 0;
int off = offset; /* avoid getfield opcode */
char[] val = value; /* avoid getfield opcode */ while ((st < len) && (val[off + st] <= ' ')) {
st++;
}
while ((st < len) && (val[off + len - 1] <= ' ')) {
len--;
}
return ((st > 0) || (len < count)) ? substring(st, len) : this;
}
可以看到,trim方法也是调用了substring方法的。如果第三点象你说的那样,那么trim也应该是这样
String a = "abc";
String b = "abc"; 则 a ==b 是成立的
可是如果
String a = new String("abc");
String b = new String("abc"); 则 a==b是不成立的
public static void main(String[] args) {
String s1 = "aaa";
String s2 = "aaa";
System.out.println(s1 == s2);
}
}
equales() 比较的是二者的content是否一致。
equals。==比较的是两个obj reference。
equals是比较两个字符串的内容。
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")是成立的
如果不需要变换的话是不会改变对象的,如
果需要变换都是会返回个new String()的。
而如果对象是new String()生成的,就是个
新的对象。和原来的String是不同的。所以:
" String ".trim() != "String"
"STRING".toUpperCase() == "STRING"
"String".substring(0) == "String"
‘.equals()’才能比较对象的值