一、String
- 是什么
- String是java.lang.String,使用不需要导包
- String是字符串类,是引用类型,底层是char数组,所以String的特性几乎和数组一致
- 字符串一旦创建,该字符串对象不能更改
- 为了提高字符串的访问效率,Java虚拟机使用了一种缓存技术,可以对字符串操作更加简单方便,更加高效(字符串常量池)
- 字符串会被保存在静态区中的常量池,可以复用性增强
当我们用到一个重复的字符串的时候,会去常量池进行检索,如果有该字符串,则直接指向,如果没有就创建
- 基本使用
- 构造方法
- 直接创建
- 普通构造
- 字节数组
- 字符数组
- 直接创建
- 常用方法
- 什么方法,是成员还是静态
- 方法名,参数,返回值类型是什么
- 方法功能
- 注意
- 使用String不推荐进行频繁的字符串拼接操作
- 因为字符串一旦创建不可改变,只要拼接,就会创建新的字符串对象
- 浪费空间,效率还低,就等于是使用定长数组频繁做添加操作一样
二、StringBuffer和StringBuilder
- 是什么
- 都在java.lang下,使用不需要导包
- StringBuilder和StringBuffer是什么
是一个可变的字符串缓冲区,底层也是数组,只不过该数组会进行自动扩容
适合做字符串拼接操作 - 原理:
预先在内存中创建一个空间,用来保存字符(字符数组)
如果预留空间不够了,会进行自动扩容,用来容纳更多的字符
默认的长度为16,扩大长度为(原长度+1)*2:16->34->70 - StringBuilder和StringBuffer的区别
StringBuilder:非线程安全,在多线程环境下使用,可能出现问题
StringBuffer:线程安全,在多线程环境下使用,没有问题
- 使用方式