题目:
编写一个接收两个字符串参数的方法,用各种布尔值的比较关系来比较这两个字符串,然后把结果打印出来。做 == 和 != 比较的同时,用equals() 做测试。在 main() 里面用几个不同的字符串对象调用这个方法。
解答:
import java.util.*;
public class chapterThree {
static void method(String a, String b){
System.out.println("fvalue == svalue: " + (a == b));
System.out.println("fvalue != svalue: " + (a != b));
System.out.println("fvalue.equals(svalue): " + (a.equals(b)));
}
public static void main(String[] args){
method("Hello", "Hello");
System.out.println("-------");
String s = new String("Hello");
method("Hello",s);
System.out.println("-------");
String s1 = new String("Hello");
String s2 = new String("Hello");
method(s2,s1);
System.out.println("-------");
method("Hello", "Bye");
}
}
结果如下:
其实第二种和第三种情况是属于一类的。
在第三种情况里,创建了两个引用 (s1 和 s2),在做“==”运算时,是比较引用的,而不是比较值 (对象,Hello). 所以输出是false. 但,由于equals() 本来是比较引用的,但是查看了String 类之后:
发现equals() 在 String里已经修改成比较值 (对象,Hello). 由于两个引用 s1 和 s2 所对应的对象 (值) 是一样的,所以返回true.
第二种情况也是这么理解。
如果觉得不错的话,就用点赞或者关注来代替五星好评吧!