• 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所指向的地址的对象应该被回收。

  • 相关阅读:
    Eclipse扩展安装插件方式
    Tomcat通过JNDI方式链接MySql数据库
    ArrayList实现根据某属性大小相间排序
    JMeter 怎么保存登录状态
    JMeter怎么使用代理服务器
    JMeter模拟多个用户进行登录
    JMeter怎么在get URL请求、POST请求中添加动态参数用于服务器段安全验证
    (转)sizeof()和_countof()区别
    潜心修炼, 生活,会给你一个惊喜~
    最初的梦想
  • 原文地址:https://www.cnblogs.com/core-soul/p/5414081.html
Copyright © 2020-2023  润新知