博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java关于String类的赋值符号一些验证
阅读量:6680 次
发布时间:2019-06-25

本文共 1554 字,大约阅读时间需要 5 分钟。

我们都知道,很多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所指向的地址的对象应该被回收。

 

转载于:https://www.cnblogs.com/core-soul/p/5414081.html

你可能感兴趣的文章
美国当地做seo优化工资,做一样的事情,区别这么大
查看>>
Flex_Gird列表信息源码
查看>>
桌面小部件 widget
查看>>
text-overflow
查看>>
Dns服务的简单配置
查看>>
浏览器兼容--input标签
查看>>
C# 语言规范
查看>>
用Nagios监控AIX
查看>>
【源码学习】time.Timer 和 time.Ticker
查看>>
spring-mvc restful web services
查看>>
我的友情链接
查看>>
java多线程详解
查看>>
测试用例的设计心得
查看>>
Q9头
查看>>
Android中讯飞语音云开发环境搭建
查看>>
php CI 伪静态
查看>>
[问题]wkhtmltopdf转换网页中文乱码问题解决方案
查看>>
我的友情链接
查看>>
Python 学习笔记 - 多进程和进程池
查看>>
日志切割实例
查看>>