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