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

我不理解:s1是变量,s4在运行时才知道具体值,所以s3和s4是不同的对象,在我的代码中s3和s4应该是一样的呀,还有就是“ //定义字符串s3,保存“I love”和s1拼接后的内容”到底应该怎样写呀?求答

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

        System.out.println(s1==s2);

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

        //String static 

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

        

        //比较字符串s1和s3

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


String s4 = "I love " + s1;

         //比较字符串s4和s3

        System.out.println(s3.equal(s4));

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

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

}

}


正在回答

2 回答

ture

ture

false

ture

false

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

瞬间秒懂,我的问题解决了哈哈!

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

3000sama

我感觉不是因为S1是变量,而是后半部分,S4在执行s4="I Love"+s1时,由于“I Love”+s1不是已经存在的字符串常量,所以会指定一个新地址存放“I Love imooc”这个字符串,s3也是这样存放的,所以s3和s4地址不同
2015-12-17 回复 有任何疑惑可以回复我~
#2

有态度的网友

求解惑
2018-07-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我不理解:s1是变量,s4在运行时才知道具体值,所以s3和s4是不同的对象,在我的代码中s3和s4应该是一样的呀,还有就是“ //定义字符串s3,保存“I love”和s1拼接后的内容”到底应该怎样写呀?求答

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