String的常见面试题

下面代码,是我前些天在网上搜集的一小部分String的面试题。个人觉得感触很深,希望对大家有所帮助。不好的也请大家批评指正。

 1 package com.zys.string;
 2 
 3 public class Demo3_StringMianShi {
 4 
 5     /**
 6      * @此中的equals()方法是String中的,与Object中的equals()方法不一样
 7      * 这些是String常见的面试题
 8      */
 9     public static void main(String[] args) {
10         //demo1();
11         //demo2();
12         //demo3();
13         //demo4();
14         String s1 = "ab";
15         String s2 ="abc";
16         String s3 = s1 + "c";
17         System.out.println(s3 == s2);//false s1,s2都在常量池中,s3+"c"是一个StringBuffer对象,必须得转换成String对象
18         System.out.println(s3.equals(s2));//true
19     }
20 
21     private static void demo4() {
22         String s1 = "a" + "b" + "c";
23         String s2 = "abc";
24         System.out.println(s1 == s2);//true java中有常量优化机制
25         System.out.println(s1.equals(s2));//true
26     }
27 
28     private static void demo3() {
29         String s1 = new String("abc");
30         String s2 = "abc";
31         System.out.println(s1 == s2);//false
32         System.out.println(s1.equals(s2));//true
33     }
34 
35     private static void demo2() {
36         //下面这段代码共创建了对象
37         String s1 = new String("abc");//俩个对象,因为它new了中,在堆内存中开辟了一块空间,有地址值
38         System.out.println(s1);
39     }
40 
41     private static void demo1() {
42         /*
43          * 俩个都为true,因为s1,s2指向同一对象,都处于常量变量池
44          */
45         String s1 = "abc";
46         String s2 = "abc";
47         System.out.println(s1 == s2);//true
48         System.out.println(s1.equals(s2));//true
49     }
50 
51 }

这是我寄己写到第一篇博客,心情很好,希望自己走动越走越远。。

猜你喜欢

转载自www.cnblogs.com/mnxz99/p/8995645.html