String
底层是字符数组
- 长度一旦确定,不能更改
- java提供了一个常量池概念,可以让String直接指向常量池
- 为了更加高效,设计了两个类 StringBuilder StringBuffer
字节数组
byte[] bytes={97,98,99,100};
String s2=new String(bytes);
String s5=new String(bytes,1,2);
System.out.println(s2);
System.out.println(s5);
字符数组
char[] chars={'e','f','g','h'};
String s4=new String(chars);
String s6=new String(chars,1,2);
System.out.println(s4);
System.out.println(s6);
String构造方法
- String str = "a"
- new String("sad")
- new String(byte[])
- new String(char[])
String类常用方法
- indexOf():返回指定字符的索引。
- charAt():返回指定索引处的字符。
- replace():字符串替换。
- trim():去除字符串两端空白。
- split():分割字符串,返回一个分割后的字符串数组。
- getBytes():返回字符串的 byte 类型数组。
- length():返回字符串长度。
- toLowerCase():将字符串转成小写字母。
- toUpperCase():将字符串转成大写字符。
- substring():截取字符串。
- equals():字符串比较。
- isEmpty(): 判断字符串是否为空
- contains(): 是否包含
- concat(): 拼接到最后
StringBuilder StringBuffer
都是可变的字符数组
也是创建字符数组,但是可以自动扩容
- length() 长度
- capacity() 容量(默认16,扩容是原长度加一乘二) 创建对象时传入的会加到默认容量
- new StringBuilder("ads) 16+3
- append() 在最后添加内容
- insert(位置,要添加的元素) 在指定位置添加元素
- reverse() 反转
StringBuffer 线程安全,速度慢
StringBuilder 线程不安全,速度快