當前位置:才華齋>IT認證>SUN認證>

2016年java期末考試試題及答案

SUN認證 閱讀(6.49K)

1.請看下列程式碼:

2016年java期末考試試題及答案

class ClassA {}

class ClassB extends ClassA {}

class ClassC extends ClassA {}

public class Test{

public static void main(String[] args) {

ClassA p0 = new ClassA();

ClassB p1 = new ClassB();

ClassC p2 = new ClassC();

ClassA p3 = new ClassB();

ClassA p4 = new ClassC();

<插入程式碼>

}

}

可以在<插入程式碼>處,填入的程式碼正確的是()

A.p0 = p1;

B.p1 =p2;

C.p2 = p4;

D.p2 = (ClassC)p1;

正確答案:A

2.執行下面程式:

public class Foo {

public static void main(String[] args) {

StringBuffer a=new StringBuffer("A");

StringBuffer b=new StringBuffer("B");

operator(a,b);

tln(a+","+b);

}

public static void operator(StringBuffer x,StringBuffer y){

nd(y);

y=x;

}

}

輸出的結果是:()。

A.A,B

B.A,A

C.B,B

,B

正確答案:D

3.下列程式碼的輸出結果是: ()。

public class A {

public void info(){

tln("A info");

}

}

public class B extends A{

public void info(){

tln("B info");

}

public static void main(String[] args) {

B b=new B();

A a=b;

();

}

}

A.B info

A info

B.A info

B info

C.A info

D.B info

正確答案:D

4.下列程式碼執行的結果是()。

public class Base {

public static final String FOO = "foo";

public static void main(String[] args) {

Base b = new Base();

Sub s = new Sub();

t();

t();

t();

t();

t(((Base) s));

}

}

class Sub extends Base {

public static final String FOO = "bar";

}

oofoofoofoo

arfoobarbar

arfoofoofoo

arfoobarfoo

正確答案:D

5.執行下列語句:

int a = 0x9af700; // 00 00 00 10 01 10 10 1111 0111 0000 0000 00

a <<= 2;

變數a的值為:()。

A. 0x26bdc00

B. 0xc6bdc00

C. 0x3fa0000

D. 0x7e02ffff

正確答案:A

6. 下面的程式碼用於對陣列arr實現氣泡排序:【1,2,3,4,5】

for (int i = 0; i < th - 1; i++) {

boolean isSwap = false;

空白處

if (!isSwap)

break;

}

下列選項中,空白處可以填入的程式碼是:()。//每輪比較結束把最小的放在前面

A. for (int j = th - 1; j > i; j--) {

if (arr[j] < arr[j - 1]) {

int temp = arr[j];

arr[j] = arr[j - 1];

arr[j - 1] = temp;

isSwap = true;

}

}

B. for (int j = th - 1; j > 0; j--) {

if (arr[j] < arr[j - 1]) {

int temp = arr[j];

arr[j] = arr[j - 1];

arr[j - 1] = temp;

isSwap = true;

}

}

C. for (int j = i + 1; j< th; j++) {

if (arr[j] < arr[j - 1]) {

int temp = arr[j];

arr[j] = arr[j - 1];

arr[j - 1] = temp;

isSwap = true;

}

}

D. for (int j = i; j< th; j++) {

if (arr[j] < arr[j - 1]) {

int temp = arr[j];

arr[j] = arr[j - 1];

arr[j - 1] = temp;

isSwap = true;

}

}

正確答案:A

7.下列語句建立物件的總個數是:()。

String s=”a”+”b”+”c”+”d”+”e”;

A.1

B.2

C.3

D.4

正確答案:A

8.執行下列程式:

String str = "**oracle***oracle*****oracle***";

String str1 = "oracle";

int index = 0;

while ((index = xOf(str1, index)) != -1) {

t(index+””);

index += th();

}

控制檯輸出的結果是:()。

A.1 10 21

B.2 11 22

C.3 13 23

D.5 13 22

正確答案:B

9. 下列表達式中,可以得到精確結果的是()。

A. double d1 = 3.0 - 2.6; 0.4

B. double d4 = 2.5 * 1.5;

C. double d2 = 30/300;

D. double d3 = 1/2 + 0.5;

正確答案:B

10.類Super及Sub定義如下:

public class Super {

private void f() {

tln("Super.f()");

}

public void g() {

f();

}

public void k() {

f();

}

}

public class Sub extends Super {

private void f() {

tln("Sub.f()");

}

public void k() {

f();

}

}

執行下列語句:

Super obj = new Sub();

obj.g();

obj.k();

輸出的結果是:()。

A. Sub.f()

Sub.f()

B. Sub.f()

Super.f()

C. Super.f()

Sub.f()

D. Super.f()

Super.f()

正確答案:C

11. 下列陣列宣告語句中,錯誤的是:()。

[] arr = new int[8];

[] arr = new int[8]{};

[] arr = {};

[] arr = new int[]{};

正確答案:B

12.執行下列語句:

int num=~3+2; 變數num的值為()。

A.-3

B.3

C.-2

D.-1

正確答案:C

13.請看下列程式碼:

interface Data { public void load(); }

abstract class Info { public abstract void load(); }

下列選項中,能正確使用Data介面和Info類的是()。

ic class Employee extends Info implements Data {

public void load() { /*do something*/ }

}

ic class Employee implements Info extends Data {

public void load() { /*do something*/ }

}

ic class Employee implements Info extends Data {

public void () { /*d something */ }

public void load() { /*do something */ }

}

ic class Employee extends Info implements Data {

public void load() { /*do something */ }

public void () { /*do something*/ }

}

正確答案:A

14.下列程式碼編譯和執行的結果是()。

public class A {

public void start() {

tln("TestA");

}

}

public class B extends A {

public void start() {

tln("TestB");

}

public static void main(String[] args) {

((A) new B())t();

}

}

A.輸出:TestA

B.輸出:TestB

C.輸出:TestA TestB

D.編譯錯誤

正確答案:B

15.類A,B的定義如下:

class A {

private int a = 100;

A() {

t("A()");

tln(a);

}

}

class B extends A {

private int a = 200;

B() {

t("B()");

tln(a);

}

}

執行下面的程式碼:new B();

輸出的結果是:()。

A. A() 100

B() 200

B. A() 200

B() 200

C. B() 200

A() 100

D. B() 200

A() 200

正確答案:A

16.下列程式碼的輸出結果是()

public static void main(String[] args) {

String test = "a1b2c3";

String[] tokens = t("d");

for (String s : tokens)

t(s + " ");

}

A.a b c

B.1 2 3

C.a1b2c3

D.a1 b2 c3

正確答案:A

17. 關於Java執行緒說法錯誤的是()。

A.建立執行緒的有2種方式,方式1是繼承Thread類,方式2是實現 Runnable 介面

B.解決執行緒安全使用問題 synchronized關鍵字,使得同一時間只有一個執行緒執行該關鍵字限定的程式碼段

C.執行緒間通訊所使用的方法有,wait,notify,notifyAll,它們都是 Thread 的方法

執行緒包括5個狀態,執行緒的建立,可執行,執行,阻塞和消亡

正確答案:C

18.下列程式碼的輸出結果是()。

boolean b=true?false:true==true?false:true;//b=tuer?false:false

tln(b);

e

D.空字串

正確答案:B

19.請看下列程式碼編譯和執行的結果是()。

interface DeclareStuff {

public static final int EASY = 3;

void doStuff(int t);// public rabstract

}

public class TestDeclare implements DeclareStuff {

public static void main(String[] args) {

int x = 5;

new TestDeclare()uff(++x);

}

void doStuff(int s) {

s += EASY + ++s;

tln("s=" + s);

}

}

A.s=14

B.s=16

C.s=10

D.編譯失敗

正確答案:D

20. 執行下面的程式:

String[] fileNames = { "", "", "", "","" };

for (String fileName : fileNames) {

if (With("")) {

t(tring(0, fileName

IndexOf(""))+" ");

}

}

控制檯的輸出結果是:()。

A. bcd. cde. efg.

B. bc cd ef

C.

D. bcd cde efg

正確答案:D

21.下列程式碼的作用說法不正確的是:()。

class Card implements alizable{}

A.開啟序列化功能,使得Card類的物件可以儲存到檔案中

B.開啟序列化功能,使得Card類的物件可以在網路上傳輸

C.使得Card類的子類的物件可以被序列化

D.導致Card的子類的物件不可以被反序列化

正確答案:D

22. 執行下列程式碼,輸出為false的是:()。

A. String st1 = "abc";

tln("abc" == st1);

B. String st2 = "abc";

tln(ls(new String("abc")));

C. Integer i = 100; //

tln(100 == i);

D. ArrayList list = new ArrayList();

tln(ains(null));

正確答案:D

23.執行下列程式:

String str = "**java***java*****java*";

String str1 = "java";

int index = 0;

while ((index = xOf(str1, index)) != -1) {

t(index+””);

index += th();

}

控制檯輸出的結果是:()。

A. 1 8 17

B. 2 9 18

C. 5 12 21

D. 6 13 22

正確答案:B

24. 下列程式碼中不能正確獲取到Class類的物件的是:()。

ng sub = "hello";

Class c1 = lass();

s c2 = ;

s c1 = ame ("ger");

on b = new Button();

Class c1 = lass();

Class c2 = uperclass();

正確答案:B

ncoding是一種應用於HTTP協議的編碼方式,字串“你好”基於UTF-8的URLEncoding編碼為: “%E4%BD%A0%E5%A5%BD”

其中E4、BD、A0為字元“你”的UTF-8編碼的十六進位制形式(3個位元組),而E5、A5、BD為字元“好”的UTF-8編碼的十六進位制形式。

下面的程式碼用程式的方式輸出字串“你好”的基於UTF-8的URLEncoding序列:

String msg = "你好";

空白處1

StringBuilder sb = new StringBuilder();

for (int i = 0; i < th; i++) {

空白處2

nd("%")nd(str);

}

tln(ring());

空白處1及空白處2分別應填入的程式碼是()。

A. byte[] bs = hars("utf-8");

和 String str = xString(bs[i]& 0xff)perCase();

B. byte[] bs = ytes("utf-8");

和 String str = xString(bs[i])perCase();

C. byte[] bs = ytes("utf-8");

和 String str = xString(bs[i] & 0xff)perCase();

D. byte[] bs = ytes();

和 String str = xString(bs[i])perCase();

正確答案:C

26.程式執行的結果是()。

public class Test {

String name="Tom";

public Test(String name){

name=name;

}

public static void main(String [] args){

Test t = new Test("Jack");

tln();

}

}

D." "

正確答案:B

27. 下列屬於不合法Java識別符號的是()。

A._avaj

B.5save

D.$80

正確答案:B

28.下列程式碼的輸出結果是()。

public static void main(String[] args) {

Runnable r = new Runnable() {

public void run() {

t("Cat");

}

};

Thread t = new Thread(r) {

public void run() {

t("Dog");

}

};

t();

}

C.沒有任何輸出

D.丟擲執行時異常

正確答案:B

29. 下面關於final說法正確的是:()。

l修飾類時,該類能被繼承。

l修飾方法時,該方法能被重寫。

C.當使用static final 修飾的常量時,將採用編譯期繫結的方式。

D.當使用final和abstract共同修飾一個類時,final應至於abstract之前。

正確答案:C

30. 下面關於final說法錯誤的是:()

A. final修飾類時,該類不能被繼承。

B. final修飾方法時,該方法不能被重寫。

C. 當引用到使用static final 修飾的常量時,將採用編譯期繫結的方式。

D. 當使用final和abstract共同修飾一個類時,final應至於abstract之前。

正確答案:D

31.請看下列程式碼:

public static void main(String[] args) {

<插入程式碼>

tln(s);

}

如果程式輸出的結果是4247,那麼在<插入程式碼>處應該填入程式碼是()。

ng s = "123456789";

s = (s-"123")ace(1,3,"24") - "89";

ngBuffer s = new StringBuffer("123456789");

te(0,3)ace( 1,3, "24")te(4,6);

ngBuffer s = new StringBuffer("123456789");

tring(3,6)te( 1 ,3)rt( 1, "24");

ngBuilder s = new StringBuilder("123456789");

tring(3,6)te( 1 ,2)rt( 1, "24");

正確答案:B

32. 下面關於interface,敘述錯誤的是:()

A.一個interface可以繼承多個interface

B.介面中的方法可以由private修飾

rface中可以定義static final 常量

rface中可以無任何方法定義

正確答案:B

33.分析如下程式碼,輸出結果為()。

public static void main(String[] args) {

int i = 0;

boolean re = false

re = ((++i) + i == 2) ? true : false;

tln("i=" + i + ",re="+re);

}

A.i=1,re=true

B.i=0,re=true

C.i=1,re=false

D.i=0,re=false

正確答案:A

34. 下列陣列宣告語句中,錯誤的是:()。

A. int[] arr = new int[]{};

B. int[] arr = new int[];

C. int[] arr = {};

D. int[][] arr = new int[2][]

正確答案:B

35.下列程式碼的執行結果是()

public static void main(String[] args) {

String str = "420";

str += 42;

t(str);

}

A.42

B.420

C.462

D.42042

正確答案:D

36.所謂“水仙花”數是一個整數等於各位數字立方的和,例如:153 = 1*1*1+5*5*5+3*3*3,下面的.程式用於輸出2~1000內的水仙花數:

for (int n = 2; n <= 1000; n++) {

空白處

if (s == n) {

tln(n);

}

}

下列選項中,空白處可以填入的程式碼是:()。

A. int s = 0, n1 = n;

while (n1 > 0) {

int t = n1 % 10;

s += t * t * t;

n1 /= 10;

}

B. int s = 0, n1 = n;

while (n1 > 0) {

int t = n1 / 10;

s+= t * t * t;

n1 %= 10;

}

C. int s = 0;

for(int n1 = n; n1>0; n1 /= 10) {

int t = n1%10;

s += t * t * t;

}

s = 0;

for(int n1 = n; n1>0; n1 %= 10) {

int t = n1 / 10;

s += t * t * t;

}

正確答案:AC

37. 下面的方法屬於StringBuffer的是:()。

A. size

B. insert

C. delete

D. length

正確答案:BCD

38.類Super的定義如下:

class A {

protected void f() throws IOException {

………

}

}

下列程式碼段中,沒有編譯錯誤的是:()。

A. class B extends A {

public void f() throws Exception {

………

}

}

B. class B extends A {

public void g() throws IOException {

f();

}

}

C. class B extends A {

public void g() {

try {

f();

………

}catch(Exception e) {

………

}catch(IOException e1) {

………

}

}

}

D. class B extends A {

public void g() {

try {

f();

}catch(IOException e) {

throw new RuntimeException(e);

}

}

}

正確答案:BD

39.檢視如下程式碼:

public class Foo {

public void method(String str,int age){}

}

下列選項中,和 Foo 類中 method 方法過載的方法是()。

ic int method(String str,int age){}

B. public void method(int year,String s){}

C. public int method(int year,String s){}

D. public int method(String str){}

正確答案:BCD

40. 下列關於Java的說法,錯誤的是()。

A. Java語言是純粹的面向物件的語言。

B. Java程式的執行必須有Java虛擬機器(JVM)的支援。

C. Java語言支援指標。

D. Java語言支援多重繼承。

正確答案:CD

41.矩陣是指縱橫排列的資料表格,最早來自於方程組的係數及常數所構成的方陣,如:

a11 a12... a1n

a21 a22... a2n

... ... ...

am1 am2... amn

矩陣乘積規則示例如下:

兩個矩陣a和b可以相乘的條件是a矩陣的列數和b矩陣的行數相同,例如:

假設矩陣a為“2行3列”:

a11 a12 a13

a21 a22 a23

矩陣b為“3行2列”:

b11 b12

b21 b22

b31 b32

a和b可以相乘,乘積矩陣為:

a11*b11+a12*b21+a13*b31 a11*b12+a12*b22+a13*b32

a21*b11+a22*b21+a23*b31 a21*b12+a22*b22+a23*b32

Matrix類的定義如下:

public class Matrix {

private double[][] data;

private int rows;

private int cols;

public Matrix(int rows, int cols) {

if (rows <= 0 || cols <= 0)

throw new IllegalArgumentException("");

= rows;

= cols;

data = new double[rows][cols];

}

public Matrix(int rows, int cols, String line) {

if (rows <= 0 || cols <= 0 || line == null)

throw new IllegalArgumentException("");

String[] dataStr = t(",");

if ( 空白處1 ) {

throw new IllegalArgumentException("");

}

= rows;

= cols;

data = new double[rows][cols];

for (int i = 0; i < th; i++) {

( 空白處2 )

}

}

public Matrix mul(Matrix ma) {

if ( 空白處3 ) {

throw new IllegalArgumentException();

}

Matrix mc = new Matrix(rows, );

for (int i = 0; i < ows(); i++) {

for (int j = 0; j < ols(); j++) {

for ( 空白處4 ) {

空白處5

}

}

}

return mc;

}

public int getRows() {

return rows;

}

public int getCols() {

return cols;

}

public String toString() {

StringBuilder sb = new StringBuilder();

for (int i = 0; i < rows; i++) {

for (int j = 0; j < cols - 1; j++) {

nd(data[i][j])nd(",");

}

nd(data[i][cols - 1])nd("n");

}

return ring();

}

}

(1). 空白處1()

A. th != (rows-1) * (cols-1)

B. th != (rows-1) * cols

C. th != rows * cols

D. th != rows * (cols-1)

正確答案:C

(2). 空白處2()

A. data[i % cols][i / cols] = eDouble(dataStr[i]);

B. data[i/cols][i % cols] = eDouble(dataStr[i]);

C. data[i/ rows][i % rows] = eDouble(dataStr[i]);

D. data[i % rows][i /rows] = eDouble(dataStr[i]);

正確答案:B

(3). 空白處3()

A. cols !=

B. rows !=

C. rows !=

D. cols !=

正確答案:D

(4). 空白處4()

A. int k = 0; k < cols; k++

B. int k = 0; k

C. int k = 0; k

D. int k = 0; k

正確答案:A

(5). 空白處5()

A. [i][j] += data[k][j] * [i][k];

B. [i][j] += data[k][i] * [j][k];

C. [i][j] += data[j][k] * [k][i];

D. [i][j] += data[i][k] * [k][j];

正確答案:D

42.下面的程式用於從54張撲克牌中,隨機選出13張不同的撲克牌。

public static void main(String[] args) {

String[] cards = { "紅桃3", "紅桃4", "紅桃5", "紅桃6", "紅桃7",

"紅桃8","紅桃9","紅桃10","紅桃J","紅桃Q","紅桃K","紅桃A",

"黑桃3", "黑桃4", "黑桃5", "黑桃6", "黑桃7","黑桃8","黑桃9",

"黑桃10","黑桃J","黑桃Q","黑桃K","黑桃A","紅方塊3", "紅方塊4",

"紅方塊5", "紅方塊6", "紅方塊7","紅方塊8","紅方塊9","紅方塊10",

"紅方塊J","紅方塊Q","紅方塊K","紅方塊A","黑方塊3", "黑方塊4",

"黑方塊5", "黑方塊6", "黑方塊7","黑方塊8","黑方塊9","黑方塊10",

"黑方塊J","黑方塊Q","黑方塊K","黑方塊A"};

int len=th;

空白處1

while (true) {

Random rd = new Random();

空白處2

(cards[index]);

if ( 空白處3 == 13) {

break;

}

}

空白處4

while ( 空白處5 ) {

tln(());

}

}

(1).下列選項中,能填入空白處1的程式碼是( )

cardThirteen = new HashSet();

cardThirteen = new Set();

cardThirteen = new List();

cardThirteen = new ArrayList();

正確答案:A

(2).下列選項中,能填入空白處2的程式碼是( )

x = Int();

x = Int(5);

x = Int(len + 1);

x = Int(len);

正確答案:D

(3).下列選項中,能填入空白處3的程式碼是( )

th

th()

()

正確答案:D

(4).下列選項中,能填入空白處4的程式碼是( )

ator it = ator();

ator it = ();

ators it = ator();

ators it = s();

正確答案:A

(5).下列選項中,能填入空白處5的程式碼是( )

ext()

exts ()

()

s()

正確答案:A