题目皆摘自牛客网JAVA专项练习
1.关于异常的编程,以下描述错误的是:( A )
A.在有除法存在的代码处,为了防止分母为零,必须抛出并捕获异常
B.int i=Integer.parseInt(”123a”);将产生NumberFormatException
C.int a[]=null; a[0]=1; 将产生NullPointerException
D.输入输出流编程中,读和写时都要抛出IOException
异常分为运行时异常,非运行时异常和error,
①、error是系统异常,只能重启系统解决。
②、非运行时异常需要我们自己捕获,
③、运行异常是程序运行时由虚拟机帮助我们补获,运行时异常包括数组的溢出,内存的溢出空指针,分母为0等!
2.代码输出结果为: 1
String str = "";
System.out.print(str.split(",").length());
①、String获取长度用的是length()方法,而数组类型我们直接用属性length获取长度,题目中split方法返回的是String数组,我们应该用length获取长度,而不是length();
②、因为原字符串不包含分隔符,所以直接返回原字符串,分割出来只有一个空的字符串数组,所以结果是1.
(注意,虽然原字符串为空,存到字符串数组为空,但是这个空也会算一个元素。)
3.以下可以正确获取结果集的有 (A、D)
A.Statement sta=con.createStatement();
<br>ResultSet rst=sta.executeQuery(“select * from book”);
B.Statement sta=con.createStatement(“select * from book”); ResultSet rst=sta.executeQuery();
C.PreparedStatement pst=con.prepareStatement(); ResultSet rst=pst.executeQuery(“select * from book”);
D.PreparedStatement pst=con.prepareStatement(“select * from book”);
ResultSet rst=pst.executeQuery();
A,D是正确的;创建Statement是不传参的,PreparedStatement需要传入sql语句。
附加面试题:
问:
是否可以继承String类?
答:
不能,因为String是final修饰的,final修饰的类不能被继承,修饰方法,不能被重写,修饰变量就变成了常量,不能更改。
那String为什么要设计成final的呢,原因主要有两点:1,线程安全;2,创建后不可改变,那后面需要在用的时候直接从常量池里面取,可以节省资源,提高效率。