Java-String类常见面试题

1.判断定义为String类型的s1和s2是否相等

   String s1="abc";
   String s2="abc";
   System.out.println(s1==s2);
   System.out.println(s1.equals(s2));

运行结果为

   true
   true

Java-String类常见面试题_第1张图片

==比较基本数据类型的时候比较的是值,比较引用类型的时候比较的是地址值。这里是比较的引用类型。

创建“abc”的时候先到常量池看看有没有,没有的话就创建一个,有的话就直接用。所以s1和s2的存的地址值相同,指向的是同一个。

equals是Object中的方法,只能用于引用类型,也是比较的地址值。但String类重写了equals方法,来比较字符串是否相等。

2.这句话在内存创建了几个对象

 String s1=new String("abc");

答案是两个
Java-String类常见面试题_第2张图片
执行“abc”的之后在常量池创建一个,new的时候在堆里创建一个,并把常量池中的“abc”复制了一份过去。然后将其引用赋给了s1。

3.判断定义为String类型的s1和s2是否相等

   String s1=new String("abc");//堆内存的地址
   String s2="abc";//常量池的地址
   System.out.println(s1==s2);
   System.out.println(s1.equals(s2));

运行结果为

   false
   true

Java-String类常见面试题_第3张图片

4.判断定义为String类型的s1和s2是否相等

   String s1="ab";
   String s2="abc";
   String s3=s1+"c";
   System.out.println(s3==s2);
   System.out.println(s3.equals(s2));

运行结果为

   false
   true

Java-String类常见面试题_第4张图片
先通过StingBuffer将“ab”和“c”合并成“abc”,然后通过toString将其转换成字符串。
Java 语言提供对字符串串联符号(”+”)以及将其他对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。字符串转换是通过 toString 方法实现的,该方法由 Object 类定义,并可被 Java 中的所有类继承。

你可能感兴趣的:(Java基础)