【選擇題】
【D】01.下列Java程式的執行結果為何? (A)三個數字不相等三個數字不相等 (B)三個數字相等三個數字相等 (C)三個數字不相等三個數字相等 (D)三個數字相等三個數字不相等。[109地方四等電子]
class A {
public void
op(int a, int b, int c) {
System.out.println("三個數字不相等");
}
public void
op(double a, int b, int c) {
System.out.println("三個數字相等");
}
public static
void main(String[] args) {
A demo = new
A();
demo.op(3.0,
3, 4); → 三個數字相等
demo.op(3,
3, 3); → 三個數字不相等
}
}
【C】02.下列對於C++與Java的比較何者錯誤? (A)兩者都支援exception handling (B)兩者都支援generic programming (C)兩者都支援operator overloading (D)兩者都支援function overloading。[109身心四等]
運算子多載(operator overloading)是多型的一種。運算子(+、=、==)被當作多型函式。C++支援,Java和C不支援。
【B】03.請問下列Java程式的執行結果為何者? (A)Test1 (B)Test1
Test2 (C)Test2 (D)Test2 Test1。[109身心四等]
class B { → 父類別
public void show Message() {
System.out.println("Test1"); → 輸出Test1
}
}
class C extends B { → 子類別
public void showMessage() {
super.showMessage();
System.out.println("Test2"); → 輸出Test2
}
}
class A {
public static void main(String[]args) {
C test = new C();
test.showMessage();
}
}
【C】04.有關例外(exception)處理,下列敘述何者錯誤? (A)當例外發生時,處理器會在執行引發例外的指令的過程中暫時停止,由作業系統或使用者定義的例外處理函式查看例外原因,並做適當的處理 (B)當例外發生時,處理器會利用不同的暫存器來記錄例外的原因與保存肇因指令的位址,以方便作業系統進行後續處理 (C)當例外如:未定義的指令發生時,作業系統會試著排除問題,以確保該程式可以繼續執行,不可以終止程式執行 (D)處理不精確的例外(imprecise exceptions)時,需要作業系統的協助以精確判斷那一道指令造成例外。[109普考資處]
當執行過程中發生例外時,會按照事先設計的程式碼來處理例外,程式也能正常的繼續執行。
【D】05.在Java程式中,若子類別(Subclass)的方法(Method)與父類別(Superclass)的方法具有相同的方法名稱、參數(Parameter)數量、參數型態(Type)、以及回傳(Return)型態,僅方法內部實作不同,則稱為下列物件導向程式的何種設計方式? (A)複製(Copy) (B)委派(Delegation) (C)多載(Overloading) (D)覆寫(Overriding)。[109普考資處]
Java的覆寫:子類別繼承父類別時,方法名稱、參數型態與數量、回傳值的資料型態都必須相同,只有改寫方法內容。
【A】06.下列的Java語言程式執行後之輸出為何? (A)16 (B)20 (C)74
(D)80。[109普考電子]
Import java.lang.*;
Import java.util.*;
class test
{
public static
void main(String argv[])
{
StringBuilder
sb = new StringBuilder();
StringTokenizer st;
for (int i = 0;
i < 5; i++)
if ((i
& 0x00000001) == 0)
sb.append("This is a test");
else
sb.append("That is a pencil");
st = new
StringTokenizer(sb.toString(), "ts");
System.out.println(st.countTokens());
}
}
執行結果String:This is a testThat is a
pencilThis is a testThat is a pencilThis is a test
countTokens():String被Tokenizer分成16段
【A】07.若執行以下的Java程式碼,則螢幕上的輸出數字依序為何? (A)16,26,36 (B)18,28,38 (C)23,26,29 (D)32,35,38。[109關務四等]
public class Array3D{
public static
void main(String[] args){
int[][][]
array = {
{{11,12,13}, {14,15,16}, {17,18,19}},
{{21,22,23}, {24,25,26}, {27,28,29}},
{{31,32,33}, {34,35,36}, {37,38,39}},
};
for (int i =
0; i < array.length; i++){
System.out.println(array[i][1][2]);
}
}
}
[0][1][2]=16,[1][1][2]=26,[3][1][2]=36。
【C】08.關於Java程式語言之敘述,下列何者正確? (A)Java支援如同C++程式語言的多重繼承 (B)在Java中,可直接寫程序,而不用定義任何類別 (C)在Java中,一個應用程式是一堆類別與這些類別實例的集合 (D)Java程式以直譯器(interpreter)執行,只允許單一執行緒。[109鐵路員級]
(A)移除C++的運算子重載和多重繼承特性,用介面取代。(B)從定義類別出發,再定義靜態方法(static method)。(D)將原始碼編譯成位元組碼,再依賴不同平台的虛擬機器來解釋執行位元組碼,具有「一次編寫,到處執行」的跨平台特性。
【B】09.在Java語言中類別(class)與介面(interface)中關於擴充(extend)的描述,下列何者正確? (A)一個類別無法擴充多重介面 (B)一個類別無法擴充多重類別 (C)一個介面無法擴充多重介面 (D)一個介面無法擴充多重類別。[110身心五等]
C++支援多重繼承(一個類別擁有多個父類別稱為多重繼承),但Java不直接支援多重繼承,必須透過介面來完成。
【D】10.若執行下列的Java程式碼,則螢幕上輸出的英文字母依序為何? (A)p,c,c (B)p,c,p (C)p,p,c,p (D)p,p,c,p,c。[110身心四等]
Class Parent{
Parent(){
System.out.println('p');
}
}
Class Child extends Parent{
Child(){
System.out.println('c');
}
}
Public class ClassTest{
Public static
void main(String[] args){
Parent p =
new Parent(); → 呼叫自身,印出''p''
Child c =
new Child(); → 先呼叫Parent,印出''p'',再呼叫自身,印出''c'
Parent x =
new Child();
→ 先呼叫Parent(); 印出"p",再呼叫自身,印出''c''
}
}
【D】11.在Java程式設計語言中,那個資料型態不是一個原始型態(primitive type)? (A)boolean (B)int
(C)double (D)string。[110國安五等]
Java資料型態的基本類型:boolean、byte、char、double、float、int、long、null、short。
【B】12.在Java程式語言中,下列資料型態轉換何者可能造成資訊的遺失(Information Loss)? (A)由char資料型態轉換為float資料型態 (B)由double資料型態轉換為long資料型態 (C)由float資料型態轉換為double資料型態 (D)由int資料型態轉換為long資料型態。[110關務四等]
由浮點數型態(double)轉為整數型態(long),小數部分會被捨去,如:12345.678(double)→12345(long)。
【C】13.若執行下列的Java程式碼,則螢幕上輸出的結果依序為何? (A)false,false,false (B)false,true,false (C)true,true,false (D)true,true,true。[110關務四等]
Public class EqualTest{
Public static
void main(String[] args){
Integer a =
new Integer(10);
String b =
"Java";
String c =
new String("Language");
System.out.println(a == 10);
System.out.println(b == "Java");
System.out.println(c == "Language");
}
}
在Java中,使用equals()比較兩個字串的實質字元序列。
在c中,使用==會是false。
【A】14.具有名稱的方法函式,若決定其實際執行的程式碼,在程式運行(runtime)時才決定,而不是在編譯(compile time)時決定,這種方式稱為 (A)dynamic binding
(B)early binding (C)static binding (D)casting。[111地方四等資處]
靜態綁定(static binding)或稱早期綁定(early binding):名稱綁定發生在程序開始運行之前(編譯時)。
動態綁定(dynamic binding)或稱後期綁定(late binding)、虛綁定(virtual binding):名稱綁定發生在程序運行時。
【D】15.若執行以下的Java程式碼,則螢幕上輸出的數字依序為何? (A)1,3,4 (B)1,5,3,4 (C)1,3,3,4,5 (D)1,3,3,3,4,5。[111地方四等資處]
public class SwitchTest{
public static
void main(String[] args){
int i = 1;
while(i<5){ |
1<5 |
2<5 |
3<5 |
4<5 |
switch(i){ |
1 |
2 |
3 |
4 |
case
1: |
|
|
|
|
System.out.println("1"); |
1 |
|
|
|
case
2: |
|
|
|
|
case
3: |
|
|
|
|
System.out.println("3"); |
3 |
3 |
3 |
|
break; |
|
|
|
|
case
4: |
|
|
|
|
System.out.println("4"); |
|
|
|
4 |
default: |
|
|
|
|
System.out.println("5"); |
|
|
|
5 |
} |
|
|
|
|
i++; |
2 |
3 |
4 |
5 |
}
}
}
【B】16.若執行以下的Java程式碼,則螢幕上輸出的數字依序為何? (A)1,2,3,4 (B)3,6,9,12 (C)5,6,7,8 (D)15,18,21,24。[111地方四等資處]
public class ArrayReference{
public static
void main(String[] arg){
int[] array1
= {1, 2, 3, 4};
int[] array2
= {5, 6, 7, 8};
int[] array3
= {9, 10, 11, 12};
array3 =
array1; → array3的元素等於array1的元素
array2 =
array3; → array2的元素等於array3的元素,3個array都是array1的元素
for(int
counter=0; counter<array1.length; counter++){
array1[counter]=array1[counter]+array2[counter]+array3[counter]; → array1[i]加3次
}
for(int
counter=0; counter<array2.length; counter++){
System.out.println(array2[counter]); → 輸出3, 6, 9, 12
}
}
}
【D】17.執行下列Java程式後,產生的輸出為何? (A)0 (B)1 (C)2
(D)3。[111地方四等電子]
public class BoolTest{
public static
void main(String [] args){
int result =
0;
Boolean b1 =
new Boolean("True");
Boolean b2 =
new Boolean("TRUE");
Boolean b3 =
new Boolean("False");
if(b1 == b2)
→ 不成立 result = 0
result =
1;
if(b1.equals(b2)) → 成立
result + 1 = 1
result +=
1;
if(b2 != b3)
→ 成立 result + 1 = 2
result +=
1;
if(!b2.equals(b3)) → 成立 result + 1 = 3
result +=
1;
System.out.println(result);
}
}
【D】18.若是一個高階程式語言支援強型態(strong typing),有關其程式特性的敘述,下列何者錯誤? (A)一個變數會固定對應到一種型態 (B)一個運算式通常會固定對應到一種型態 (C)編譯器會檢查型態的使用是否一致 (D)比起弱型態的程式執行時間通常較長。[111身心四等]
強型態的程式執行的速度較快,時間較短。
【C】19.關於程式語言與執行,下列敘述何者錯誤? (A)8086組合語言程式經組譯器(assembler)翻譯為機器語言執行 (B)C語言程式經編譯器(compiler)翻譯為機器碼執行 (C)Java語言程式經Java虛擬機器(virtual machine)翻譯為虛擬碼執行 (D)BASIC語言程式經解譯器(interpreter)翻譯後執行。[111初考資處]
Java語言利用Java虛擬機器翻譯為目的碼(Bytecode)執行
【C】20.有關程式語言多型(polymorphism)敘述,下列何者正確? (A)在Java中,可以用繼承(Inheritance)方式來實現多型;但不能用介面(Interface)方式來實現多型 (B)在Java中,可以用介面方式來實現多型;但不能用繼承方式來實現多型 (C)在Java中,繼承方式和介面方式兩者都可以實現多型 (D)在Java中,不論用繼承方式或介面方式都不能實現多型。[111普考資處]
【B】21.使用下列那一種語言或指令集所撰寫的程式,在不同環境或平台,可能不需改寫或極小幅度改寫就能執行?(即platform independent)
(A)8088 assembly (B)java (C)BIOS (D)CISC。[112地方四等資處]
Java的特性:1.跨平台:一次編譯,到處執行。2.物件導向。3.自動垃圾回收(Garbage Collection)。
【B】22.將下列兩個java程式檔案(Ob1.java, Test.java)編譯後,執行java Test,輸出為何? (A)9 (B)13 (C)29
(D)33。[112地方四等資處]
Ob1.java檔案內容如下:
public class Ob1
{
private int x
= 3, y = 3;
public Ob1(int
num)
{
y = 13;
}
public Ob1()
{
x = 7;
}
public void
foo()
{
System.out.print(x + 2 * y);
}
}
Test.java檔案內容如下:
public class Test
{
public static
void main(String[] args)
{
Ob1 m= new
Ob1();
m.foo();
}
}
x + 2 * y = 7 + 2 * 3 = 7 + 6 = 13
【C】23.下列Java程式執行後的輸出為何? (A)4 (B)5 (C)6
(D)7。[112初考資處]
public class Test
{
public static void main (String[] args)
{
int a = 0;
int b = 0;
for (int c = 0; c < 4; c++) |
c = 0 |
c = 1 |
c = 2 |
c = 3 |
{ |
|
|
|
|
if ((++a > 2)) |
a = 1 |
a = 2 |
a = 3 > 2 |
a = 5 > 2 |
{ |
|
|
|
|
a++; |
|
|
a = 4 |
a = 6 |
}
}
System.out.println (a);
}
}
【B】24.Java程式經編譯後,會先產生什麼格式的檔案? (A)Assembly
code (B)Byte code (C)Machine code (D)Virtual code。[112普考電子]
Java程式編譯後會產生Byte code格式的檔案,其副檔名為.class。
【D】25.在Java程式中,欲在某一個類別中宣告一個類別變數(Class variable)時,我們會使用那一個存取修飾詞(Modifier)? (A)public (B)protected
(C)private (D)static。[112鐵路員級]
使用static修飾詞來宣告靜態成員,可以與類別、欄位、方法、屬性、運算子、事件和建構函式搭配使用。