1、靜態內部類不可以直接訪問外圍類的非靜態數據,而非靜態內部類可以直接訪問外圍類的數據,包括私有數據。( )正確答案: A
A、正確
B、錯誤
2、在類Tester中定義方法如下,public double max(int x, int y) { // 省略 },則在該類中定義如下哪個方法頭是對上述方法的重載(Overload)?正確答案: B
A.public int max(int a, int b) {}
B.public int max(double a, double b) {}
C.public double max(int x, int y) {}
D.private double max(int a, int b) {}
解析:
重載:同名不同參,返回值無關。
3、以下Java程序運行的結果是:
public class Tester{ public static void main(String[] args){ Integer var1=new Integer(1); Integer var2=var1; doSomething(var2); System.out.print(var1.intValue()); System.out.print(var1==var2); } public static void doSomething(Integer integer){ integer=new Integer(2); } }
正確答案: A
A.1true
B.2true
C.1false
D.2false
解析:
4、關於下面的程序Test.java說法正確的是( )。
public class Test { static String x="1"; static int y=1; public static void main(String args[]) { static int z=2; System.out.println(x+y+z); } }
正確答案: D
A.3
B.112
C.13
D.程序有編譯錯誤
解析:
5、@SuppressWarnings(“deprecation”)的功能是什么?正確答案: A
A.屏蔽不贊同使用的類和方法的警告
B.屏蔽在強制類型轉換的時候編譯器給出的警告
C.關閉所有警告信息
D.當在可序列化的類上缺少serialVersionUID定義的警告
解析:
6、對於構造方法,下列敘述正確的是( )。正確答案: A C D
A.構造方法的優先級一般比代碼塊低。
B.構造方法的返回類型只能是void型。
C.構造方法的主要作用是完成對類的對象的初始化工作。
D.一般在創建新對象時,系統會自動調用構造方法。
解析:
7、程序中常采用變量表示數據,變量具有名、地址、值、作用域、生存期等屬性。關於變量的敘述,()是正確的。正確答案: A C D
A.根據作用域規則,在函數中定義的變量只能在函數中引用
B.在函數中定義的變量,其生存期為整個程序執行期間
C.在函數中定義的變量不能與其所在函數的形參同名
D.在函數中定義的變量,其存儲單元在內存的棧區
解析:
在函數中,不管中間隔了幾層,都不允許定義一個與形參同名的變量
8、final、finally和finalize的區別中,下述說法正確的有?正確答案: A B
A.final用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
B.finally是異常處理語句結構的一部分,表示總是執行。
C.finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源的回收,例如關閉文件等。
D.引用變量被final修飾之后,不能再指向其他對象,它指向的對象的內容也是不可變的。
解析:
finalize方法一個對象只能執行一次,只能在第一次進入被回收的隊列,而且對象所屬於的類重寫了finalize方法才會被執行。
使用 final 關鍵字修飾一個變量時,引用變量不能變,引用變量所指向的對象中的內容還是可以改變的。
9、關於下面一段代碼,以下說法正確的是: () 正確答案: A C
public class Test { private synchronized void a() { } private void b() { synchronized (this) { } } private synchronized static void c() { } private void d() { synchronized (Test.class) { } } }
A.同一個對象,分別調用方法a和b,鎖住的是同一個對象
B.同一個對象,分別調用方法a和c,鎖住的是同一個對象
C.同一個對象,分別調用方法b和c,鎖住的不是同一個對象
D.同一個對象,分別調用方法a、b、c,鎖住的不是同一個對象
解析:
- 同步代碼塊(synchronized(this),synchronized(類實例對象),鎖是小括號()中的實例對象)
- 同步非靜態方法(synchronized method),鎖的是當前對象的實例對象
- 同步代碼塊(synchronized(類.class)),鎖是最小括號 () 中的類對象(Class對象)
- 同步靜態方法(synchronized static method),鎖是當前對象的類對象(Class 對象)
10、對於下面這段代碼,以下說法正確的是:正確答案: C
public class Test { public int x; public static void main(String []args) { System. out. println("Value is" + x); } }
A.程序會打出 "Value is 0"
B.程序會拋出 NullPointerException
C.非靜態變量不能夠被靜態方法引用
D.編譯器會拋出 "possible reference before assignment"的錯誤
解析:
當類加載時,static靜態方法隨着類加載而初始化,此時實例對象還未被創建,但是非靜態成員變量需要等到實例對象創建才會被初始化,故無法被引用。
11、哪個類可用於處理 Unicode? 正確答案: A
A.InputStreamReader
B.BufferedReader
C.Writer
D.PipedInputStream
解析:
InputStreamReader是將字節流轉換成字符流供我們使用。同時InputStreamReader可以指定字符集的編碼。
InputStreamReader(InputStream in, String charsetName) : 創建使用指定字符集的 InputStreamReader。
12、說明輸出結果。正確答案: C
import java.util.Date; public class SuperTest extends Date{ private static final long serialVersionUID = 1L; private void test(){ System.out.println(super.getClass().getName()); } public static void main(String[]args){ new SuperTest().test(); } }
A.SuperTest
B.SuperTest.class
C.test.SuperTest
D.test.SuperTest.class
解析:
super.getClass().getName() 返回:包名+類名
13、下面的代碼輸出的結果為正確答案: A
public class Test1 { static int cnt = 6; static { cnt += 9; } public static void main(String[] args) { System.out.println("cnt =" + cnt); } static { cnt /= 3; } }
A.cnt=5
B.cnt=2
C.cnt=3
D.cnt=6
解析:
本題考查初始化順序:
14、一個容器類數據結構,讀寫平均,使用鎖機制保證線程安全。如果要綜合提高該數據結構的訪問性能,最好的辦法是______。
正確答案: C
A.只對寫操作加鎖,不對讀操作加鎖
B.讀操作不加鎖,采用copyOnWrite的方式實現寫操作
C.分區段加鎖
D.無法做到
解析:
15、以下哪些繼承自 Collection 接口()正確答案: A B
A.List
B.Set
C.Map
D.Array
解析:
16、以下代碼可以使用的修飾符是:()正確答案: A B D
public interface Status { /*INSERT CODE HERE*/ int MY_VALUE=10; }
A.final
B.static
C.abstract
D.public
解析:
接口中字段的修飾符:public static final(默認不寫)
接口中方法的修飾符:public abstract(默認不寫)
17、Java類Demo中存在方法func1、func2、func3和func4,請問該方法中,哪些是不合法的定義?( ) 正確答案: A D
public class Demo{ float func1() { int i=1; return; } float func2() { short i=2; return i; } float func3() { long i=3; return i; } float func4() { double i=4; return i; } }
A.func1
B.func2
C.func3
D.func4
解析:
自動轉換按從低到高的順序轉換。不同類型數據間的優先關系如下:
byte,short,char -> int -> long -> float -> double
運算中,不同類型的數據先轉化為同一類型,然后進行運算,轉換規則如下:
操作數 1 類型 |
操作數 2 類型 |
轉換后的類型 |
byte 、 short 、 char |
int |
int |
byte 、 short 、 char 、 int |
long |
long |
byte 、 short 、 char 、 int 、 long |
float |
float |
byte 、 short 、 char 、 int 、 long 、 float |
double |
double |
18、以下各類中哪幾個是線程安全的?( ) 正確答案: B C D
A.ArrayList
B.Vector
C.Hashtable
D.Stack
解析:
Stack繼承了Vector,所以也是線程安全的