Java 习题 (20)

题目:
编写一个接收两个字符串参数的方法,用各种布尔值的比较关系来比较这两个字符串,然后把结果打印出来。做 == 和 != 比较的同时,用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.

第二种情况也是这么理解。


如果觉得不错的话,就用点赞或者关注来代替五星好评吧!

猜你喜欢

转载自blog.csdn.net/BSCHN123/article/details/107299792