牛客网—Java专项练习(2)
1.在异常处理中,以下描述不正确的有
a. try块不可以省略
b. 可以使用多重catch块
c. finally块可以省略
d. catch块和finally块可以同时省略
正确答案 D
//try块的表现形式有三种 catch和finally不能同时省略
try-catch
try-catch-finally
try-finally
- 下面代码的执行结果是 :
class Chinese{
private static Chinese objref =new Chinese();
private Chinese(){}
public static Chinese getInstance() { return objref; }
}
public class TestChinese {
public static void main(String [] args) {
Chinese obj1 = Chinese.getInstance();
Chinese obj2 = Chinese.getInstance();
System.out.println(obj1 == obj2);
}
}
a. true
b. false
c. TRUE
d. FALSE
正确答案 a
初看的时候 以为这道题在考察static关键字 想到static关键字修饰的静态变量只在方法区中内存维护了一份共享数据 那么obj1和obj2的内存地址就应该相同 所以返回true
接下来 又看牛客网友的评论 发现这是单例设计模式(自己真菜真辣鸡)
下面简单复习一下单例设计模式
单例设计模式的目标 一个类在内存中只有一个对象
我们来看一下单例设计模式的三个步骤
(1) 私有化构造函数
(2) 声明一个本类的引用类型变量 创建本类的对象
(3) 提供一个公共的方法来获取本类的对象
我们再来看一下单例设计模式要注意的细节
public static Chinese getInstance() { return objref; }
这个获取本类对象的公共方法 应该用static来修饰 试想如果这个方法是非静态的 那么我们在调用这个方法时要使用对象.方法名()的形式进行访问(非静态成员只能用对象的形式访问) 但构造方法已经被我们私有化了 我们只能通过类名.方法名()的这个方法来拿到该类对象 这就要求这个公共方必须是static修饰的静态方法
Chinese obj1 = Chinese.getInstance();
我们也是使用类名进行调用的
3.关于数据库连接的程序,以下哪个语句的注释是错误的
a. Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); //指定MySQL JDBC驱动程序
b. String url=”jdbc:odbc:student_access”; //指定数据源为student_access
c. Connection con=DriverManager.getConnection(url); //创建连接指定数据库的对象
d. Statement stmt=con.creatStatement();//创建执行SQL语句的Statement对象
正确答案 a
害 最后这个题有点水 这个题的原因我个人认为是这样的
Class.forName("com.mysql.jdbc.Driver")//俺觉得这个是mysql驱动
写在最后
害 今天本来准备冲5个题了 可是如图
真的冲的累了(其实是想玩会手机了) 歇了歇了 晚上不累再冲 冲冲冲