Java日常練習題,每天進步一點點(44)

1、AWT 中用來表示文本框的類是 ( )

正確答案: A

TextField

Menu

Label

List

題解:
A、TextField表示文本框
B、Menu表示下拉菜單
C、Label表示標簽
D、List表示列表框

2、以下表達式的類型和值是什麼?(註意整數除法)()

-5 + 1/4 + 2*-3 + 5.0

正確答案: D

int -3

int -4

double -5.5

double -6.0

題解:
在Java中5.0是double類型,所以結果的數據類型為double。因為1/4結果為0,所以結果為-6.0

3、以下代碼段執行後的輸出結果為

public class Test {

public static void main(String args[]) {

int x = -5;

int y = -12;

System.out.println(y % x);

}

}

正確答案: D

-1

2

1

-2

題解:
無論是正數還是負數,在取餘運算時都有:被除數=商×除數+餘數,所以-12=2×(-5)+(-2),-12是被除數,-5是除數,2是商,餘數是-2。

4、Java的跨平臺特性是指它的源代碼可以在多個平臺運行。()

正確答案: B

正確

錯誤

題解:
Java的跨平臺特性是因為JVM的存在, 它可以執行.class字節碼文件,而不是.java源代碼

5、方法通常存儲在進程中的哪一區()

正確答案: D

堆區

棧區

全局區

方法區

題解:
Java運行時的數據區包括:(其中前兩個是線程共享的)
1.方法區(Method Area) 存儲已被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯後的代碼等數據
2.堆(Heap) 存放對象實例,幾乎所有對象實例都在這裡分配內存
3.虛擬機棧(VM Stack) 描述的是Java方法執行的內存模型:每個方法在執行的同時會創建一個Stack Frame(方法運行時的基礎數據結構)用於存儲局部變量表、操作數棧、動態連接、方法出口等信息
4.本地方法棧(Native Method Stack) 與虛擬機棧瞭類似,不過則為虛擬機使用的到的Native方法服務。(有的虛擬機譬如Sun HotSpot虛擬機直接把本地方法棧和虛擬機棧合二為一)
5.程序計數器(Program Counter Register) 可看作當前線程所執行的字節碼的行號的標識器

6、默認RMI采用的是什麼通信協議?

正確答案: C

HTTP

UDP/IP

TCP/IP

Multicast

題解:
RMI采用的是TCP/IP協議
RMI(Remote Method Invocation)遠程方法調用是一種計算機之間利用遠程對象互相調用實現雙方通訊的一種通訊機制。
TCP/IP是遠程通訊的主要手段

7、J2EE中,當把來自客戶機的HTTP請求委托給servlet時,會調用HttpServlet的( )方法

正確答案: A

service

doget

dopost

init

題解:
首先Servlet通過HttpRequest對象封裝http請求信息,然後Servlet容器調用HttpServlet的service方法,它會根據用戶請求的方式調用具體的方法。如果請求方式是Get則調用doGet方法,如果請求方式是POST則調用doPost方法,執行完後,通過HttpRespones對象生成相應數據相應客戶的請求,一般要重寫doGet方法和doPost方法

8、String str = new String(“abc”),“abc”在內存中是怎麼分配的?

正確答案: A C

字符串常量區

寄存器

題解:
當你new String(“abc”)時,其實會先在字符串常量區生成一個abc的對象,然後new String()時會在堆中分配空間,然後此時會把字符串常量區中abc復制一個給堆中的String,故abc應該在堆中和字符串常量區

9、在Java語言中,下列關於字符集編碼(Character set encoding)和國際化(i18n)的問題,哪些是正確的?

正確答案: C D

每個中文字符占用2個字節,每個英文字符占用1個字節

假設數據庫中的字符是以GBK編碼的,那麼顯示數據庫數據的網頁也必須是GBK編碼的。

Java的char類型,通常以UTF-16 Big Endian的方式保存一個字符。

實現國際化應用常用的手段是利用ResourceBundle類

題解:
A 顯然是錯誤的,Java一律采用Unicode編碼方式,每個字符無論中文還是英文字符都占用2個字節。
B 也是不正確的,不同的編碼之間是可以轉換的,通常流程如下:
將字符串S以其自身編碼方式分解為字節數組,再將字節數組以你想要輸出的編碼方式重新編碼為字符串。
例:String newUTF8Str = new String(oldGBKStr.getBytes(“GBK”), “UTF8”);
C 是正確的。Java虛擬機中通常使用UTF-16的方式保存一個字符
D 也是正確的。ResourceBundle能夠依據Local的不同,選擇性的讀取與Local對應後綴的properties文件,以達到國際化的目的。

10、關於volatile關鍵字,下列描述不正確的是?

正確答案: B D

用volatile修飾的變量,每次更新對其他線程都是立即可見的。

對volatile變量的操作是原子性的。

對volatile變量的操作不會造成阻塞。

不依賴其他鎖機制,多線程環境下的計數器可用volatile實現。

題解:
所謂 volatile的措施,就是
1.每次從內存中取值,不從緩存中什麼的拿值。這就保證瞭用 volatile修飾的共享變量,每次的更新對於其他線程都是可見的。
2.volatile保證瞭其他線程的立即可見性,就沒有保證原子性。
3.由於有些時候對 volatile的操作,不會被保存,說明不會造成阻塞。不可用與多線程環境下的計數器。
此外,volatile 變量不會像鎖那樣造成線程阻塞,因此也很少造成可伸縮性問題。

答案匯總:

1、正確答案: A

2、正確答案: D

3、正確答案: D

4、正確答案: B

5、正確答案: D

6、正確答案: C

7、正確答案: A

8、正確答案: A C

9、正確答案: C D

10、正確答案: B D

總結

本篇文章就到這裡瞭,希望能給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: