string创建了几个对象?
1.String str = “aaa” 创建了0个或一个对象
会先去常量池找“aaa”,如果找到了就创建了0个对象,如果找不到就会在常量池创建一个“aaa”字符串
2.String str = new String(“aaa”)创建了一个或两个对象
会先去常量池找“aaa”,如果找到了就会执行new操作,在堆中创建一个存储“aaa”的String对象,创建了一个对象。如果常量池中没有找到“aaa”,就会先创建一个“aaa”字符串,再执行new操作,在堆中创建一个存储“aaa”的String对象。
String类被final修饰
1.被final修饰后不能被继承和方法也不能被重写这样做的原因有:
- String做为常用类不能被继承可以提高效率
- String类设计系统底层操作,如果能被改写,可能会引入病毒导致系统崩溃
String StingBuffer StringBuilder的区别?
1.String在底层使用的时final修饰的字符数组而StringBuffer StringBuilder在底层使用的时可变字符数组没有用final修饰
2.在拼接字符串时,千万千万不能使用String拼接
String c = “a” + “b”;
StringBuffer sb = new StringBuffer();
sb.append("a").append("b");