下面代码,是我前些天在网上搜集的一小部分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 }
这是我寄己写到第一篇博客,心情很好,希望自己走动越走越远。。