NowCoder-Java-Note(三)

001.jpg

一、 以下的變量定義語句中,合法的是()

A.byte=128
B.boolean=null
C.long a=123L
D.double=0.9239d

解析:
  • byte表示的范圍為[-128,127];
  • boolean的取值只能是true或false
  • D選項(xiàng)缺少變量名

答案:C

二、若在某一個(gè)類定義中定義有如下的方法: abstract void performDial( );該方法屬于()

A.本地方法
B.最終方法
C.解態(tài)方法
D.抽象方法

解析:
  • 本地方法:簡單地講,一個(gè)native Method就是一個(gè)java調(diào)用非java代碼的接口;native方法表示該方法要用另外一種依賴平臺(tái)的編程語言實(shí)現(xiàn)。

  • 最終方法:final void B(){},這樣定義的方法就是最終方法,最終方法在子類中不可以被重寫,也就是說,如果有個(gè)子類繼承了這個(gè)最終方法所在的類,那么這個(gè)子類中不能出現(xiàn)void B(){}這樣的方法。

  • 最終類:final class A {},這樣定義的類就是最終類,最終類不能被繼承。

  • abstract修飾抽象類。

答案:D

三、 有以下程序片段,下列哪個(gè)選項(xiàng)不能插入到行 1 。( )。

1.
2.public class A {
3.    //do sth
4.} 

A.public class MainClass{ }
B.package mine;
C.class ANotherClass{ }
D.import java.util.*;

解析:
  • Java的一個(gè)源程序只能有一個(gè)public類存在,且類名與文件名相同。java程序是從main方法開始執(zhí)行的,public為類加載器提供入口,然后找到public類中的main方法開始執(zhí)行。如果存在多個(gè)public類,程序?qū)⒉恢缽哪睦镩_始執(zhí)行。
  • 注意:內(nèi)部類是可以public的,因?yàn)閮?nèi)部類是作為外部類的成員而存在。

答案:A

strlen.gif

四、執(zhí)行如下程序,輸出結(jié)果是( )

public class Test_Thread {
    public static void main(String[] args) {
        Test mv = new Test();
        Thread t1 = new ThreadExample(mv);
        Thread t2 = new ThreadExample(mv);
        Thread t3 = new ThreadExample(mv);
        t1.start();
        t2.start();
        t3.start();
    }
}
class Test{
    private int data;
    int result = 0;
    public void m(){
        result += 2;
        data += 2;
        System.out.print(result + "  " + data);
    }
}
class ThreadExample extends Thread{
    private Test mv;
    public ThreadExample(Test mv) {
        this.mv = mv;
    }
    @Override
    public void run() {
        synchronized (mv) {
            mv.m();
        }
    }
}

A.0 22 44 6
B.2 42 42 4
C.2 24 46 6
D.4 44 46 6

解析:

Test mv =newTest()聲明并初始化對(duì)data賦默認(rèn)值
使用synchronized關(guān)鍵字加同步鎖線程依次操作m()
t1.start();使得result=2,data=2,輸出即為2 2
t2.start();使得result=4,data=4,輸出即為4 4
t3.start();使得result=6,data=6,輸出即為6 6
System.out.print(result +" "+ data);是print()方法不會(huì)換行,輸出結(jié)果為2 24 46 6

答案:C

五、以下哪項(xiàng)不屬于java類加載過程?

A.生成java.lang.Class對(duì)象
B.int類型對(duì)象成員變量賦予默認(rèn)值
C.執(zhí)行static塊代碼
D.類方法解析

解析:
類加載過程 :
  • 類從被加載到虛擬機(jī)內(nèi)存中開始,到卸載出內(nèi)存為止,它的整個(gè)生命周期包括:加載(Loading)、驗(yàn)證(Verification)、準(zhǔn)備(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸載(Unloading)7個(gè)階段。其中準(zhǔn)備、驗(yàn)證、解析3個(gè)部分統(tǒng)稱為連接(Linking)。
    類加載過程

引用內(nèi)容鏈接:
http://blog.csdn.net/u013256816/article/details/50829596

選項(xiàng) :
  • 生成java.lang.Class對(duì)象是在加載時(shí)進(jìn)行的。生成Class對(duì)象作為方法區(qū)這個(gè)類的各種數(shù)據(jù)的訪問入口。

  • 既然是對(duì)象成員,那么肯定在實(shí)例化對(duì)象后才有。在類加載的時(shí)候會(huì)賦予初值的是類變量,而非對(duì)象成員。

  • 類方法解析發(fā)生在解析過程。

答案:B

六、下面哪個(gè)語句是創(chuàng)建數(shù)組的正確語句?( )

A.float f[][] = new float[6][6];
B.float []f[] = new float[6][6];
C.float f[][] = new float[][6];
D.float [][]f = new float[6][6];
E.float [][]f = new float[6][];

解析:
  • 數(shù)組命名時(shí)名稱與[]可以隨意排列,但聲明的二維數(shù)組中第一個(gè)中括號(hào)中必須要有值,它代表的是在該二維數(shù)組中有多少個(gè)一維數(shù)組。

  • 如果定義一個(gè)這樣的二維數(shù)組int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};則其在內(nèi)存中的表示可能下面這樣的。

    001.png

答案:A B D E

引用內(nèi)容鏈接:
https://www.cnblogs.com/bewolf/p/4321642.html

七、下面哪些屬于JSP內(nèi)置對(duì)象及方法?

A.request
B.out
C.application
D.config

解析:
JSP 有 9 個(gè)內(nèi)置對(duì)象:
  • request:封裝客戶端的請求,其中包含來自 GET 或 POST 請求的參數(shù);
  • response:封裝服務(wù)器對(duì)客戶端的響應(yīng);
  • session:封裝用戶會(huì)話的對(duì)象;
  • application:封裝服務(wù)器運(yùn)行環(huán)境的對(duì)象;
  • out:輸出服務(wù)器響應(yīng)的輸出流對(duì)象;
  • config:Web 應(yīng)用的配置對(duì)象;
  • pageContext:通過該對(duì)象可以獲取其他對(duì)象;
  • page:JSP 頁面本身(相當(dāng)于 Java 程序中的 this);
  • exception:封裝頁面拋出異常的對(duì)象

答案:A B C D

八、final、finally和finalize的區(qū)別中,下述說法正確的有?

A.final用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
B.finally是異常處理語句結(jié)構(gòu)的一部分,表示總是執(zhí)行。
C.finalize是Object類的一個(gè)方法,在垃圾收集器執(zhí)行的時(shí)候會(huì)調(diào)用被回收對(duì)象的此方法,可以覆蓋此方法提供垃圾收集時(shí)的其他資源的回收,例如關(guān)閉文件等。
D.引用變量被final修飾之后,不能再指向其他對(duì)象,它指向的對(duì)象的內(nèi)容也是不可變的。

解析:
  • B選項(xiàng)→
    PS:finally 是無論是否有異常都會(huì)被處理的語句,除非在 finally 前存在被執(zhí)行的System.exit(int i)時(shí)除外。
  • C選項(xiàng):JVM 不保證此方法總被調(diào)用
  • D選項(xiàng):使用final修飾一個(gè)變量時(shí),是指引用變量不能變,引用變量所指向?qū)ο笾械膬?nèi)容可以改變。

答案:A B

九、下列方法中哪個(gè)是線程執(zhí)行的方法? ()

A.run()
B.start()
C.sleep()
D.suspend()

解析:
  • run()方法用來執(zhí)行線程體中具體的內(nèi)容;
    start()方法用來啟動(dòng)線程對(duì)象,使其進(jìn)入就緒狀態(tài)
    sleep()方法用來使線程進(jìn)入睡眠狀態(tài)
    suspend()方法用來使線程掛起,需要通過resume()方法使其重新啟動(dòng),不推薦使用。
注:線程的生命周期及五種基本狀態(tài):

關(guān)于Java中線程的生命周期,首先看一下下面這張較為經(jīng)典的圖:


線程的生命周期
  • Java線程具有五種基本狀態(tài):
  1. 新建狀態(tài)(New):當(dāng)線程對(duì)象創(chuàng)建后,即進(jìn)入了新建狀態(tài),如:
    Thread t = new MyThread();

  2. 就緒狀態(tài)(Runnable):當(dāng)調(diào)用線程對(duì)象的start()方法(t.start();),線程即進(jìn)入就緒狀態(tài)。處于就緒狀態(tài)的線程,只是說明此線程已經(jīng)做好了準(zhǔn)備,隨時(shí)等待CPU調(diào)度執(zhí)行,并不是說執(zhí)行了t.start()此線程立即就會(huì)執(zhí)行;

  3. 運(yùn)行狀態(tài)(Running):當(dāng)CPU開始調(diào)度處于就緒狀態(tài)的線程時(shí),此時(shí)線程才得以真正執(zhí)行,即進(jìn)入到運(yùn)行狀態(tài)。注:就 緒狀態(tài)是進(jìn)入到運(yùn)行狀態(tài)的唯一入口,也就是說,線程要想進(jìn)入運(yùn)行狀態(tài)執(zhí)行,首先必須處于就緒狀態(tài)中;

  4. 阻塞狀態(tài)(Blocked):處于運(yùn)行狀態(tài)中的線程由于某種原因,暫時(shí)放棄對(duì)CPU的使用權(quán),停止執(zhí)行,此時(shí)進(jìn)入阻塞狀態(tài),直到其進(jìn)入到就緒狀態(tài),才 有機(jī)會(huì)再次被CPU調(diào)用以進(jìn)入到運(yùn)行狀態(tài)。根據(jù)阻塞產(chǎn)生的原因不同,阻塞狀態(tài)又可以分為三種:
    1.等待阻塞:運(yùn)行狀態(tài)中的線程執(zhí)行wait()方法,使本線程進(jìn)入到等待阻塞狀態(tài);
    2.同步阻塞 -- 線程在獲取synchronized同步鎖失敗(因?yàn)殒i被其它線程所占用),它會(huì)進(jìn)入同步阻塞狀態(tài);
    3.其他阻塞 -- 通過調(diào)用線程的sleep()join()或發(fā)出了I/O請求時(shí),線程會(huì)進(jìn)入到阻塞狀態(tài)。當(dāng)sleep()狀態(tài)超時(shí)、join()等待線程終止或者超時(shí)、或者I/O處理完畢時(shí),線程重新轉(zhuǎn)入就緒狀態(tài)。

  5. 死亡狀態(tài)(Dead):線程執(zhí)行完了或者因異常退出了run()方法,該線程結(jié)束生命周期。
    引用內(nèi)容鏈接:
    https://www.cnblogs.com/lwbqqyumidi/p/3804883.html

答案:A

十、以下哪些類是線程安全的()

AVector
B.HashMap
C.ArrayList
D.StringBuffer
E.Properties

解析:
java中的線程安全是什么:
  • 就是線程同步的意思,就是當(dāng)一個(gè)程序?qū)σ粋€(gè)線程安全的方法或者語句進(jìn)行訪問的時(shí)候,其他的不能再對(duì)他進(jìn)行操作了,必須等到這次訪問結(jié)束以后才能對(duì)這個(gè)線程安全的方法進(jìn)行訪問
線程安全一般會(huì)涉及到synchronized。
  • 查看源代碼,可以發(fā)現(xiàn)Vector,StringBuffer,Properties許多操作都加了synchronized修飾。

答案:A D E

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,651評(píng)論 18 399
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,790評(píng)論 11 349
  • 轉(zhuǎn)自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帥199207閱讀 8,803評(píng)論 3 93
  • 時(shí)間轉(zhuǎn)眼就過去了,路曜估計(jì)是太忙了,以至于忘記了幫我找那個(gè)齙牙姑娘,我也樂著以為這個(gè)賭約就可以無聲無息的過去...
    貳姑涼閱讀 364評(píng)論 0 0
  • 人,都喜歡折磨自己。 追逐著幸福的羽毛,筋疲力竭遍體鱗傷可是卻因?yàn)樘^用力而讓它越飄越遠(yuǎn)。 我們一直向著光亮奔跑。...
    竹亭落F閱讀 773評(píng)論 1 0

友情鏈接更多精彩內(nèi)容