控制語句
- 流程控制語句是用來控制程序中各語句執行順序的語句, 可以把語句組合成能完成一定功能的小邏輯模塊。
- 其流程控制方式採用結構化程序設計中規定的三種基本流程結構, 即: 順序結構、 分支結構和循環結構
選擇語句
- if 單選擇
- if…else 雙選擇
- if…else if…else多選擇
public class TestIf {
public static void main(String[] args) {
int a = (int)(6 * Math.random()) + 1 ;
int b = (int)(6 * Math.random()) + 1 ;
int c = (int)(6 * Math.random()) + 1 ;
int sum = a+b+c;
if (sum >= 15){
System.out.println("手氣不錯");
}
if (sum >= 9 && sum < 15){
System.out.println("手氣一般");
}
if(sum >= 15){
System.out.println("不錯");
}else{
System.out.println("湊合");
}
if(sum <= 6){
System.out.println("小");
}else if(sum <= 9){
System.out.println("中");
}else{
System.out.println("大");
}
}
}
- switch,表示多值相等的判斷,switch可以是整數,枚舉,字符串
public class TestSwitch {
public static void main(String[] args) {
char c = 'a';
int rand = (int) (26 * Math.random());
char c2 = (char) (c + rand);
System.out.print(c2 + ": ");
switch (c2) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
System.out.println("元音");
break;
case 'y':
case 'w':
System.out.println("半元音");
break;
default:
System.out.println("輔音");
break;
}
}
}
循環語句
- 當型和直到型
- while,for,do…while
package MyPro03;
public class TestWhile {
public static void main(String[] args) {
int sum = 0;
int i = 1;
while(i <=100){
sum += i;
i++;
}
System.out.println(sum);
int sum2 = 0;
for(int j = 0;j<=100;j++){
sum2 += j;
}
System.out.println(sum2);
for(int i1 = 0, j1 = 0;i1<=5;i1++,j1+=i1){
System.out.println(i1+","+j1);
}
int sum3 = 0;
int k = 1;
do{
sum3 += k;
k++;
}while (k<=100);
System.out.println(sum3);
}
}
package MyPro03;
public class TestMFor {
public static void main(String[] args) {
System.out.println("數字:");
for(int i = 1;i<=5;i++){
for(int j = 1;j<=5;j++){
System.out.print(i+"\t");
}
System.out.println();
}
System.out.println("\n乘法表:");
for(int k = 1;k<10;k++){
for(int j =1;j<=k;j++){
System.out.print(j+"*" + k +"="+k*j+" ");
}
System.out.println();
}
System.out.println("\n被5整除的數:");
int count = 0;
for(int h = 0;h<=1000;++h){
if(h % 5 ==0){
System.out.print(h+"\t");
count++;
if(count % 10 == 0){
System.out.println();
}
}
}
}
}
break continue
- break 結束整個循環
- continue 結束本次循環,並開始下一個
public class TestBreak {
public static void main(String[] args) {
System.out.println("break");
for(int i = 0;i<6;++i){
if(i == 3){
break;
}
System.out.println(i);
}
System.out.println("continue");
for(int i = 0;i<6;++i){
if(i == 3){
continue;
}
System.out.println(i);
}
}
}
- 帶標籤的break continue。for之前添加標籤outer冒號,後面使用break outer或continue outer
public class TestLabelFor {
public static void main(String[] args) {
outer:for(int i = 1 ; i < 10;i++){
inner:for(int j = 1; j <= i;j++){
System.out.print(i+"+"+j+"="+(i+j)+" ");
if(i+j == 11){
System.out.println();
continue outer;
}
}
System.out.println();
}
}
}
語句塊和方法
- 語句塊,花括號裏的內容是一個語句塊,語句塊的變量只在當前語句塊有效。語句塊(有時叫做複合語句),是用花括號擴起的任意數量的簡單Java語句。塊確定了局部變量的作用域。塊中的程序代碼,作爲一個整體,是要被一起執行的。塊可以被嵌套在另一個塊中,但是不能在兩個嵌套的塊內聲明同名的變量。語句塊可以使用外部的變量,而外部不能使用語句塊中定義的變量,因爲語句塊中定義的變量作用域只限於語句塊
- 方法:帶名字的語句塊。方法用於定義該類或該類的實例的行爲特徵和功能實現。 方法是類和對象行爲特徵的抽象。方法很類似於面向過程中的函數。面向過程中,函數是最基本單位,整個程序由一個個函數調用組成。面向對象中,整個程序的基本單位是類,方法是從屬於類和對象的。
- 定義:
[修飾符1 修飾符2 …] 返回值類型 方法名(形式參數列表){
Java語句;… … …
}
- 對象名.方法名(實參列表)
- 方法的詳細說明, 1. 形式參數:在方法聲明時用於接收外界傳入的數據。 2. 實參:調用方法時實際傳給方法的數據。 3. 返回值:方法在執行完畢後返還給調用它的環境的數據。 4. 返回值類型:事先約定的返回值的數據類型,如無返回值,必須顯示指定爲爲void。
- return的兩個作用,結束方法,返回值;
- Java中進行方法調用中傳遞參數時,遵循值傳遞的原則(傳遞的都是數據的副本). 基本類型傳遞的是該數據值的copy值。引用類型傳遞的是該對象引用的copy值,但指向的是同一個對象
方法的重載
- 一個類多個同名方法
- 重載的方法,實際是完全不同的方法,只是名稱相同而已!
構成方法重載的條件:
1.不同的含義:看參數類型數量和順序,形參類型、形參個數、形參順序不同
2.只有返回值不同不構成方法的重載,參數名稱不同不重載
public class TestOverload {
static double add(int x,double y){
return x + y;
}
static double add(double x,int y){
return x * y;
}
public static void main(String[] args) {
System.out.println(add(3.0,5));
System.out.println(add(3,4.6));
}
}
遞歸
- 遞歸結構包括兩個部分:
1.定義遞歸頭。解答:什麼時候不調用自身方法。如果沒有頭,將陷入死循環,也就是遞歸的結束條件。
2.遞歸體。解答:什麼時候需要調用自身方法
- 簡單的程序是遞歸的優點之一。但是遞歸調用會佔用大量的系統堆棧,內存耗用多,在遞歸調用層次多時速度要比循環慢的多,所以在使用遞歸時要慎重。
package MyPro03;
public class TestRecursion {
public static void main(String[] args) {
long t1 = System.currentTimeMillis();
System.out.println(factorial(40));
long t2 = System.currentTimeMillis();
System.out.println("Time:"+(t2 - t1));
}
static double factorial(int n){
if(n == 1){
return 1;
}else{
return n * factorial(n - 1);
}
}
}