Java 中的String

 
Java 中的 String
字符串常量池:在堆中开辟出来的一块内存
 
创建字符串:
1.       用简单方法创建:
String s1 = “String”; String s2 = “String”;
创建s1的时候,因池中没有”String” ,故在字符串常量池中创建之,并使s1指向它
创建s2的时候,在池中搜索到”String”,故直接将s2指向它
 
2.       用new关键字创建:String s3 = new String(“String”);
在堆中,注意不是在字符串常量池中,创建之,并用s3指向它
然后去字符串常量池中查看是否有之,有则将两个联系起来;没有则再在池中创建一个并将池中新创建的与s3联系起来 (fix me: 那在堆中的对象是否就被回收了?)
有以上分析,故:s3. Intern () == s1. Intern (); //即s3和s1在字符串常量池中指向同一个对象
 
String对象永远不会变,保证了复用,保证了高效的比较操作(只用比较两个String对象在池中的联系即可——将内容比较转化成了引用的比较)
但是这样一来,连接、截取等操作 都将引起老对象的丢弃和新对象的生成,效率低
 
StringBuffer和StringBuilder则允许对内存进行修改而不会产生冗余的中间对象
(高效的:append        insert        delete       reverse    toString 操作)
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值