String小知识

1.String实现了Serializable接口,说明String可以串行化,所以其可以在网络上传输

2.String实现了Comparable接口,说明String对象可以进行比较

3.String类是final类,不能被其他类继承,代表不可变的字符序列,

字符串是不可变的。

String a = "hello"
a = "haha"

以上代码中,第一行a指向了jvm常量池中的“hello”字符串的地址,第二行a指向了jvm常量池中的“haha”字符串的地址,所以,字符串a看似改变了,实际上此时了a已经另一个新的对象了。

String, Stringbuffer, StringBuilder类

有源码分析,StringBuilder和StringBuffer的值是存放在堆中的(可看成是引用类型),而不是存放在常量池中,

1.StringBuilder和StringBuffer非常类似,均代表可变的字符序列,而且方法也一样

2.String:不可变字符序列,效率低,但是复用率高

3.StringBuffer:可变字符序列,效率较高(增删)、线程安全(方法中都是用了synchronized 关键字)

4.StringBuilder:可变字符序列,效率最高,线程不安全

5.String使用注意说明:

String s = "a";//创建了一个字符串

s+="b";//实际上原来的“a"字符串对象已经丢弃了,现在又产生了一个字符串s+"b"(也就是”ab")。如果多次执行这些改变字符串内容的操作,会导致大量副本字符串对象留存在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能=>结论:如果我们对String做大量修改,不要使用String

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值