Java 每天来一道面试题

1、下面这段代码的输出结果是什么?
        String a = "helloworld";
        String b = "hello" + "world";
        System.out.println((a == b));
        
    输出结果为:True。
    原因是String对字符串的直接相加,会在编译期进行优化。即hello+world在编译时期,被优化为helloworld,所以在运行时期,
    他们指向了同一个对象。

    2、下面这段代码的输出结果是什么?
        String a = "helloworld";
        String b = "hello";       
        String c = b + "world";       
        System.out.println((a == c));
        
    输出结果为:False。
    原因是c并非两个字符串直接相加,包含了一个字符串引用,这时不会做编译期的优化。所以a、c最终生成了两个对象。

 

 

你可能感兴趣的:(java面试题)