关于String的新认识🤯
String 类在 java.lang 包下,所以使用的时候不需要导包
String 类代表 字符串,Java 程序中的所有字符串文字(例如 “abc” )都被实现为此类的实例,也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象
字符串常量与变量🔭
接下来我们将探讨这两个方式创建的对象有何区别
字符串常量:String name = "Jack" 字符串变量:String name = new String("Jack")
先说结论:
String s = "Jack";
- 当 String 以
"" 形式开辟字符串时,首先编译器会在常量池里寻找 引号中的字符串是否存在 - 如果不存在,则在 常量池里创建此字符串,并把该字符串的地址赋值给该申请对象
- 如果存在,则直接把该字符串的地址赋值给该对象,而不需要再创建对象
String s = new String("abc");
- 当 String 以
new 形式开辟字符串时,首先编译器会在堆内存里 开辟一个新的字符数组空间 - 首先在常量池里创建此字符串,并把该字符串的地址赋值给该申请对象的堆内存数组 value [ ],并把该数组的地址赋值给该申请对象
故我们说,字符串变量创建的对象有两个
- 一个是常量池中的对象
- 另一个是堆内存中对象 values [ ] 数组
例题检测:
String a = "abc";
String b = "abc";
System.out.println(a equals(b));
System.out.println(a == b);
|