JAVA学习记录 – String
String对象创建
String对象的创建既可以按照String a = "abc"
的方式,也可以按照String a = new String("abc")
的方式创建。无论是哪种方式,创建的string对象都是指向JVM里面存储的内容。所以不能使用==
和’!=’来判定string对象是否相等,因为使用==
和!=
比较的是对象的地址。而同一个对象在JVM中一般情况下都是同一个地址的。应使用equals
等进行比较1。
String拼接
String对象的拼接可以使用+
,StringBuilder
和StringBuffer
这三种方式。
- 对于使用
+
这种方式,实际上是在每次链接字符串时构建新的string对象,这样既耗时又浪费空间,不推荐使用。 - StringBuffer是多线程安全的,源码中的很多方法都是用关键字
synchronized
修饰的,效率会低一些。 - StringBuilder是JDK5.0引入的,和StringBufferd的实现类似,只是StringBuilder不是多线程安全的,安全性要比StringBuffer差,效率要比StringBuffer高一些。StringBuilder可以和关键字
synchronized
配合使用达到多线程安全。在非特殊需求的情况下,推荐使用StringBuilder。
- 如果string对象比较时,如果其中一个是常量,好的习惯是
"abc".equals(a)
,而不是a.equals("abc")
,这样可以避免string对象为null时抛出异常的情况。 ↩