尚學堂 實戰java程式設計 第3、4章課後題答案
尚學堂 實戰java程式設計 第3、4章課後題答案
第3章
一、選擇題
1.A
2.BD
解析:switch的的判斷表示式的資料型別:byte short int char
3.A
解析:0+3+5=8
4.BD
解析:函式過載時對返回資料型別不做檢查,但形引數量或型別必須變化,B和原函式是同一函式,D中形引數據個數和型別和原函式相同
5.B
解析:非靜態變數,形參並不影響實參.
二、簡答題
1.答:相同點:他們都是用來處理多分支條件的結構。
不同點:switch語句只能處理等值條件判斷的情況,而且條件只能是整型變數或字元型變數。多重if選擇結構的限制,特別適合某個變數處於某個連續區間時的情況。
2.答:break是跳出迴圈,continue是直接進入下一次迴圈
3.答:使用break- label,先在迴圈之前加入一個label標籤,然後break label;
4.答:定義:一個類中可以有多個相同名字的方法
作用:行為多型
判斷依據:同方法名,不同的形參個數或資料型別
5.答:定義:方法自身呼叫自身
優點:程式碼簡潔,可以省去很多迴圈
缺點:需要消耗大量計算機資源
三、編碼題
1.
程式碼
/** * 1. 從鍵盤輸入某個十進位制整數數,轉換成對應的二進位制整數並輸出。 */ import java.util.Scanner; public class Homework1 { public static void main(String [] args){ //輸入一個十進位制數 Scanner sc = new Scanner(System.in); System.out.println("請輸入一個整數:"); int num2 = sc.nextInt(); //轉換 int num = num2; String str=""; do{ //除以2得到商 int div = num/2; //得到餘數作為二進位制位 int mod = num%2; str = mod + str; //商作為被除數 num = div; }while(num!=0);//被除數不是零 //輸出二進位制數 System.out.println(num2+"------>"+str); } }
程式碼
/** * 2.程式設計求:∑1+∑2+……+∑100。 * @author Administrator * */ public class Homework2 { public static void main(String[] args) { int sum_i=0; for(int i=1;i<=5;i++){ int sum_j=0; for(int j=1;j<=i;j++){ sum_j=sum_j+j; } sum_i=sum_i+sum_j; } System.out.println(sum_i); } }
程式碼
/**
* 3. 編寫遞迴演算法程式:一列數的規則如下: 1、1、2、3、5、8、13、21、34...... 求數列的第40位數是多少。
* @author Administrator
*
*/
public class Homework3 {
public static void main(String[] args) {
System.out.println(sum(40));
}
public static long sum(int n) {
if (n <= 0) {
return 0;
} else if (n == 1 || n == 2) {
return 1;
} else {
return sum(n - 1) + sum(n - 2);
}
}
}
第4章
一、選擇題
1.BD
解析:
B:類必須有構造方法,若程式未寫,這系統自動呼叫系統構造方法.
D:super()會呼叫父類的構造方法,但父類的構造方法不一定無參
2.D
解析:3+4=7
3.AC
解析:
A:靜態方法在類被載入進記憶體時就分配入口地址,此時不一定有非靜態方法
D:this表示構造方法建立的物件,在該類被呼叫時候才產生,而靜態方法在載入記憶體時候就存在,此時不存在物件,不能用this呼叫.
4.AC
解析:
C:只要許可權夠,可以呼叫其他類的方法
5.C
解析:count是全域性變數,count1()方法覆蓋後為10;如果count1中的count1前加int,使count1()中的count成為區域性變數,則為B
二、簡答題
1.答:面向過程是將任務分步,一步一步實現.面向物件是將任務分塊拆分,每塊再用面向過程實現.
2.答:類是物件的抽象集合,物件是類的具體個體.
3.答:
作用:初始化物件
特徵:必須與類名相同,且沒有型別
4.答:
作用:代表正在呼叫該方法的物件
用法:this.成員變數
5.答:作用:為了共享變數或方法
三、編碼題
1.
程式碼
package cn.sxt.exec;
public class Circle {
private int r;
/** 無參構造 */
public Circle(){}
/** 有參構造,初始化半徑*/
public Circle(int r){
this.r=r;
}
/** 也可以使用setR方法初始化半徑 */
public void setR(int r){
this.r = r;
}
/**計算 面積 */
public void getArea(){
double area = Math.PI * r * r;//從Math工具類得到π的值
System.out.println("圓的面積為:"+area);
}
/** 計算 周長 */
public void getPerimeter(){
double zc = Math.PI * 2 * r;
System.out.println("圓的周長為:"+zc);
}
}
程式碼
package cn.sxt.exec;
public class Circle {
private int r;
/** 無參構造 */
public Circle(){}
/** 有參構造,初始化半徑*/
public Circle(int r){
this.r=r;
}
/** 也可以使用setR方法初始化半徑 */
public void setR(int r){
this.r = r;
}
/**計算 面積 */
public void getArea(){
double area = Math.PI * r * r;//從Math工具類得到π的值
System.out.println("圓的面積為:"+area);
}
/** 計算 周長 */
public void getPerimeter(){
double zc = Math.PI * 2 * r;
System.out.println("圓的周長為:"+zc);
}
}
程式碼
package cn.sxt.exec;
public class People {
private String id;
private String password;
private String email;
/** 無參構造 */
public People(){
}
/** 全參構造 */
public People(String id,String password,String email){
this.id = id;
this.password=password;
this.email = email;
}
public People(String id,String password){
this.id = id;
this.password=password;
this.email=id+"@gameschool.com";
}
public void show() {
System.out.println("編號:"+this.id);
System.out.println("密碼:"+this.password);
System.out.println("郵件:"+this.email);
}
public static void main(String[] args) {
//呼叫全參構造
People p1 = new People("sxt0001","123456","[email protected]");
p1.show();
//呼叫無參構造
People p2 = new People("sxt0002","654321");
p2.show();
}
}