黑马程序员技术交流社区

标题: 今天学习内容涉及到的面试题,自己打了注释,加油加油! [打印本页]

作者: 王大可    时间: 2015-12-4 23:35
标题: 今天学习内容涉及到的面试题,自己打了注释,加油加油!
// String类面试题
        /*
         * * 1.判断定义为String类型的s1和s2是否相等 String s1 = "abc"; String s2 = "abc";
         * System.out.println(s1 == s2); //false,比较的是两个常量区的地址值
         * System.out.println(s1.equals(s2)); //true ,equals方法比较的是具体的值
         */

        /*
         * 2.下面这句话在内存中创建了几个对象? String s1 = new String("abc"); //创建了两个对象,new abc
         * 在堆内存中 ,s1 在常量池中
         */
        /*
         * 3.判断定义为String类型的s1和s2是否相等 String s1 = new String("abc"); String s2 =
         * "abc"; System.out.println(s1 == s2); //false ,
         * 堆内存中的对象地址值和常量池中的对象地址值比较,肯定不相同 System.out.println(s1.equals(s2));
         * //true , equals方法比较具体的值
         */

        /*
         * 4.判断定义为String类型的s1和s2是否相等 String s1 = "a" + "b" + "c"; String s2 =
         * "abc"; System.out.println(s1 == s2); //true ,
         * 常量优化机制,编译时s1="abc",创建s2时,找到了已经创建的"abc",直接将地址值赋值给s2
         * System.out.println(s1.equals(s2)); //true , equals方法比较具体的值
         */
        /*
         * 5.判断定义为String类型的s1和s2是否相等 String s1 = "ab"; String s2 = "abc"; String
         * s3 = s1 + "c"; System.out.println(s3 == s2); //false,
         * StringBuffer内组合成
         * "abc",再调用toString方法转成String型,s3是toString方法的地址值,s2是常量池地址值
         * System.out.println(s3.equals(s2)); //true , equals方法比较具体的值
         */





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2