字符串是最重要的引用类型
- 互联网基本上只干一件事:处理字符串
能处理好字符串是Web Server的基本要求
为什么:
- 线程安全
- 存储安全:
- 如果可变的话,内容相同的String,hashCode会不一样
- 比如原来有个”ab”, “abc”两个hashCode不一样,将”abc“改为”ab“,但是hashCode没变
- 造成两个“ab”的hashCode不同,违反了Object的hashCode约定
- 如果可变的话,内容相同的String,hashCode会不一样
- 缺点:
- 每次修改的时候,都需要重复创建新对象
需要修改怎么办
1. StringBuilder
字符串的内部构造和常用API
1. 不可变性是如何保证的
- String类是final类,不可继承
所有公开接口都是精心设计的,都不能修改里面的字符数组value
2. hash值是如何存储的
字符串是不可变的,所以hash值也会缓存,不会每次重新调用hashCode方法计算
StringBuilder API
- StringBuffer API
- String API
4. 还不够的,StringUtils补上
字符串与编码
- 字符如何转换成计算机世界的编码
- 通过【映射关系】
- 这种映射关系为【字符集】
- 字符(人能够看懂) -> 字节:编码
- 字节 -> 字符:解码