关于String类型遗漏点与StringBuilder、StringBuffer

1、String可以直接用字符数组赋值
如: char[] a={‘a’,’b’,’c’,’d’};
String b=new String(a);
2、String是不可变字符序列,并不是说String的值不可改变,而是在改变时原有的值不会改动,而会开辟新的空间在拷贝原值的基础上做改动。因为在String的源码里value的修饰符是final,不能修改,每次改变值都会在堆里开辟新空间新生成一个值,字符串指向新的值,这样会导致String对内存造成很大的浪费,所以推荐用StringBuilder(线程不安全,效率高)和StringBuffer(线程安全,效率低)来处理字符串。这里推荐看下Java300集55集和58集。
3、StringBuilder和StringBuffer
基本用法和String类似,大部分操作都是用append方法来增加字符串的值,初始化时两个类型会分配大小为16的空间(字符数组),当长度溢出时会自动生成调整大小后的新空间,将原字符串内容拷贝至新空间,并将字符串指向新的空间,提高了内存的利用率。

推荐多看看源码,上述内容在源码中都有很明显的描述,之前同学说过好的程序员都是要看源码的,近日有了深切体会,通过源码看来的知识远比百度来的用法更加深刻,所有的方法在源码里都有详细的描述,也有利于对内存的分析,所以真的要好好看源码啊!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值