Java基礎筆試練習(九)

Java基礎筆試練習(九)

1.下面所示的java代碼,運行時,會產生()類型的異常 ?

int Arry_a[] = new int[10];
System.out.println(Arry_a[10]);

A.ArithmeticException
B.NullPointException
C.IOException
D.ArrayIndexOutOfBoundsExceptionjava

答案:
Dgit

解析:
定義的數組長度爲10,角標即爲0-9,訪問數組角標10會出現數組角標越界異常github

2.下面關於繼承的描述正確的是?

A.在Java中只容許單一繼承
B.在Java中一個類只能實現一個接口
C.在Java中一個類不能同時繼承一個類和實現一個接口
D.Java的單一繼承使代碼不可靠面試

答案:
A編程

解析:
數組

3. Java 源程序文件的擴展名爲()

A..java
B..class
C..exe
D..jar安全

答案:
A微信

解析:
數據結構

4.Java 語言用如下哪一個類來把基本類型數據封裝爲對象()

A.包裝類
B.Class
C.Math
D.Objectjvm

答案:
A

解析:

5. 下列代碼的執行結果是()

public class Test {
    public static int a = 1;
    public static void main(String[] args) {
        int a = 10;
        a++; Test.a++;
        Test t=new Test();
        System.out.println("a=" + a + " t.a=" + t.a);
    }

}

A.a=10 t.a=3
B.a=11 t.a=2
C.a=12 t.a=1
D.a=11 t.a=1

答案:
B

解析:
值爲1的a屬於類變量也叫做成員變量,值爲10的a是局部變量 首先a++時就近原則,用局部變量10來加,Text.a直接用類名調用成員變量的狀況,只能是static 修飾的成員變量1來加,而後又實例化了對象,在輸出中第一個a= 用就近原則輸出11,第二個t.a 對象只能調用類變量輸出2

6.下面有關java classloader說法錯誤的是?

A.Java默認提供的三個ClassLoader是BootStrap ClassLoader,Extension ClassLoader,App ClassLoader
B.ClassLoader使用的是雙親委託模型來搜索類的
C.JVM在斷定兩個class是否相同時,只用判斷類名相同便可,和類加載器無關
D.ClassLoader就是用來動態加載class文件到內存當中用的

答案:
C

解析:
JVM在斷定兩個class是否相同時,不只要判斷兩個類名是否相同,並且要判斷是否由同一個類加載器實例加載的。

7.如下那個數據結構是適用於"數據必須以相反的順序存儲而後檢索" ? ()

A.Stack
B.Queue
C.List
D.Link List

答案:
A

解析:
棧-先進後出(比喻:坐電梯) 隊列-先進先出(水管) list-鏈表(怎麼存就怎麼取)

8. 在 main() 方法中給出的整型數組,若是將其寫到一個文件中,須要( )。

A.System.out.print (buffer[i]);
B.DataOutputStream dout = new DataOutputStream(new FileOutputStream(this.filename));
C.DataInputStream din = new DataInputStream(new FileInputStream(this.filename));。
D.System.in.read(buffer)。

答案:
B

解析:
input和output指的是對於程序而言。input是從文件讀取進來,output是輸出到文件。

9.Please write the output result 。

public class Test
{
     public static void changeStr(String str)
     {
         str = "welcome";
     }
     public static void main(String[] args)
     {
         String str = "1234";
         changeStr(str);
         System.out.println(str);
     }
}

A.1234
B.welcome
C.空
D.不肯定

答案:
A

解析:
string的值是不可改變的,全部試圖更改String的行爲都會建立一個新的String.

10.關於String,StringBuilder以及StringBuffer,描述錯誤的是()

A.對String對象的任何改變都不影響到原對象,相關的任何change操做都會生成新的對象
B.StringBuffer是線程安全
C.StringBuilder是線程安全
D.能夠修改StringBuilder和StringBuffer的內容

答案:
C

解析:
A,java中的字符串存儲在字符串常量區,不會改變,發生改變是會新建立一個對象
B,StringBuffer是線程安全的StringBuilder
C,StringBuilder跟StringBuffer功能相同,區別是StringBuilder不是線程安全的
D,StringBuilder和StringBuffer底層都是以字符數組存放的,能夠修改內容

11.如下哪一個不屬於JVM堆內存中的區域()?

A.survivor區
B.常量池
C.eden區
D.old區

答案:
B

解析:
jvm堆分爲:新生代(通常是一個Eden區,兩個Survivor區),老年代(old區)。
常量池屬於 PermGen(方法區)

12.運行下面代碼,輸出的結果是

class A {
    public A() {
        
System.out.println("class A");
    }
    {
System.out.println("I'm A class"); }
    static {
System.out.println("class A static"); }
}
public class B extends A {
    public B() {
        
System.out.println("class B");
    }
    {
System.out.println("I'm B class"); }
    static {
System.out.println("class B static"); }
    
    public static
void main(String[] args) {
new B();
}

A.

class A static 
class B static    I'm A class     
class A    I'm B class  
class B

B.

class A static  I'm A class   
class A    class B static 
I'm B class  class B

C.

class A static    class B static 
class A    I'm A class      class B      
I'm B class

D.

class A static   class A  I'm A
class    class B static     
class B I'm B class

答案:
A

解析:
①父類靜態變量和靜態代碼塊(按照聲明順序);
②子類靜態變量和靜態代碼塊(按照聲明順序);
③父類成員變量和代碼塊(按照聲明順序);
④父類構造器;
⑤子類成員變量和代碼塊(按照聲明順序);
⑥子類構造器。

13.下列語句正確的是:?

A.形式參數可被字段修飾符修飾
B.形式參數不能夠是對象
C.形式參數爲方法被調用時真正被傳遞的參數
D.形式參數可被視爲local variable

答案:
D

解析:

14.如下程序輸出結果是?

String str =
"";
System.out.print(str.split(",").length);

A.0
B.1
C.出現異常

答案:
B

解析:

15.public class contained in a Java program file must have the same name as the file, except for the extension ".java".

A.FALSE
B.TRUE

答案:
A

解析:
題目的意思是:除去擴展名.java的部分,包含在java文件裏的Java裏的公共類必須與文件的名字相同。
可是公共的內部類是不須要和文件的名字相同的。

16.其中"c.getDeclaredMethods"的做用是:

import java.lang.reflect.Method;
public class DumpMethods{
    public static void main(String[] args) {
    try {
        Class c=Class.forName(args[0]);
        Method m[]=c.getDeclaredMethods();
        for (int i = 0; i < m.length; i++) {
            System.out.println(m[i].toString());
        }
    } catch (Throwable e) {
        System.err.println(e);
    }
    }
}

A.取得類的公有方法對象
B.取得類的全部公有方法名稱
C.取得類的全部方法對象
D.選項都不正確

答案:
D

解析:
public Method[] getMethods()返回某個類的全部公用(public)方法包括其繼承類的公用方法,包括它所實現接口的方法。
public Method[] getDeclaredMethods()對象表示的類或接口聲明的全部方法,包括公共、保護、默認(包)訪問和私有方法,但不包括繼承的方法。包括它所實現接口的方法。

17.運行代碼,輸出的結果是()

public class P {
public static int abc = 123;
static{
System.out.println("P is init");
}
}
public class S extends P {
static{
System.out.println("S is init");
}
}
public class Test {
public static void main(String[] args) {
System.out.println(S.abc);
}
}

A.P is init 123
B.S is init P is init 123
C.P is init S is init 123
D.S is init 123

答案:
A

解析:
屬於被動引用不會出發子類初始化
1.子類引用父類的靜態字段,只會觸發子類的加載、父類的初始化,不會致使子類初始化
2.經過數組定義來引用類,不會觸發此類的初始化
3.常量在編譯階段會進行常量優化,將常量存入調用類的常量池中, 本質上並無直接引用到定義常量的類,所以不會觸發定義常量的類的初始化。

18.java中Hashtable, Vector, TreeSet, LinkedList哪些線程是安全的?

A.Hashtable
B.Vector
C.TreeSet
D.LinkedList

答案:
AB

解析:
HashMap是線程安全的HashMap
Vector是線程安全的ArrayList
TreeSet和LinkedList都不是線程安全的

19.下面哪些賦值語句是正確的()

A.long test=012
B.float f=-412
C.int other =(int)true
D.double d=0x12345678
E.byte b=128

答案:
A B D

解析:
A和B中long和float,正常定義須要加l和f,可是long和float屬於基本類型,會進行轉化,因此不會報出異常。AB正確
boolean類型不能和任何類型進行轉換,會報出類型異常錯誤。因此C錯。
D選項能夠這樣定義,D正確。
E選項中,byte的取值範圍是-128—127。報出異常: cannot convert from int to byte.因此E選項錯誤。

20.Thread. sleep()是否會拋出checked exception?

A.會
B.不會

答案:
A

解析:
Thread.sleep() 和 Object.wait(),均可以拋出 InterruptedException。這個異常是不能忽略的,由於它是一個檢查異常(checked exception)

推薦

Java筆試內容集合 持續更新中....

文末

歡迎關注我的微信公衆號:Coder編程
獲取最新原創技術文章和免費學習資料,更有大量精品思惟導圖、面試資料、PMP備考資料等你來領,方便你隨時隨地學習技術知識!

文章收錄至
Github: https://github.com/CoderMerlin/coder-programming
Gitee: https://gitee.com/573059382/coder-programming
歡迎關注並star~
微信公衆號

相關文章
相關標籤/搜索