JAVA基础学习7

 

JAVA常用工具类

字符串
String
StringBuffer
StringBuilder
日期时间
Date
SimpleDateFormat
Calendar
数学
Number
Math

JAVA String类型

String 类型可能是 Java 中应用最频繁的引用类型,但它的性能问题却常常被忽略。

String 的不可变性

String 类被 final 关键字修饰,表示不可继承 String 类。

String 类的数据存储于 char[] 数组,这个数组被 final 关键字修饰,表示 String 对象不可被更改。

String 的性能考量

字符串常量的拼接,编译器会将其优化为一个常量字符串。

字符串拼接

如果需要使用字符串拼接,应该优先考虑 StringBuilder 的 append 方法替代使用 + 号。

如果在并发编程中,String 对象的拼接涉及到线程安全,可以使用 StringBuffer。但是要注意,由于 StringBuffer 是线程安全的,涉及到锁竞争,所以从性能上来说,要比 StringBuilder 差一些。

字符串分割

String 的 split() 方法使用正则表达式实现其强大的分割功能。而正则表达式的性能是非常不稳定的,使用不恰当会引起回溯问题,很可能导致 CPU 居高不下。

可以考虑用 String.indexOf() 方法代替 split() 方法完成字符串的分割

String.intern

在每次赋值的时候使用 String 的 intern 方法,如果常量池中有相同值,就会重复使用该对象,返回对象引用,这样一开始的对象就可以被回收掉

String、StringBuffer、StringBuilder 有什么区别

String是典型的 Immutable 类,被声明成为 final class,所有属性也都是 final 的。也由于它的不可变性,类似拼接、裁剪字符串等动作,都会产生新的 String 对象。

StringBuffer 是为解决上面提到拼接产生太多中间对象的问题而提供的一个类,我们可以用 append 或者 add 方法,把字符串添加到已有序列的末尾或者指定位置。

StringBuffer 是一个线程安全的可修改字符序列。

除非有线程安全的需要,不然一般都使用 StringBuilder

写两句?