zoukankan      html  css  js  c++  java
  • 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所指向的地址的对象应该被回收。

  • 相关阅读:
    判断IE浏览器的版本号
    解决下拉框第一行出现空格的问题
    Springboot整合log4j2日志全解
    Java NIO之Selector(选择器)
    ZooKeeper客户端 zkCli.sh 节点的增删改查
    Java API操作ZooKeeper
    ReentrantLock(重入锁)功能详解和应用演示
    MySQL高可用集群方案
    Redis高可用之集群配置(六)
    linux free命令详解
  • 原文地址:https://www.cnblogs.com/core-soul/p/5414081.html
Copyright © 2011-2022 走看看