一、String s = new String(“abc”);方式创建对象,在内存中创建了几个对象?
1 | 两个: 一个是堆空间中new结构,另一个是char[]对应的常量池中的数据: "abc" |
二、String底层赋值笔试题
结论:
1.常量与常量的拼接结果在常量池。且常量池中不会存在相同内容的常量。
2.只要其中有一个是变量,结果就在堆中。
3.如果拼接的结果调用intern()方法,返回值就在常量池中
1 |
|
三、值传递面试题
注意:引用类型值传递传递的是地址值,但是String具有不可变性,故值传递后修改的只是形参的值,并不影响成员变量本身的值。
1 | public class StringTest { |