java.lang.String
是Java编程中最常见的类之一Java中使用Unicode字符集,使用UTF-16的编码实现方式,一个基本多语言平面(Basic Multilingual Plane,简称BMP)字符占用一个char(16bit),一个辅助平面(Supplementary Plane)字符占用两个char(16bit * 2)。
比如说emoji表情就占用了两个char
String的特点
- 是一个不可变类,一旦创建便不可改变
- 类定义为
public final class String
,是一个终类,不可被继承 - 实现了
java.io.Serializable
接口,可序列化和反序列化 - 实现了
java.lang.Comparable<String>
接口,可以进行比较和排序 - 实现了
java.lang.CharSequence
接口,是一个可读的字符序列 - String最多可存储
2^31-1
个char(每个char占用16bit) - String最多可存储
(2^30-1)~(2^31-1)
个Unicode字符,原因在于Java中的Unicode编码方式(UTF-16),一个Unicode字符最多可能占用2个char
注意
length()
方法获取的是String字符串中char的长度- String不宜直接存储密码等敏感数据,有dump风险,可用
char[]
存储(用完后清除),或者对敏感数据进行加盐hash