1、看一道面试题
public static void main(String[] args) throws Exception {
String test = new String("abc");
//加入某种逻辑,使得test的引用不变并输出abcd
System.out.println(test);
}
public static void main(String[] args) throws Exception {
String test = new String("abc");
//加入某种逻辑,使得test的引用不变并输出abcd
Field value = test.getClass().getDeclaredField("value");
value.setAccessible(true);
value.set(test, "abcd".toCharArray());
System.out.println(test);
}
2、第二道题目
public static void main(String[] args) {
String s1 = new String("abc");
String s2 = "abc";
System.out.println(s1 == s2); //输出什么?
String s3 = s1.intern();
System.out.println(s2 == s3);//输出什么?
}
intern() 方法是先去字符串常量池中去拿,所以拿到是s2的引用,输出true
3、第三道题
public static void main(String[] args) {
Integer integer1 = 12;
Integer integer2 = 12;
System.out.println(integer1 == integer2);
Integer integer3 = 128;
Integer integer4 = 128;
System.out.println(integer3 == integer4);
}
考察的是Integer的缓冲池原理,缓存的范围是-128-127之间。
后续持续更新