1、String s = "abc";
String s = new String("abc")有什么区别?画出内存图。
通过String s = "abc"创建出来的"abc"属于字符串常量,存放于内存中的数据段。
通过String s = new String("abc")创建了一个String类型的对象,"abc"是属性,存放于内存中的堆中
2、String有什么特点?
String长度不可改变,当对字符串进行添加、替换、删除时,不会改变字符串的内容,而是产生一个新字符串。
3、"[3200-3500]"这样一个正则表达式。"3300"匹配吗?为什么?
3300 不会匹配,因为正则表达式[ ]中是一个字符一个字符进行匹配的。
4、String和StringBuffer有什么区别?
String创建的字符串具有长度不可变化的特性,当对字符串进行添加、替换、删除时,不会改变字符串的内容,而是产生一个新字符串。
StringBuffer是缓冲区的对象,当对StringBuffer做添加、替换、删除时,直接改变StringBuffer的内容,不会产生新的对象。
5、说出以下代码执行结果
String a = "abc";
String b = "abc";
String c = new String("abc");
String d = new String("abc");
System.out.println(a == b);//true
System.out.println(c == b);//false
System.out.println(c == d);//false
System.out.println(a.equals(b));//true
System.out.println(a.equals(d));//true
System.out.println(b.equals(c));//true
6、说出以下代码执行结果
public static void main(String[] args) {
String s = "abcd";
StringBuffer sb = new StringBuffer("abcd");
test(s,sb);
System.out.println(s+" "+sb);
}
public static void test(String s,StringBuffer sb){
s = s + "&&&";//s =
sb.append("***");
}
}
结果:abcd abcd***