以下程序运行后的结果是()
- public class Exec8 {
- public static void main(String[] args) {
- String s1 = "a";
- String s2 = "b";
- String s3 = "ab";
- String s4 = "ab";
- System.out.println(s3 == s4); //结果为true,享元机制
- String s5 = "a" + "b";
- System.out.println(s3 == s5); //结果为true,常量优化机制
- String s6 = s1 + s2;
- System.out.println(s3 == s6); //结果为false,两个变量相加
- String s7 = new String("ab");
- System.out.println(s3 == s7); //结果为false,s7引用的实体在堆内存中
- final String s8 = "a";
- final String s9 = "b";
- String s10 = s8 + s9;
- System.out.println(s3 == s10); //结果为true,原理同s3 == s5,被final修饰的变量也是常量,同样享受常量优化机制
- }
- }
复制代码
A、false true true false false
B、true false false true false
C、true true false false true
D、false false true false true
答案是D,原因写在注释上了,真的是看一次晕一次…… |
|