NowCoder-Java-Note(二)

一、 Java Application 中的主類需包含main方法,以下哪項是main方法的正確形參?( )

A.String args
B.String[] args
C.Char arg
D.StringBuffer[] args

答案:B

解析:
  • main函數的形式為 public static void main(String[] args)
  • String[] args 還有一種等價的寫法: String... args
    1.前者為數組形式, 后者為可變參數形式
    2.前者用得較多, 但是看到后者也應認識。

二、 java socket如何獲取本地ip地址?

A.getInetAddress()
B.getLocalAddress()
C.getReuseAddress()
D.getLocalPort()

答案:B

解析:
Socket類

三、下面代碼運行結果是()

public class Test{ 
    public int add(int a,int b){   
         try {
             return a+b;      
         } 
        catch (Exception e) {  
            System.out.println("catch語句塊");
         }
         finally{ 
             System.out.println("finally語句塊");
         }
         return 0;
    } 
     public static void main(String argv[]){ 
         Test test =new Test(); 
         System.out.println("和是:"+test.add(9, 34)); 
     }
}

A.catch語句塊;和是:43
B.編譯異常
C.finally語句塊;和是:43
D.和是:43;finally語句塊

答案:C

解析:
先來看一段代碼:
public abstract class Test {
    public static void main(String[] args) {
        System.out.println(beforeFinally());
    }
     
    public static int beforeFinally(){
        int a = 0;
        try{
            a = 1;
            return a;
        }finally{
            a = 2;
        }
    }
}
  • 從結果上看,貌似finally 里的語句是在return 之后執行的,其實不然,實際上finally 里的語句是在在return 之前執行的。那么問題來了,既然是在之前執行,那為什么a 的值沒有被覆蓋了?
  • 實際過程是這樣的:當程序執行到try{}語句中的return方法時,它會干這么一件事,將要返回的結果存儲到一個臨時棧中,然后程序不會立即返回,而是去執行finally{}中的程序, 在執行a = 2時,程序僅僅是覆蓋了a的值,但不會去更新臨時棧中的那個要返回的值 。執行完之后,就會通知主程序“finally的程序執行完畢,可以請求返回了”,這時,就會將臨時棧中的值取出來返回。這下應該清楚了,要返回的值是保存至臨時棧中的。
再來看一個例子,稍微改下上面的程序:
public abstract class Test {
    public static void main(String[] args) {
        System.out.println(beforeFinally());
    }
     
    public static int beforeFinally(){
        int a = 0;
        try{
            a = 1;
            return a;
        }finally{
            a = 2;
            return a;
        }
    }
}
  • 在這里,finally{}里也有一個return,那么在執行這個return時,就會更新臨時棧中的值。同樣,在執行完finally之后,就會通知主程序請求返回了,即將臨時棧中的值取出來返回。故返回值是2.
結論:
  1. finally{}代碼塊比return先執行。

  2. 多個return是按順序執行的的,多個return執行了一個后,后面的return就不會執行了。

  3. 記住一點,不管有不有異常拋出,finally都會在return返回前執行。

四、在基本JAVA類型中,如果不明確指定,整數型的默認是什么類型?帶小數的默認是什么類型?

int double

解析:
  • 整數類型 默認為 int
    帶小數的默認為double
  • 如果要指定長整型加L;如果要指定為單精度加F

五、關于PreparedStatement與Statement描述錯誤的是()

A.一般而言,PreparedStatement比Statement執行效率更高
B.PreparedStatement會預編譯SQL語句
C.Statement每次都會解析/編譯SQL,確立并優化數據獲取路徑
D.Statement執行掃描的結果集比PreparedStatement大

答案:D

解析(一):
創建時的區別:
Statement statement = conn.createStatement();
PreparedStatement preStatement = conn.prepareStatement(sql);
執行的時候:
ResultSet rSet = statement.executeQuery(sql);
ResultSet pSet = preStatement.executeQuery(); 
  • 由上可以看出,PreparedStatement有預編譯的過程,已經綁定sql,之后無論執行多少遍,都不會再去進行編譯,

  • 而 statement 不同,如果執行多遍,則相應的就要編譯多少遍sql,所以從這點看,PreparedStatement 的效率會比 Statement要高一些

解析(二):
Statement 和 PreparedStatement 有什么區別?哪個性能更好?

與 Statement 相比,
①PreparedStatement 接口代表預編譯的語句,它主要的優勢在于
以減少 SQL 的編譯錯誤并增加 SQL 的安全性(減少 SQL 注射攻擊的可能性)
;
②PreparedStatement 中的 SQL 語句是可以帶參數的,避免了用字符串連接拼接 SQL 語句的麻煩和不安全;
當批量處理 SQL 或頻繁執行相同的查詢時,PreparedStatement 有明顯的性能上的優勢,由于數據庫可以將編譯優化后的 SQL 語句緩存起來,下次執行相同結構的語句時就會很快(不用再次編譯和生成執行計劃)。

補充:
①為了提供對存儲過程的調用,JDBC API 中還提供了 CallableStatement 接口。
②存儲過程(Stored Procedure)是數據庫中一組為了完成特定功能的 SQL 語句的集合,經編譯后存儲在數據庫中,用戶通過指定存儲過程的名字并給出參數(如果該存儲過程帶有參數)來執行它。
③雖然調用存儲過程會在網絡開銷、安全性、性能上獲得很多好處,但是存在如果底層數據庫發生遷移時就會有很多麻煩,因為每種數據庫的存儲過程在書寫上存在不少的差別

圖片.png

六、 Java 多線程有幾種實現方法?( )

繼承Thread類; 實現Runnable接口; 實現Callable接口

七、int,String,*point,union哪些不是 Java 的數據類型?(不定項)

A.int
B.String
C.*point
D.union

答案:C D

解析:
Java 的數據類型
  • 題目是說數據類型,并沒有說基本數據類型,所有包括了引用數據類型,String為字符串類,屬于引用數據類型

八、java中關于繼承的描述正確的是()?(不定項)

A.一個子類只能繼承一個父類
B.子類可以繼承父類的構造方法
C.繼承具有傳遞性
D.父類一般具有通用性,子類更具體

答案: A C D

解析:
  • 在java中,子類構造器會默認調用super()(無論構造器中是否寫有super()),用于初始化父類成員,同時當父類中存在有參構造器時,必須提供無參構造器,子類構造器中并不會自動繼承有參構造器,仍然默認調用super(),使用無參構造器。因此,一個類想要被繼承必須提供無參構造器。

  • PS:方法沒有繼承一說,只有重載和重寫

九、下面哪些寫法能在 java8 中編譯執行()(不定項)

A.dir.listFiles((File f)->f.getName().endsWith(“.Java”));
B.dir.listFiles((File f)=>f.getName().endsWith(“.Java”));
C.dir.listFiles((_.getName().endsWith(“.Java”)));
D.dir.listFiles( f->f.getName().endsWith(“.Java”));

答案:A D

解析:
Lanbda表達式的主要作用就是代替匿名內部類的繁瑣語法, 它由三部分組成:
  1. 形參列表。
  2. 箭頭(→)。必須通過英文中畫線和大于符號組成。
  3. 代碼塊。
Lanbda表達式簡單實例:
Lanbda表達式

十、下面哪些類可以被繼承? Java.lang.Thread、java.lang.Number、java.lang.Double、java.lang.Math、 java.lang.ClassLoader(不定項)

A.Thread
B.Number
C.Double
D.Math
E.ClassLoader

答案: A B E

解析:
  • A.Thread可以被繼承,用于創建新的線程
  • B.Number類可以被繼承,Integer,Float,Double等都繼承自Number類
  • C.Double類的聲明為
    Double類
  • D.Math類的聲明為
    Math類

    final聲明的類不能被繼承

  • E.ClassLoader可以被繼承,用戶可以自定義類加載器
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,737評論 18 399
  • 轉自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帥199207閱讀 8,582評論 3 93
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,134評論 0 62
  • 一. Java基礎部分.................................................
    wy_sure閱讀 3,830評論 0 11
  • 我們越恐懼一件事情,那件事情背后隱藏著的信息可能就越重要。 我們最恐懼的,恰恰可能隱藏著我們生命中最關鍵的答案。 ...
    角落蜷縮閱讀 141評論 0 0