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

Java 中字符串的不变性

 public class HelloWorld {
    public static void main(String[] args) {
  String s1 = "imooc";
  String s2 = "imooc";
        
        //定义字符串s3,保存“I love”和s1拼接后的内容
   String s3 ="I love"+s1;
  //String s3 = new String("imooc");//这个方法好像也可以执行呀!但是我不知道为什么可以,求解?
        // 比较字符串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));
 }
}

 

正在回答

4 回答

你没有按照他S3的要求来,方法是对的。

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

肯定可以执行啊,结果也是一样的,因为s1和s3、s3和s4的内存地址是不同,返回也是false。==是比较左右两边的内存地址,而方法equal(),才是比较值。

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

上一节的东西你再看下。

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

...........

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

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409792    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

Java 中字符串的不变性

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