Java基础------知识点整理(十)-----String类

1.String的不变性

对String对象进行操作的方法,实际传入的是引用的一个拷贝,每当把String对象作为方法的参数时,都会复制一份引用,而该引用所值的对象其实一直待在单一的物理位置上,从未改变过。

字符创对象一旦被初始化就不会发生改变

String str = "java";
str = "c++";
"java"这个对象一旦被创建,将不再改变,后面只是引用“str”指向的地址放生了改变,而常量池中的“java”没有改变

String str1 = “abc”;
String str2 = "abc";
syso(str1 == str2);//true
这是由于字符串被初始化到常量池中,str1初始化“abc”会在字符串常量池中找看有没有“abc”,发现没有就创建一个“abc”,str2创建时发现有“abc”了,那就不创建了,直接指向了“abc”,这样会节约空间。

String s1 = "abc";
String s2 = new String("abc");
syso(s1 == s2);//false
这是因为第一行的“abc”是在常量池中创建了一个“abc”对象,第二个是先在堆中创建了一个String对象,又闯入了一个“abc”对象,也就是说第一行在字符串常量池中创建了一个对象,第二行在堆中创建了两个对象
   

常量池中的字符串传由于String的不变性,所以字符串对象时可以共享的,节约空间。



2.String类中的方法

如果改变了字符串里的内容时,String类的方法都会返回一个新的String对象

如果内容没有改变,String的方法只是返回指向源对象的引用而已,这样可以节约存储空间,避免额外的开销


3.String的对象时不变的,你可以给一个String对象加任意多的别名,但是指向这个对象的任何引用都不会改变它的值,这样也就不会对其他引用产生什么影响


4.Java中只有“+”和“+=”这么一组重载的操作符,不允许程序员重载任何操作符


5.如果为一个类写toString()方法时,如果字符串比较简单,可以直接用“+”这种形式,但是如果要在toString()方法中使用循环,那么最好自己创建一个StringBuilder对象,利用这个对象的方法操作,因为如果是普通的“+”会创建好多个对象,然后再链接,浪费资源,而用StringBuilder只创建了一个对象,操作效率高,所以如果能用StringBuilder操作尽量用这个容器。


6. StringBuffer

字符串缓冲区,用于存储数据的容器

特点

(1)长度可变(数组长度不可变)

(2)可以存储不同类型的数据(数组里的数据类型一致)

(3)最终容器里是一个特别长的字符串(数组里可以带所以取出来)


7.StringBuilder

StringBudffer是线程安全的,所以可以线程同步,常用于多线程,这样在对数据进行添加删除等操作时会先判断一下锁,防止误删误添加,所以安全

StringBuilder是线程不安全的,不能线程同步,常用于单线程,但这样会提高了效率,所以单线程时要用StingBuilder



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值