第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和boolean4.請指出下列哪些是Java合法的變數名稱,如下所示:2bad、zero、lastValue、year2006、TWO-DOLLARS、team、2Int、int、I、j5.請寫出Java的資料型態分為哪兩種?8種基本資料型態是什麼?6.請說明什麼是運算式?下列Java運算子的功能,如下所示:--&&!=7.請指出下列哪些運算式是不正確的,如果正確請計算其值,如下所示:5+7(5*6)/2(-12+(12+8)/2)*4-20+(14+6)/2)*3(30-15)/334-14)/(20-5)((34-14)/(13+7))(1/2+3.5)*2.0(2-6)/2+108.請建立Java程式計算下列運算式的值,如下所示:2X2-4X+1,X=3.0、4.0和2/3a2+b,a=2.0、4.0和2/3,b=10.0、5.0和12.03X2-8X+4,X=2.0、4.0和2/39.圓周長的公式是2*PI*r,PI是圓周率3.1415,r是半徑10,20,50,請設計Java程式使用常數定義圓周率,然後計算各半徑的圓周長。10.請建立Java程式將下列的八和十六進位值轉換成十進位值顯示,如下表所示:0277、0xcc、0xab、0333、0555、0xff11.現在有250個蛋,一打是12個,請使用Java程式計算250個蛋是幾打,還剩下幾個蛋。12.某人在銀行存入150萬,利率是4%,如果每年的利息都繼續存入銀行,請使用Java程式計算在15年後,本金在利息一共有多少錢。第3章:流程控制結構1.請說明什麼是結構化程式設計?其主要觀念有哪3項?流程控制的種類有幾種?2.單一if/else指令敘述共有_____種選擇。寫出下列關係與條件運算式值是true或false,如下所示:(1)2+3==5(2)366*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(sum20)System.out.println(太小);elseSystem.out.println(太大);(2)intdepth=10;if(depth=10){System.out.println(危險:);System.out.println(水太深.);}4.請說明while和do/while迴圈的差異?並舉例說明是否會影響程式的執行結果5.請寫出下列main()方法的輸出結果,如下所示:(1)publicstaticvoidmain(String[]args){intn=1;while(n=64){n=2*n;System.out.println(n);}}(2)publicstaticvoidmain(String[]args){inttotal=0;for(i=1;i=10;i++){if((i%2)==0){total+=i;System.out.println(i);}elsetotal--;}System.out.println(total);}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=501*1+2*2+3*3~+n*nn=3511.請建立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){System.out.print($);}else{System.out.print();printMoney(level-1);System.out.print();}}11.在整數A與B中,假設:0=A且0B,mod()方法的規則如下:.mod(A,B)=A,ifABmod(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==1num(X)=num(X-1)+2X-1,ifX113.請試著自行以盤子數為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章:繼承、抽象類