包装类
- 针对八种基本数据类型相应的应用类型–包装类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24public class Wrapper {
public static void main(String[] args) {
int i = 10;
//手动装箱
Integer iObj = new Integer(i);
Integer iObj2 = Integer.valueOf(i);
// 自动装箱
Integer iObj3 = i;
//手动拆箱
int ii = iObj3.intValue();
//自动拆箱
int iii = iObj3;
/*
类方法使用
*/
// 转为字符串
String str1 = iObj.toString();
// 字符串转int
Integer si = Integer.parseInt("123");
}
} - Integer 类中使用自动或者 valueOf 转换时 -128 ~ 127 返回的是同一个对象
String
- 创建
- 语法
String a = "gphper";
- 底层 a变量直接指向常量值中的 “gphper” 地址
- 语法
- 语法
String a = new String("gphper");
- 底层 变量a执行堆中创建的String对象的地址,独象中的value常量指向常量池中的 “gphper” 地址
- 语法
方法
intern()
返回的String对象中 value属性 指向的常量池中的地址凭借字符串的不同
String c = "hello"+"world";
编译器自动将 “helloworld”添加到常量池中 c指向常量池地址String a = "hello";String b = "world";String c = a + b
c指向的是堆中的一个 String 对象,对象中的 value 指向的是常量池中的 “helloworld”
常用方法
1 | String a = "hello world "; |
StringBuffer
StringBuilder
- 线程不安全的,但是效率比 StringBuffer 快,单线程模式下建议使用 StringBuilder
String、StringBuffer、StringBuilder 区别
- StringBuilder 和 StringBuffer 非常相似,均代表可变的字符序列,而且方法也一样
- String:不可变字符序列,效率低,但复用性高
- StringBuffer:可变字符序列,效率较高【增删】、线程安全
- StringBuilder:可变字符序列,效率最高、线程不安全
- 如果对String 做大量修改,不要使用String