• Java关于String类的赋值符号一些验证


    我们都知道,很多Java书中说String对象的内容不能修改,但在实际情况中赋值符号还是可以用在已创建的String类对象中,如下面的代码所示:

     1     String s1 = "abs";
     2     String s2 = "abs";
     3     System.out.println("before change:");
     4     System.out.println("s1 is "+s1);
     5     System.out.println("s2 is "+s2);
     6     System.out.println("s1 == s2 is " + (s1 == s2));
     7     s1 = s1.replace('a','c');
     8     System.out.println("after change:");
     9     System.out.println("s1 is "+s1);
    10     System.out.println("s2 is "+s2);
    11     System.out.println("s1 == s2 is " + (s1 == s2));    

    程序运行的结果如下图:

    由结果可以看出:

    s1能够用赋值符号修改,此时并不会报错。一开始,s1与s2指向同一个地址。当s1修改后,s2的内容并不会改变,s1s2将不再指向同一个地址。此时,s1应该是重新新建了一个对象。

     这里要指出的是语句s1.replace('a','c'); 返回的是一个新的字符串并且不会更改原先字符串的内容。如果没有单纯运行s1.replace('a','c'),s1的内容并不会更改。

    如果将一个已创建的String类对象用赋值符号与另一个String类对象连接时,产生的效果会不一样,代码如下所示:

     1 String s1 = "abs";
     2 
     3 String s2 = "abs";
     4 
     5 String s3 = new String ("abs");
     6 
     7 System.out.println("before change:");
     8 
     9 System.out.println("s1 is "+s1);
    10 
    11 System.out.println("s2 is "+s2);
    12 
    13 System.out.println("s3 is "+s3);
    14 
    15 System.out.println("s1 == s2 is " + (s1 == s2));
    16 
    17 System.out.println("s2 == s3 is " + (s2 == s3));
    18 
    19 s3 = s1;
    20 
    21 System.out.println("after change:");
    22 
    23 System.out.println("s1 is "+s1);
    24 
    25 System.out.println("s2 is "+s2);
    26 
    27 System.out.println("s3 is "+s3);
    28 
    29 System.out.println("s1 == s2 is " + (s1 == s2));
    30 
    31 System.out.println("s2 == s3 is " + (s2 == s3));

    代码运行的结果如下图:

    可以看到,原先s1和s3并不指向同一位置,但当执行s3 = s1后,s3指向s1的地址,此时s2,s3指向同一地址。按照Java的回收机制,此时原来s3所指向的地址的对象应该被回收。

  • 相关阅读:
    Elementui el-input 实现自定义 v-model
    巧用Ajax的beforeSend 提高用户体验
    医生不会告诉你,它是天然“安眠药”,一周吃2次,一觉自然醒!
    CentOS下搭建SVN服务器
    linux下 mysql数据库的备份和还原
    最新sublime text 3 注册码license分享(亲测有效)
    Centos 安装 Nginx 详细过程
    centos如何安装Python3
    python安装提示No module named setuptools,wget提示ERROR 403: SSL is required
    bash: pip: command not found... 解决方法
  • 原文地址:https://www.cnblogs.com/core-soul/p/5414081.html
Copyright © 2020-2023  润新知