字符串类常见面试题
1.判断定义为String类型的s1和s2是否相等
1 String s1="abc";//常量池中没有这个对象就去创建,如果有就使用. 2 String s2="abc";//第一次创建了,有对此对象,直接指向他 3 System.out.println(s1==s2);//true 4 System.out.println(s1.equals(s2));//true,字符串内容比较
2.下面这句话在内存中创建了几个对象
1 // 创建了两个对象,一个在常量池里,另一个在堆内存里;根据构造方法String(String original)可知,但两个对象的地址不同 2 String s1 = new String("abc"); 3 System.out.println(s1);
3.判断定义为String类型的s1和s2是否相等
1 String str1=new String("abc");//记录的是堆内存里的对象地址 2 String str2="abc";//记录的是常量池里的对象地址 3 System.out.println(str1==str2);//false 4 System.out.println(str1.equals(str2));//true
4.判断定义为String类型的s1和s2是否相等
1 String str1 = "a" + "b" + "c"; 2 String str2 = "abc"; 3 System.out.println(str1 == str2);// true,java中有常量优化机制 4 System.out.println(str1.equals(str2));// true
5.判断定义为String类型的s1和s2是否相等
1 /* 2 * Java 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。 字符串串联是通过 StringBuilder(或 3 * StringBuffer)类及其 append 方法实现的。 字符串转换是通过 toString 方法实现的. 4 */ 5 String str1 = "ab"; 6 String str2 = "abc"; 7 String str3 = str1 + "c"; 8 System.out.println(str2 == str3);// false 9 System.out.println(str2.equals(str3));// true