1. 三種控制結構是什麼? 答:順序結構,選擇結構,迴圈結構 2. 如果if語句後不加{},if的控制範圍是否只限於第一句? 答:if語句的控制範圍只能是緊接著的一句,使用{}可以將多個語句合併成為一個複合語句,進而控制多個語句。 3. Math.random()是什麼意思?如果想要獲取15到20之 ...
1. 三種控制結構是什麼?
答:順序結構,選擇結構,迴圈結構
2. 如果if語句後不加{},if的控制範圍是否只限於第一句?
答:if語句的控制範圍只能是緊接著的一句,使用{}可以將多個語句合併成為一個複合語句,進而控制多個語句。
3. Math.random()是什麼意思?如果想要獲取15到20之間的隨機數怎麼辦?
答:Math.random()是使用java.lang.Math類中的靜態方法random(),獲取一個0-1之間的隨機浮點數。想要獲得15-20之間的隨機數的語句: 15+(int)(Math.random()*6);
4. switch語句的功能是否可以完全使用if else if else來代替?如果是,為什麼還要使用switch語句?
答:switch語句完全可以使用if else語句來代替,因為switch語句的效率比if else語句的效率高。
5. switch語句中的表達式需要是什麼類型?
答:int類型(包括可以自動轉為int類型的byte,short,char)
Jdk1.7以後可以使String類型和枚舉類型
6. switch語句中一個case執行後,什麼時候結束執行這個case語句?
答:一旦開始執行某個case語句,直到遇到break語句或者default語句或者switch語句執行完。
7. switch語句中,default是否必須寫?
答:否,default語句不必要寫,就像if語句不必要後面一定有else語句一樣。
8. 下麵代碼,有什麼錯誤?
switch (c2) { case 'y'; case 'w'; System.out.println("半母音"); break; default: System.out.println("輔音"); } |
答:case語句後面應該是冒號: 。
9. 迴圈結構模擬了現實世界中什麼邏輯?
答:各種重覆問題。
10. 迴圈結構的四種內部結構是什麼?
答:1)while(布爾表達式){迴圈體;} while迴圈
2)do{迴圈體;}while(布爾表達式) do-while迴圈
3)for(初始化表達式;布爾表達式;步進表達式){迴圈體;} for迴圈
4)for(集合或數組中的類型 : 集合或者數組){迴圈體;} 增強for迴圈
11. while和do-whlie有什麼區別?
答:while語句迴圈的次數為0-無限次,do-while語句迴圈次數是1-無數次。
12. 什麼情況下會出現死迴圈?請舉個例子。
答:迴圈條件始終成立,且沒有可以跳出迴圈的語句時。while(true){System.out.println(1)}
13. for迴圈相比於while迴圈有什麼優勢?
答:for迴圈可以明確的推斷出迴圈的次數。並且可以根據下標訪問數組元素。
14. 下麵代碼都有什麼問題?
do{ System.out.println(a); a++; }while(a<0) |
答:1)變數a沒有初始化。
2)do-while語句結尾應該加上分號。
15. 下麵代碼有什麼錯誤?如果有請指出錯誤。
for(int i=0; i<=10;i++){ System.out.println(i); } System.out.println(i); |
答:變數i超過了作用域。
16. 迴圈中break的作用是什麼?continue的作用是什麼?
答:break是用來跳出迴圈體的,continue是結束本次迴圈,進入下一次迴圈。
17. 語句塊能否使用外部的變數?語句塊中定義的變數,外部能否使用?
答:1)語句塊可以使用外部的變數,因為語句塊在外部變數的作用域範圍內。
2)語句塊中定義的變數,作用域範圍為當前語句塊,所以外部不能使用。
18. 方法的定義中,是否必須有返回值類型?如果確實不需要返回值,用哪個關鍵字來聲明?
答:方法可以沒有返回值類型,當方法不需要返回值時,可以使用void關鍵字來聲明。
19. 方法的定義中,return語句是否必要,他有什麼作用?
答:當方法不需要返回值時,可以沒有return語句。return語句主要用來結束當前方法,並將其後的值返回給方法調用者。
20. Java中傳遞是值傳遞還是引用傳遞?
答:基本數據傳遞的是值的拷貝,引用數據類型傳遞的是對象地址的拷貝。
21. 方法定義中,形式參數和實際參數的區別?
答:形式參數是方法定義中的參數列表,表示該方法接受怎樣的參數類型。
實際參數是方法調用時,用來傳入方法的實際數據。
22. 方法定義時,使用形參還是實參?
答:形參,方法定義時,使用形參,方法調用時,使用實參。
23. 定義形參時,必須要寫變數類型嗎?
答:必須要寫變數類型。
24. 實參類型是否必須和形參類型匹配?
答:是的,必須要和形參匹配,匹配包括當該某方法的實參類型可以自動轉換為某方法的形參類型,例如,形參時int型,實參是short類型的,這種情況是匹配的。
25. 什麼是方法的重載,有什麼用?
答:在同一個類中,方法名相同,參數列表不同。方法重載的作用:多態。
26. 兩同三不同指的是?返回值不同構成重載嗎?形參名稱不同構成重載嗎?
答:兩同指的是同一個類,同一方法名,三不同指的是參數列表的類型,個數和順序不同。返回值不同和形參名稱不同均不構成重載。
27. 遞歸演算法中,遞歸頭和遞歸體分別指的是什麼?
答:遞歸頭指的是遞歸終止的部分,遞歸體是自己調用自己的部分。
28. 遞歸演算法的優點是什麼?遞歸演算法的缺點是什麼?
答:遞歸演算法的優點是演算法簡單(將複雜的問題拆解成簡單的問題),缺點是效率低(遞歸演算法大量的開闢方法棧和關閉方法棧,大量占用資源)。
29.【上機】使用遞歸演算法完成階乘演算法。
public class Demo { public static void main(String[] args) { int i = factorial(10); System.out.println(i); } public static int factorial(int n){ if(n ==1 ) return 1; return n*factorial(n-1); } } |
30. 【上機】根據隨機生成的月份,列印該月份的天數。(不考慮閏年)。
public class Demo { public static void main(String[] args) { int month = (int)(Math.random()*12)+1; System.out.print(month+"月天數為:"); if(month == 2) System.out.println(28); else if(month==4 || month==6 || month==9 || month==11) System.out.println(30); else System.out.println(31); } } |
31. 【上機】用while迴圈和for迴圈分別計算100以內的奇數和及偶數和。
public class Demo { public static void main(String[] args) { int j = 1; /*奇數計算*/ int o = 2; /*偶數計算*/ int sumJ = 0; /*奇數和*/ int sumO = 0; /*偶數和*/ while(j < 100){ sumJ += j; j+=2; } for(;o<100;o+=2) sumO += o; System.out.println(sumJ); System.out.println(sumO); } } |
32. 【上機】用while和for輸出1-1000之間能被5整除的數,並每行輸出3個。
public class Demo { public static void main(String[] args) { int i = 1; int count=0; while(i < 1000){ if(i%5 == 0){ System.out.print(i+"\t"); count++; if(count%3 == 0) System.out.println(); } i++; } count = 0; for(i=0;i<1000;i++){ if(i%5 == 0){ System.out.print(i+"\t"); count++; if(count%3 == 0) System.out.println(); } } } } |
33. 【上機】列印九九乘法口訣表。
public class Demo { public static void main(String[] args) { for(int i=1;i<10;i++){ for(int j=1;j<=i;j++){ System.out.print(i+"*"+j+"="+(i*j)+"\t"); } System.out.println(); } } } |
34. 【上機】編程求Σ1 + Σ2 + ~~~+Σ100
public class Demo { public static void main(String[] args) { int sum = 0; for(int i=1;i<=100;i++){ for(int j=1;j<=i;j++){ sum += j; } } System.out.println(sum); } } |
35. 【上機】生成0-100隨機數,直到88為止,停止迴圈。
public class Demo { public static void main(String[] args) { while(true){ int i = (int)(Math.random()*101); System.out.println(i); if(i == 88) break; } } } |
36.【上機】把100-150之間不能被3整除的數輸出。
public class Demo { public static void main(String[] args) { for(int i=100;i<=150;i++){ if(i%3 != 0) System.out.println(i); } } } |
37.【上機】列印出實心10*10正方形,空心10*10正方形。
public class Demo { public static void main(String[] args) { for(int i=0;i<10;i++){ for(int j=0;j<10;j++){ System.out.print("*"); } System.out.println(); } for(int i=0;i<10;i++){ for(int j=0;j<10;j++){ if(i==0 || i==9 || j==0 || j==9) System.out.print("*"); else System.out.print(" "); } System.out.println(); } } } |
38.【上機】列印出實心10*10菱形和空心10*10菱形。
public class Demo { //空心菱形,實心略微改動。 public static void main(String[] args) { boolean flag = true; //前5行是真,後5行是假 int distance = 0; for(int i=0;i<11;i++){ if(i>=5) flag = false; for(int j=0;j<11;j++){ if(j == 5-distance || j==5+distance) //if(j>=5-distance || j<=5+distance) System.out.print("*"); else System.out.print(" "); } if(flag) distance++; else distance--; System.out.println(); } } } |
第三章 控制語句
1. 三種控制結構是什麼?
答:順序結構,選擇結構,迴圈結構
2. 如果if語句後不加{},if的控制範圍是否只限於第一句?
答:if語句的控制範圍只能是緊接著的一句,使用{}可以將多個語句合併成為一個複合語句,進而控制多個語句。
3. Math.random()是什麼意思?如果想要獲取15到20之間的隨機數怎麼辦?
答:Math.random()是使用java.lang.Math類中的靜態方法random(),獲取一個0-1之間的隨機浮點數。想要獲得15-20之間的隨機數的語句: 15+(int)(Math.random()*6);
4. switch語句的功能是否可以完全使用if else if else來代替?如果是,為什麼還要使用switch語句?
答:switch語句完全可以使用if else語句來代替,因為switch語句的效率比if else語句的效率高。
5. switch語句中的表達式需要是什麼類型?
答:int類型(包括可以自動轉為int類型的byte,short,char)
Jdk1.7以後可以使String類型和枚舉類型
6. switch語句中一個case執行後,什麼時候結束執行這個case語句?
答:一旦開始執行某個case語句,直到遇到break語句或者default語句或者switch語句執行完。
7. switch語句中,default是否必須寫?
答:否,default語句不必要寫,就像if語句不必要後面一定有else語句一樣。
8. 下麵代碼,有什麼錯誤?
switch (c2) { case 'y'; case 'w'; System.out.println("半母音"); break; default: System.out.println("輔音"); } |
答:case語句後面應該是冒號: 。
9. 迴圈結構模擬了現實世界中什麼邏輯?
答:各種重覆問題。
10. 迴圈結構的四種內部結構是什麼?
答:1)while(布爾表達式){迴圈體;} while迴圈
2)do{迴圈體;}while(布爾表達式) do-while迴圈
3)for(初始化表達式;布爾表達式;步進表達式){迴圈體;} for迴圈
4)for(集合或數組中的類型 : 集合或者數組){迴圈體;} 增強for迴圈
11. while和do-whlie有什麼區別?
答:while語句迴圈的次數為0-無限次,do-while語句迴圈次數是1-無數次。
12. 什麼情況下會出現死迴圈?請舉個例子。
答:迴圈條件始終成立,且沒有可以跳出迴圈的語句時。while(true){System.out.println(1)}
13. for迴圈相比於while迴圈有什麼優勢?
答:for迴圈可以明確的推斷出迴圈的次數。並且可以根據下標訪問數組元素。
14. 下麵代碼都有什麼問題?
do{ System.out.println(a); a++; }while(a<0) |
答:1)變數a沒有初始化。
2)do-while語句結尾應該加上分號。
15. 下麵代碼有什麼錯誤?如果有請指出錯誤。
for(int i=0; i<=10;i++){ System.out.println(i); } System.out.println(i); |
答:變數i超過了作用域。
16. 迴圈中break的作用是什麼?continue的作用是什麼?
答:break是用來跳出迴圈體的,continue是結束本次迴圈,進入下一次迴圈。
17. 語句塊能否使用外部的變數?語句塊中定義的變數,外部能否使用?
答:1)語句塊可以使用外部的變數,因為語句塊在外部變數的作用域範圍內。
2)語句塊中定義的變數,作用域範圍為當前語句塊,所以外部不能使用。
18. 方法的定義中,是否必須有返回值類型?如果確實不需要返回值,用哪個關鍵字來聲明?
答:方法可以沒有返回值類型,當方法不需要返回值時,可以使用void關鍵字來聲明。
19. 方法的定義中,return語句是否必要,他有什麼作用?
答:當方法不需要返回值時,可以沒有return語句。return語句主要用來結束當前方法,並將其後的值返回給方法調用者。
20. Java中傳遞是值傳遞還是引用傳遞?
答:基本數據傳遞的是值的拷貝,引用數據類型傳遞的是對象地址的拷貝。
21. 方法定義中,形式參數和實際參數的區別?
答:形式參數是方法定義中的參數列表,表示該方法接受怎樣的參數類型。
實際參數是方法調用時,用來傳入方法的實際數據。
22. 方法定義時,使用形參還是實參?
答:形參,方法定義時,使用形參,方法調用時,使用實參。
23. 定義形參時,必須要寫變數類型嗎?
答:必須要寫變數類型。
24. 實參類型是否必須和形參類型匹配?
答:是的,必須要和形參匹配,匹配包括當該某方法的實參類型可以自動轉換為某方法的形參類型,例如,形參時int型,實參是short類型的,這種情況是匹配的。
25. 什麼是方法的重載,有什麼用?
答:在同一個類中,方法名相同,參數列表不同。方法重載的作用:多態。
26. 兩同三不同指的是?返回值不同構成重載嗎?形參名稱不同構成重載嗎?
答:兩同指的是同一個類,同一方法名,三不同指的是參數列表的類型,個數和順序不同。返回值不同和形參