为了账号安全,请及时绑定邮箱和手机立即绑定

为什么s1是变量? ( // s1是变量,s4在运行时才知道具体值,所以s3和s4是不同的对象) 当时==时是比较两个变量的地址?equals比较的是他们的内容值?

public class HelloWorld {

    public static void main(String[] args) {

String s1 = "imooc";

String s2 = "imooc";

        

        //定义字符串s3,保存“I love”和s1拼接后的内容

String s3 = "I love"+s1;

        // 比较字符串s1和s2

// imooc为常量字符串,多次出现时会被编译器优化,只创建一个对象

System.out.println("s1和s2内存地址相同吗?" + (s1 == s2));

        

        //比较字符串s1和s3

System.out.println("s1和s3内存地址相同吗?" + (s1 == s3));


String s4 = "I love " + s1;

         //比较字符串s4和s3

// s1是变量,s4在运行时才知道具体值,所以s3和s4是不同的对象

System.out.println("s3和s4内存地址相同吗?" + (s4 == s3));

}

}


正在回答

1 回答

结果应该是true false false   

s1 与 s2 是不同的,只是jvm它会检测到你输入的值都是一样的,就会把s1 和 s2 同时指向在一起。所以,s1 == s2  这比较的是地址

而s4 s3 的值是相等的,当时它们指向的地址是不同的。所以是false

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么s1是变量? ( // s1是变量,s4在运行时才知道具体值,所以s3和s4是不同的对象) 当时==时是比较两个变量的地址?equals比较的是他们的内容值?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信