体现功底的几道java面试题

前言

最近面试某公司,其技术主管精选了几道java题目用以面试,个人觉得很经典,也比起那些动不动就做几页试卷的,其面试效率更高更能体现应聘者的功底,因此附上自己的答案和理解分享出来。

第一道:

//该程序的运行结果是?
    public static void main(String... args){
        String str1 = "hello";
        String str2 = "he" + new String("llo");
        System.out.println(str1==str2);
    }

答案为:false。对于对象来说,“==”比较的是其内存地址,两个new出来的对象其内存地址不同,对比结果自然为false,如“Integer i = new Integer("1");”和“Integer i2 = new Integer("1");”其“==”对比返回的为false。对于面试官来说,只回答这点是不够的,这道题里str1指向了“hello”的内存地址,但jvm栈内存会对“he"+new String("llo")的计算开辟新的存储空间,因此str2的内存地址与str1并不同。

上一篇:Python-字符串详解(包含长字符串和原始字符串)


下一篇:02字符串的常量池