标签:
1.先看一个图:
2.String面试题:
(1)题1:
1 package cn.itcast_02; 2 3 /* 4 * 看程序写结果 5 */ 6 public class StringDemo3 { 7 public static void main(String[] args) { 8 String s1 = new String("hello"); 9 String s2 = new String("hello"); 10 System.out.println(s1 == s2);// false 11 System.out.println(s1.equals(s2));// true 12 13 String s3 = new String("hello"); 14 String s4 = "hello"; 15 System.out.println(s3 == s4);// false 16 System.out.println(s3.equals(s4));// true 17 18 String s5 = "hello"; 19 String s6 = "hello"; 20 System.out.println(s5 == s6);// true 21 System.out.println(s5.equals(s6));// true 22 } 23 }
(2)题2:
1 package cn.itcast_02; 2 3 /* 4 * 看程序写结果 5 * 字符串如果是变量相加,先开空间,在拼接。 6 * 字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。 7 */ 8 public class StringDemo4 { 9 public static void main(String[] args) { 10 String s1 = "hello"; 11 String s2 = "world"; 12 String s3 = "helloworld"; 13 System.out.println(s3 == s1 + s2);// false ,另外单独开了一个空间(地址不详),然后在这个空间中进行字符串拼接。 14 System.out.println(s3.equals((s1 + s2)));// true 15 16 System.out.println(s3 == "hello" + "world");//这个我们错了,应该是true,因为之前s3 = "helloworld",已经存在"helloworld"直接返回这个 17 System.out.println(s3.equals("hello" + "world"));// true 18 19 // 通过反编译看源码,我们知道这里已经做好了处理。 20 // System.out.println(s3 == "helloworld"); 21 // System.out.println(s3.equals("helloworld")); 22 } 23 }
Java基础知识强化32:String类之String的面试题
标签:
原文地址:http://www.cnblogs.com/hebao0514/p/4821506.html