java 字符串
为什么 string 是不可变字符串
String 类是一个 final 类,并且没有提供修改字符串中某个字符的方法,所以 java 文档中将 String 类对象称为是不可变的。
String 类继承自 Object 类,并重写了 hashcode 方法,String 对象可变的话就违反 了 hashcode 的约定
通过截取和拼接字符串效率确实不高,但不可变字符串有一个优点:编译器可以让字符串共 享: 各种字符串存储在公共的存储池中,字符串变量指向存储池中相应字符串的位置,复制一个 字符串本质上是:原始变量和复制变量指向的是存储池中共享的同一个字符串。 不可变还带来了线程安全和存储安全的优点。
StringBuilder 和 StringBuffer
StringBuilder:线程不安全,但速度快 StringBuffer: 线程安全,但速度慢
字符串与编码
什么是字符集(character set)
字符集:各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。是真 实世界文字和对应文字在计算机中存储的一一映射。
常见字符集:ASCII 字符集、GB2312 字符集、BIG5 字符集、 GB18030 字符集、Unicode 字符集等。
字符
计算机编码值
牛
U+725B
0
U+0030
A
U+0041
什么是字符转换格式(编码格式)
字符在计算机世界里,需要被传输和存储等,字符转换格式规定了字符怎么被传输和存储 。
常见字符转换格式:
UTF-8:一种变长的 Unicode 字符编码转换格式。UTF 全称 Unicode Transformation Format
UTF-16:只要不处理大于\U200000 范围的字符,每个 Unicode 代码点使用 16 位即 2 字节表示,超出部分使用两个 UTF-16 即 4 字节表示。
Last updated
Was this helpful?