牛客網—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個題了 可是如圖
真的衝的累了(其實是想玩會手機了) 歇了歇了 晚上不累再衝 沖沖衝