第章程式语言与java的基础.docx
《第章程式语言与java的基础.docx》由会员分享,可在线阅读,更多相关《第章程式语言与java的基础.docx(30页珍藏版)》请在冰豆网上搜索。
第章程式语言与java的基础
第1章:
程式語言與Java的基礎
1.請說明什麼是程式與軟體?
程式語言的種類?
低階和高階程式語言的差異?
2.請比較編譯和直譯程式語言的差異?
並各舉出2種程式語言?
3.什麼是Java?
其特點為何?
為什麼Java是一種跨平台的程式語言,請說明其意義?
Java平台是由_____________和_____________元件組成。
4.請簡單說明JVM是什麼,並且使用圖例說明Java程式的執行過程?
5.請說明Java語言的開發環境?
並且分別列出命令列和Gel整合開發工具建立Java應用程式的步驟?
6.Java原始程式碼的副檔名:
_____________,編譯成類別檔的副檔名:
______________。
7.請完成下列Java程式輸出「大家好!
生日快樂」字串,如下所示:
classTest
{publicstaticvoidmain(String[]args)
{
________________________
}
}
8.請問習題7.的Java程式儲存的全名為:
________________,如果輸出字串改為兩行「大家好!
」和「生日快樂」,請再次完成Java程式。
9.繼續習題8,在命令提示字元視窗執行編譯的指令:
_________________,編譯成的Bytecode檔案名稱:
_____________,執行Java程式的指令:
______________。
10..在安裝好Gel整合開發工具後,使用Gel建立Java程式輸出下列”*”字元顯示的圖形,如下所示:
*****
**
**
*****
**
**
*****
第2章:
變數與運算子
1.簡單說明Java的命名原則?
2.說明什麼是程式中的變數?
Java程式如何宣告變數?
3.請問下列哪些是Java的保留字,如下所示:
apple、float、7up、grandTotal和boolean
4.請指出下列哪些是Java合法的變數名稱,如下所示:
2bad、zero、lastValue、year2006、TWO-DOLLARS、team、2Int、int、I、j
5.請寫出Java的資料型態分為哪兩種?
8種基本資料型態是什麼?
6.請說明什麼是運算式?
下列Java運算子的功能,如下所示:
•--
•&&
•!
=
•>>
7.請指出下列哪些運算式是不正確的,如果正確請計算其值,如下所示:
•5+7
•(5*6)/2
•(-12+(12+8)/2)*4
•-20+(14+6)/2)*3
•(30-15)/3
•34-14)/(20-5)
•((34-14)/(13+7))
•(1/2+3.5)*2.0
•(2-6)/2+10
8.請建立Java程式計算下列運算式的值,如下所示:
•2X2-4X+1,X=3.0、4.0和2/3
•a2+b,a=2.0、4.0和2/3,b=10.0、5.0和12.0
•3X2-8X+4,X=2.0、4.0和2/3
9.圓周長的公式是2*PI*r,PI是圓周率3.1415,r是半徑10,20,50,請設計Java程式使用常數定義圓周率,然後計算各半徑的圓周長。
10.請建立Java程式將下列的八和十六進位值轉換成十進位值顯示,如下表所示:
0277、0xcc、0xab、0333、0555、0xff
11.現在有250個蛋,一打是12個,請使用Java程式計算250個蛋是幾打,還剩下幾個蛋。
12.某人在銀行存入150萬,利率是4%,如果每年的利息都繼續存入銀行,請使用Java程式計算在15年後,本金在利息一共有多少錢。
第3章:
流程控制結構
1.請說明什麼是結構化程式設計?
其主要觀念有哪3項?
流程控制的種類有幾種?
2.單一if/else指令敘述共有_____種選擇。
寫出下列關係與條件運算式值是true或false,如下所示:
(1)2+3==5
(2)36<6*6(3)8+1>=3*3
(4)2+1==(3+9)/4(5)12<=2+3*2(6)2*2+5!
=(2+1)*
3.請寫出下列條件敘述程式片斷的輸出結果?
(1)intsum=8+1+2+7;
if(sum<20)
ln("太小");
else
ln("太大");
(2)intdepth=10;
if(depth>=10)
{ln("危險:
");
ln("水太深.");
}
4.請說明while和do/while迴圈的差異?
並舉例說明是否會影響程式的執行結果
5.請寫出下列main()方法的輸出結果,如下所示:
(1)publicstaticvoidmain(String[]args)
{intn=1;
while(n<=64)
{n=2*n;
}
}
(2)publicstaticvoidmain(String[]args)
{inttotal=0;
for(i=1;i<=10;i++)
{if((i%2)==0)
{total+=i;
}
elsetotal--;
}
}
6.請設計Java程式顯示1~100的奇數和偶數,並且計算其總和。
7.目前商店正在周年慶折扣,消費者消費1000元,就有8折的折扣,請建立Java程式當消費額為900、2500和3300時的付款金額?
8.請設計Java程式計算網路購物的運費,基本物流處理費199,1~5公斤,每公斤50元,超過5公斤,每一公斤為30元,目前購物的重量為3.5、10、25公斤,請計算和顯示購物所需的運費+物流處理費?
9.微波爐建議的加熱時間是當加熱2項食物時,增加50%的加熱時間,3項時就是一倍的加熱時間,請設計Java程式計算當加熱1個包子需時30秒,加熱2、3、4、5、6個包子的建議時間?
10.請建立Java程式使用for、while或do/while迴圈計算下列數學運算式的值,如下所示:
•1+1/2+1/3+1/4~+1/nn=50
•1*1+2*2+3*3~+n*nn=35
11.請建立Java程式使用for迴圈從3到120顯示3的倍數,例如:
3、6、9、12、15、18、21…..。
12.請設計Java程式計算在指定年份時的年齡,這是使用生日的2位數西元年份,例如:
67年或78年,和2位數的指定年份時的年齡(注意!
Y2K的問題),例如:
輸出結果範例如下:
生日年份:
67
指定年份:
04
年齡:
37
第4章:
程序與函數的類別方法
1.請說明什麼是由上而下分析法?
模組化程式設計?
其注意事項?
2.請說明什麼是程序?
什麼是函數?
3.正式參數(FormalParameters)和實際參數(ActualParameters)的差異?
4.請說明什麼是傳值或傳址的參數傳遞?
5.請說明什麼是類別變數?
並且舉例說明Java變數範圍的區域變數、方法參數和成員變數範圍?
6.請舉例說明什麼是方法的過載?
物件導向技術的3個重要觀念?
7.請參考第4-5節設計2個過載的staticintgetMax()方法,分別傳入2個或3個int參數,傳回值是參數中的最大值。
8.請設計staticvoidprintStars()方法,傳入一共幾列的參數,顯示下列星號字元的三角形,如下圖所示:
*
**
***
****
*****
******
*******
(提示:
需要使用三層迴圈)
9.費式數列(Fibonacci)是第1個和第2個數值為1,F0=F1=1,其它是前2個數值的和Fn=Fn-1+Fn-2,n>=2,請設計staticvoidfibonacci()方法顯示費式數列,參數是顯示數字的個數。
10.請寫出下列遞迴方法printMoney(5)的執行結果,如下所示:
staticvoidprintMoney(intlevel)
{if(level==0)
else
printMoney(level-1);
}
}
11.在整數A與B中,假設:
0<=A且0
.
mod(A,B)=A,ifA
mod(A,B)=mod(A-B,B),ifA>=B
請建立Java的mod()遞迴方法計算mod(2,5)和mod(17,5)的值
12.請建立遞迴方法num(),計算num(5)、num(10)的值,其定義如下所示:
num
(1)=1,ifX==1
num(X)=num(X-1)+2X-1,ifX>1
13.請試著自行以盤子數為1、2、3時,分別一一繪出河內塔問題的解答步驟,在3根木樁各擁有的盤子數,以便歸納出解決問題的3個步驟?
第5章:
類別與物件
1.請說明物件導向程式語言的3種特性?
什麼是物件基礎程式語言?
UML是什麼?
2.請說明什麼是物件?
物件擁有哪3種特性?
並且舉例說明物件與類別的關係?
3.Java是使用_______運算子來建立物件,如果一個類別型態的物件變數參考的不是物件,我們稱為「_____________」(NullReference),在Java就是使用指定敘述指定成___________。
4.請舉例說明private和public兩種修飾子的用途和差異?
什麼是「工具方法」(UtilityMethods)?
5.請簡單說明什麼是建構子?
其目的和用途?
6.請說明實例變數/方法和類別變數/方法的差異?
7.請在Date類別完成setDate()成員方法,如下所示:
publicbooleansetDate(intday,intmonth,intyear)
{if(validDate(day,month,year))
{
____.day=day;
____.month=month;
____.year=year;
returntrue;
}
elsereturnfalse;
}
8.請修改第5-2-3節的程式範例,將validDate()方法改為類別方法。
9.請使用Java語言寫出Box類別的宣告,這是一個盒子物件,可以計算盒子體積與面積,並且繪出Box類別的UML類別圖,如下所示:
•成員變數:
width、height和length儲存寬、高和長。
•建構子:
Box(doublewidth,doubleheight,doublelength)。
•成員方法:
doublevolume()計算體積、doublearea()計算面積。
10.請建立Time類別宣告和繪出UML類別圖,Time類別可以建立儲存時間資料的物件,其描述如下所示:
•成員變數:
hour、minute和second儲存小時、分和秒。
•建構子:
Time(inthour,intminute,intsecond)。
•成員方法:
設定setXXX()和取出intgetXXX()時間資料的方法、printTime()方法顯示時間資料、validateTime()方法可以檢查時間資料。
11.請修改第Ch5_4.java程式,使用習題10的Time類別新增客戶的出生時間。
12.在第5-5節使用類別變數儲存學生計數,請建立Counter計數類別宣告,擁有成員變數value,2個方法increment()和decrement()分別將計數加一和減一,getCounter()方法取得目前的計數,修改Ch5_5.java使用Counter類別記錄學生人數。
13.請建立Books圖書資料類別,成員變數code、title、author和price成員變數儲存書號、書名、作者和書價,code、title和author是String物件,除了設定、取出和列印圖書資料的方法外,再加上圖書本數和總價的類別變數,計算圖書的平均價格。
14.請建立名片資料的Cards類別,擁有name、age、phone和email成員變數儲存姓名、年齡、電話和電子郵件資料,phone變數是參考另一個類別PhoneList的實例,PhoneList類別擁有成員變數homephone、officehone和cellphone儲存住家、公司和手機電話,最後建立printCard()方法顯示名片資料。
15.請依照下列UML類別圖寫出Java語言的類別宣告,如下圖所示:
第6章:
繼承、抽象類別和多形
1.請使用圖例說明什麼是物件導向的繼承觀念?
Java不支援_______繼承。
2.請說明什麼是覆寫和隱藏方法,請使用表格列出其差異?
3.請簡述常數和抽象類別的目的?
常數類別是使用_________關鍵字宣告,抽象類別是使用__________關鍵字宣告。
4.現有3個類別Computer、AppleComputer和AcerComputer,請繪出這3個類別的類別架構?
哪一個類別可以宣告成抽象類別?
5.請舉一個實例說明Java語言物件導向的多形觀念?
6.請寫出下列類別繼承架構中的父類別、子類別和兄弟類別,如下所示:
•類別甲的子類別________________________。
•類別丙的兄弟類別______________________。
•類別戍的父類別________________________。
7.請完成Java的Test與MidTerm的類別宣告,如下所示:
classTest
{publicintnum;
publicStringname;
publicTest(intnum,Stringname){}
publicvoidprintTest(){}
}
classMidTermextendsTest
{privateintnumOfStudents;
publicMidTerm(intno,Stringname,intnumOfStudents)
{
_______(no,name);
_____.numOfStudents=numOfStudents;
}
publicvoidprintMidTerm()
{_______.printTest();
______.name);
}
}
8.Card抽象類別有繼承的Birthday、Valentine和Holiday子類別,請寫出下列程式碼呼叫greeting()方法實際是哪一個子類別的物件,如下所示:
(1)Cardcrd=newBirthDay("江小魚",36);
crd.greeting();
(2)Cardcrd=newVaentine(“小龍女”,16);
crd.greeting();
(3)Cardcrd=newHoliday(“陳會安”);
crd.greeting();
9.繼續習題8,請完成下列Java程式碼,如下所示:
_____c;
c=newValentine("陳小安",14);
c.greeting();
c=newHoliday("江大魚");
c.greeting();
10.請建立Bicycle單車的抽象類別,內含色彩、車型和車價等資料,然後繼承抽象類別建立RacingBike(競速單車),新增幾段變數的成員變數和顯示單車資訊的方法,並且繪出UML類別圖。
11.在程式範例Ch6_3.java的抽象類別Shape新增計算周長的perimeter()方法。
12.請在第6-3節的程式範例Ch6_3.java新增繼承抽象類別Shape的Polygon多角形,並且新增area()方法。
13.請建立Vehicle抽象類別,然後建立Cars(轎車)、Trucks(卡車)子類別,多形的show()方法顯示車輛資料。
14.請建立Test抽象類別,然後建立MidTerm(期中考)、Final(期末考)和Quiz(小考)子類別,多形的print()方法可以顯示各次考試的最商和平均成績。
第7章:
巢狀類別、多重繼承和套件
1.請使用圖例來說明Java巢狀類別?
2.如果Java巢狀類別的外層類別是Students,內層類別是Exams,編譯成的類別檔案.class:
________________和________________。
3.請說明多重繼承的觀念和Java介面?
介面是由________關鍵字進行宣告,其組成是什麼?
4.請問介面是否包含方法的程式碼區塊?
介面是否可以繼承?
類別是否可以實作多個介面?
下列介面宣告是否正確?
interfaceTax{doubleTaxRate=0.06;doublecalTax();}
5.如果IPrint介面繼承自IShow,請寫出其宣告語法?
如果類別Final繼承自Test類別且實作ShowInterface,請寫出其宣告語法?
6.請說明什麼是Java套件?
什麼是JavaAPI。
7.請將第6-3節的程式範例Ch6_3.java改成Ch6_3的套件。
8.請建立Java巢狀類別內層和外層的建構子,內層建構子指定value值,next為null,外層建構子在建立好ListNode物件後,將front參考到此物件,如下所示:
classLinkedList
{ListNodefront;
ListNode
{intvalue;
ListNodenext;
publicListNode(intvalue){}
}
publicLinkedList(intvalue){}
}
9.在Ch7_3_4.java取消最後2列程式碼的註解測試編譯錯誤,如果將Point類別的x和y改為public是否仍會產生錯誤,為什麼?
10.如果在習題9改為private是否會產生錯誤,為什麼?
11.如果在習題9刪除Point類別成員變數x和y的protected修飾子,然後重新編譯Point.java和Ch7_3_4.java是否會產生錯誤,為什麼?
12.請使用表格說明Java存取修飾子?
在同一個套件可以存取的修飾子有哪些?
在同一個類別可以存取的修飾子有哪些?
第8章:
字元、字串、數值類別與陣列
1.請問String物件可以說是一種唯讀或唯寫字串?
一共可以新增多少個字元到StringBuffer物件?
當建立StringBuffer物件sb1和sb2後,請寫出比較這2個物件的Java程式碼?
2.請說明什麼是陣列(Array)?
Java二維陣列的建立有哪2種方法?
3.請寫出宣告float浮點數一維陣列myArray的語法,元素有10個?
然後寫出下列陣列宣告各元素的索引值序列值,如下所示:
int[]array={2,4,6,8}
4.請寫出下列Java程式碼片斷的執行結果,如下所示:
(1)int[]arr={1,3,5,7};
r[0]+arr[2]);
(2)int[]arr={2,4,6,8};
arr[0]=13;
arr[3]=arr[1];
r[0]+arr[2]+arr[3]);
5.現在有字串String物件,請寫出下列各方法的輸出結果,如下所示:
Stringstr="Java2程式設計範例教本2e-陳會安";
•str.length()。
•str.charAt(10)。
•str.substring(11)。
•str.substring(5,9)。
6.請說明下列Java方法和程式碼片斷的用途,如下所示:
(1)StringaMethod(String[]str)
{if(str==null)returnnull;
Stringresult="";
for(inti=0;iresult=result+str[i];
returnresult;
}
(2)double[][]temps=newdouble[365][];
for(i=0;itemps[i]=newdouble[24];
7.請設計字串處理方法(不能使用String和StringBuffer物件相同功能的方法),如下所示:
•intstrLen(String):
取得字串長度。
•StringstrInsert(String1,String2,int):
插入字串,將String2插入String1的位置int。
•StringstrReplace(String1,String2,int):
取代字串,將String1位置int開始取代成String2。
8.請設計Java程式從命令列輸入12小時制的時間字串,在轉換後,輸出成24小時制的時間資料。
9.請分別建立getMax()和getMin()方法能夠在int陣列中找出最大值和最小值,並且設計測試的Java程式,使用亂數產生陣列值,其範圍為100~500。
10.請修改Ch8_6_1.java程式碼,將tips陣列的初值改為使用命令列參數傳入,陣列尺寸視參數的個數而定。
11.請設計Java程式擁有3X3的二維陣列,陣列值是使用亂數產生,其範圍是50~100,然後計算每一列的總和和平均,並且計算2個對角線陣列元素的總和。
12.請建立Java程式擁有三維的int整數陣列,陣列值是使用亂數產生,然後使用迴圈將陣列值都顯示出來。
第9章:
JavaApplet與事件處理
1.請說明JavaApplet執行環境?
為什麼JavaApplet沒有main()方法?
JavaApplet程式架構是繼承_____________類別。
2.現在有一個MyApplet.class的JavaApplet,其尺寸為200X200,請寫出HTML文件所需的HTML標籤,以便插入此JavaApplet?
3.在JavaApplet匯入____________套件是為了取得Applet類別,匯入______________套件是為了取得繪圖元件AWT。
4.請說明下列程式碼的目的,如下所示:
inc=Integer.parseInt(getParameter("INC"));
offset=Integer.parseInt(getParameter("OFFSET"));
5.請使用圖例說明AWT元件的事件處理架構?
什麼是事件物件(EventObjects