关于String的笔记

 java中,String可以说是一种比较特殊的对象。他是将不同的字符串存放起来,当你定义一个字符串变量时,则把

相应的字符串的地址付给你的变量,咱们姑且把这些不同字符串存放的位置称为字符串的池

String testString 1= "a";

这样的声明实际上是声名了一个变量testString1 指向一个字符串常量“a”,这个对象是String类型的一个实例,来自于上面提到的字符串池

这时如果你再定义一个String变量

String testString2 = "a";

这时,你会发现testString 1与 testString2 内存地址是相同的,因为"a"这个字符串是共享的

 testString2 = "a" + 1

这时,你实际改变的是 testString2 指向的地址,java虚拟机重新创造了一个字符串常量"a1"并将地址传递给 testString2 ,而不是改变字符串所对应的内容

也就是说如果你这样声名

String str1 = "a";

String str2 = str1;

str2 = str1 + "1";

这时,str1的内容仍将是"a",而str2的内容是"a1"

String str = "a";

String str1 =str  + "1";

String str2 = str + "1";

这时,str1与str2 的内存地址是不相同的,因为对于变量的 + 和subString操作,结果是不共享的,也就是说不放在字符串池中。也就不可能地址相等

字符串更应改作为常量使用,因为字符串本身是采用字符的拼接来实现的,如果字符串更改,则会创建一个新的字符串,这个字符串使用原有的字符进行拼接,所以说多用字符串的共享特性,少用更改,能够节省资源

这也是在多次更改时,使用StringBuffer的原因。

绝对原创,欢迎大家留言指正,如果转载,请注明,谢谢大家!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值