文章目录
- 31、String s="Hello"; s=s+"world!",执行之后,原始的String对象的内容改变了没有?
- 32、是否可以继承 String类
- 33、String s=new String("xyz");创建了几个 String对象,二者之间有什么区别
- 34、String 和StringBuffer 的区别
- todo...
- 35、把一段逗号分隔的 字符串 转换成一个数组
- 36、String有没有 length()方法,数组有没有 length()方法
- 37、下面的语句创建了多少个对象
- 38、tyr{} 里面有一个 return 语句,finally 会不会执行,return前还是 return 后
- 39、下面的代码的输出结果是多少
- 40、final 、 finally 、 finalize 的区别
31、String s=“Hello”; s=s+“world!”,执行之后,原始的String对象的内容改变了没有?
没有,因为String是不可变的类,一开始 s指向了 “Hello” 执行之后,s指向了另一个字符串 “Hello world!”,原来的String内容的对象并没有改变。
32、是否可以继承 String类
String 是 final 类 ,不可以被继承
33、String s=new String(“xyz”);创建了几个 String对象,二者之间有什么区别
两个或者一个, “xyz” 对应一个 对象,存放在 常量缓冲区,new String(“xyz”) ;根据 “xyz” 创建了 一个String对象 s,s中放的是 “xyz”
34、String 和StringBuffer 的区别
StringBuffer是 可变的,可以修改,是线程安全的,StringBuffer没有实现 equals 方法,所以:
new StringBuffer("abc").equals(new StringBuffer("abc"));
答案是 false
也没有覆盖 hashCode() 方法
todo…
StringBuilder 和StringBuffer
35、把一段逗号分隔的 字符串 转换成一个数组
1) 正则表达式
String string="a,c,v,b,n"
String[] result=string.split(",");
2)
36、String有没有 length()方法,数组有没有 length()方法
String 有 length()方法;数组没有 length()方法,length 是数组的一个属性
37、下面的语句创建了多少个对象
String s=“a”+“b”+“c”+“d”;
String str1="a";
String str2=str1+"b";
String str3="a"+"b";
System.out.println(str2="ab"); //false
System.out.println(str3="ab"); //true
java 编译器会优化 String str3=“a”+“b”;
会去掉加号,拼接成 “ab”
38、tyr{} 里面有一个 return 语句,finally 会不会执行,return前还是 return 后
package char01;
public class Test38 {
/*执行顺序
* 1.try 中的非return 语句 2.catch 3.finally 4.try 中的return 语句
*/
static int tests() {
int x = 1;
try {
System.out.println("进入 try ");
return x;
// System.out.println("出 try");
} finally {
System.out.println("进入 finally");
++x;
System.out.println("出 finally");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(new Test38().tests());
}
输出结果
总结
tyr{} 里面有一个 return 语句,finally 会执行,在 return 之后执行
39、下面的代码的输出结果是多少
package char01.test39;
public class SmallTest {
public int get() {
try{
return 1;
}finally{
return 2;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SmallTest test=new SmallTest();
int b=test.get();
System.out.println(b);
}
}
输出的结果
调试的结果
先进入 try,停在 return 1;
之后进入 finally,停在 return 2;这个return生效把2 带回给 b
40、final 、 finally 、 finalize 的区别
final 修饰 属性,方法 ,类;修饰属性:属性的值不可以改变;方法:方法不可以被重写;类:类不可以被继承
fianlly:是处理异常结构的一部分;总是执行
finalize:Object 类的一个方法,在垃圾回收的时候调用