目录
一、String
1.基础概念
String内容创建后不可变。
2.常用方法
- 直接赋值创建字符串。
(系统会检查该字符串在传池中是否存在,存在:复用,不存在:创建新的) - 用new方式来创建字符串的方法:空参构造,传递一个字符串,传递一个字符数组,传递一个字节数组(网络传输数据一般都是字节信息)。
(new方式创建的不会复用,不论是否存在,都开创新的空间) String substring(int beginIndex,int endIndex)
截取索引从beginIndex到endIndex的字符串。
- 注意点:包头不包尾,只有返回值才是截取的小串,对原字符串无影响
String substring(int beginIndex)
截取到末尾String replace(旧值,新值)
替换
- 注意点:只有返回值才是替换后的,对原字符串无影响
boolean equals(要比较的字符串)
完全一样结果才是true,否则为false
boolean equalsIgnoreCase(要比较的字符串)
忽略大小写比较public char[] toCharArray()
将此字符串转换为一个新的字符数组。Integer.parseInt(String)
就是将String字符类型数据转换为Integer整型数据。
二、 StringBuilder
1.基础概念
StringBuilder可以看作一个容器,其中的内容是可以变化的
- 常用于字符串的拼接与反转。
2.常用方法
方法名 | 说明 |
---|---|
public StringBuilder append(任意类型) | 添加数据,并返回对象本身 |
public StringBuilder reveres() | 反转容器中的内容 |
public StringBuilder toString() | 把StringBuilder转化为String |
public StringBuilder length() | 返回StringBuilder 长度(已存了多少) |
public StringBuilder capacity() | 返回StringBuilder 容量(最多存多少) |
代码如下(示例):
StringBuilder sb= new StringBuilder();
//StringBuilder 是java已经写好的类, 其打印的值不是地址值而是属性值。
sb.append(123456);
sb.reverse(); //容器里的内容直接反转,变为654321
String str = sb.toString();
三.StringJoiner
1.基础概念
StringJoiner可以看作一个容器,其中的内容是可以变化的,JDK8才出现。
- 可以更高效的拼接。
2.常用方法
方法名 | 说明 |
---|---|
public StringJoiner (“间隔符号”) | 创建一个 StringJoiner 对象,指定拼接时的间隔符号 |
public StringBuilder (“间隔符号”,“开始符号”,“结束符号”) | 指定拼接时的间隔符号,开始符号,结束符号 |
public StringBuilder toString() | 把StringJoiner转化为String |
0.o
链式编程
当我们在调用一个方法时,不需要用变量接收他的结果,可以继续调用其他的结果。
StringBuilder sb= new StringBuilder();
sb.append(123);
sb.append(456);
sb.append(123).append(456); //链式编程 ,两者结果一样
“==”号
比较直接赋值的字符串,比较的是属性值。
比较引用类型的字符串,比较的是地址值。
字符串拼接底层原理
- 如果没有变量参与,都是字符串直接相加,编译之后就是拼接后的结果,会复用串池中的字符串
- 如果有变量参与,每一行拼接的代码,都会在内存中创建新的字符串,浪费内存。
StringBuilder源码分析
- 默认创建一个长度为16的字节数组
- 添加的内容长度小于16,直接存
- 添加的内容长度大于16会扩容(原来的容量*2+2)
- 如果扩容之后还不够,则以实际长度为准
char(数字) 转换 int
- ‘0’-‘9’ ASCII 为 48-57,且顺序一致,因而char数字之间的差值等于数字之间的差值 。
char ch1 = '8';
int a = ch1 - '0';
System.out.println(a);
//输出
// 8