1. 装箱: 把基本数据类型转换成包装类
int t1 = 1;
// 自动装箱
Integer t2 = t1;
// 手动装箱
Integer t3 = new Integer(t1);
2. 拆箱:把包装类转换成基本数据类型
int t1 = 1;
// 自动装箱
Integer t2 = t1;
// 自动拆箱
int t3 = t2;
// 手动拆箱
int t4 = t2.intValue();
3. 基本数据类型和字符串之间转换
// 基本数据类型转换为字符串
int t1 = 1;
String t2 = Integer.toString(t1);
// 字符串转换为基本数据类型
// 包装类的parse
int t3 = Integer.parseInt(t2);
// 包装类的valueOf,先将字符串转换为包装类,再通过自动拆箱完成基本类型转换
int t4 = Integer.valueOf(t2);
4. 自动装箱需要注意的点
- 缓冲区对象池 -128 < 参数 < 127
- Integer具备对象池,如果在对象池中有这个参数,则直接产生;如果没有,则实例化Integer
- Double和Float不具备对象池
5. String常用方法
- int length() 返回当前字符串的长度
- int indexOf(int ch) 查找ch字符在该字符串中第一次出现的位置
- int indexOf(String str) 查找str子字符串在该字符串中第一次出现的位置
- int lastIndexOf(int ch) 查找ch字符在该字符串中最后一次出现的位置
- int lastIndexOf(String str) 查找str子字符串在该字符串中最后一次出现的位置
- String substring(int beginIndex) 获取从beginIndex位置开始到结束的子字符串
- String substring(int beginIndex, int endIndex) 获取从beginIndex位置开始到endIndex位置的子字符串
- String trim() 返回去除了前后空格的字符串
- boolean equals(Object obj) 将字符串与指定对象比较,返回true或false
- String toLowerCase() 将字符串转换为小写
- String toUpperCase() 将字符串转换为大写
- char charAt(int index) 获取字符串中指定位置的字符
- String[] split(String regex, int limit) 将字符串分割为子字符串,返回字符串数组
- byte[] getBytes() 将该字符串转换为byte数组
6. 等于运算符与equals区别
- 内存模型
- 栈 - String str1
- 常量池 - "hello world"
- 堆 - new String("hello world")
7. 字符串的不可变性
- String对象一旦被创建,则不能修改,是不可变的
- 所谓的修改其实是创建了新的对象,所指向的内存空间不变
8. 字符串StringBuilder
- String和StringBuilder的区别
- String具有不可变性,而StringBuilder不具备
- 当频繁操作字符串时,使用StringBuilder
- StringBuffer是线程安全的,StringBuilder不是,所以性能略高
9. StringBuilder常用方法
- StringBuilder append(String str)
- StringBuilder delete(int start, int end)
- StringBuilder insert(int offset, String str)
- StringBuilder replace(int start, int end, String str)