1.String类
1.1String类的概念和储存结构:
(1)字符串是一个比较特殊的对象,可以使用new,也可以不使用new来创建字符串对象
String s1 = new String("abc"); 堆 String str = "abc"; 常量池 String str2 = "abc";
两者的区别:一个在堆中,一个在常量池中
常量池:方法区的一部分,字符串在常量池里面保存一份
(2)字符串是不可变量,一旦初始化就不可以被改变
String s1 = "abc";(直接使用用字符串字面量)
s1 = s1 + "123";//s1变量指向变了(指向了"abc123"),并不是字符串变了。
面试题:以下语句创建了几个对象? String str1 = new String("abc"); 一个或者两个: 如果之前常量池里有"abc"了,就在堆中创建一个对象; 如果常量池里没有"abc"对象,则先在常量池中把"abc"创建出来,然后再到堆空间中创建对象.