if...else

if( 判斷式 ){
    ....
}
else if( 判斷式2 ){
    ...
}
else{
    ...
}
  • 有些時候用if裡面包好幾層if會使得程式碼難以閱讀,記得一定要使用else if

switch case

switch( 判斷變數 ){
    case 變數值1:
        ...
        break;
    case 變數值2:
        ...
        break;
    default:
        break;
}
  • 記得case後面接的是 變數的值,如果變數是string類別,那就應該寫成 case "...."

  • 兩大要素絕對不能忘:default、break

for Loop

for( Variable宣告 ; BooleanStatement ; UpdateStatement){
    ....
}
  • ( )中三個條件不一定每個都要寫,但還是要用;來分隔
  • 變數宣告盡量不要寫在loop內,這樣每跑一圈都會重新宣告一次
  • 只列出一排時可以想像是用單層迴圈,列印出n*n的形狀可以想像是用雙層迴圈
  • 跑幾圈 很明確時,請用for迴圈

while Loop

//通常此處會有 變數宣告
while( BooleanStatement ){
        ....
    //通常此處會有 變數遞增程式碼
}
  • 記住while就是將for( )裡的三樣,分開寫好,一樣都不能漏!
  • while ( )裡的布林判斷式,寫的是持續執行條件,而非結束條件
  • 當你 不知道要讓迴圈跑幾圈 時,請用while迴圈

全域 及 區域變數

public class MainClass{
    private int GlobalVariable;
    public static void main(String[] args){
        private int LocalVariable;
    }
}
  • 全域變數:放置在最靠近class宣告的那一層,class裡都可以使用這個變數
  • 區域變數:放置在函數或是迴圈裡,只有在包住他最近的{ }範圍裡才可以使用

static 及 final

final double PI=3.14;
static int i=1;
  • static變數函數打從程式執行記憶體位置就存在,只到程式結束後才會消失
  • final變數需在宣告時就設定初值,一旦設定初值則不能更改
  • 注意static function,若要使用不在funtcion內的變數,一定得是static變數
public class MainClass {
        int i=1;
    public static void f(){
        System.out.println(i);
    }
}

Recursive

function Recur_fun(){
    if ( 終止條件 )
       return ...
    else
       return 呼叫自己
}
  • 遞迴的兩大要素就是 1)終止條件 2)呼叫自己,兩者缺一不可
  • 遞迴要思考我們知道的條件不知道的狀況
    ex.求10!,我們知道1!是什麼,所以他就是終止條件
    我們不知道2!~10!的值是什麼,所以就要用呼叫自己來處理

  • 遞迴撰寫時應寫出遞迴執行過程,如以下

sum(4)=4*4+sum(3) =16+14=30
sum(3)=3*3+sum(2) =9+5=14
sum(2)=2*2+sum(1) =5
sum(1)=1

Method

呼叫物件的函數
ObjectName.functionName( parameter );

呼叫自己class內的函數
functionName( parameter );
  • 函數返回值只要不是void,就必須 使用 或是 建一個變數接收他的回傳值
  • 傳值呼叫傳參考呼叫 要分清楚
    基本型態->傳值呼叫
    非基本型態->傳參考呼叫

  • 使用不限長度的參數

(型態... 參數名稱)

Array

int[] score=new int[5];
int[][] score=new int[3][5];

int[] score={99,98,63};
int[][] score={{98,59},{63,87,92}};
  • 記得宣告多維陣列時,有幾維,就要有幾層的{ }

  • Array.length求出陣列的長度
  • 陣列第一個起始值是0
  • 使用for迴圈列出陣列的值,幾維陣列就要用幾層for迴圈,以下示範二維陣列
for(int i=0;i<array.length;i++){
    for(int j=0;j<array[i].length;j++){
        ....
    }
}

foreach

for(type ElementName : ArrayName){
        .....
}
  • foreach在存取多維陣列的時候特別需要注意
for(int[] i : array){
    for(int j : i){
        ...
    }
}
  • 記住for迴圈的 i、j 是index,但是foreach迴圈的 i、j 是本身

  • : 前型態需特別注意,:後都不需要加上[ ] 只要打出變數名字即可

Class & Object

public class Car {
    private String name; //屬性
    public Car(){ //建構子
        ....
    }
    public parkingCar(){//方法
        ....
    }
}
  • 三大要素構成一個class:建構子、屬性(變數)、方法
  • class分成一般class、abstract class、final class
  • 屬性建議都設成private,已保持它的封裝性
//PURPOSE:建立物件及使用方法、變數
Car taxi=new Car(); //此時建構子被呼叫
taxi.name="小黃"; //此時是假設taxi是public的狀況才可以這樣使用
taxi.parkingCar();

Constructor

public class Car {

    public Car(){ 
        .....
    }
    public Car(String n){
        .....
    }
}
  • 名字及modifier皆需與class相同,沒有回傳值

  • 永遠放在最上面

  • 在物件被建立時即刻被呼叫

  • 建議若撰寫了有參數的建構子,也應將沒有任何參數傳入的建構子寫上去

  • 若想要呼叫自己class的建構子時,用this(...)

  • 若想要呼叫父類別的建構子時,用super(...),不選擇的話會呼叫預設建構子

Overload

int sum(int a,int b,int c);
int sum(int a);

當我們要讓函數作同樣的一件事,但是參數型態或是數量不同時,我們就會使用overload

  • 函數名稱相同
  • 參數型態 必須長得不一樣

Modifier

  • public公開
    字面意思上就可以看出,無論任何人都可以進行存取。

  • protected
    只要是自己或自己的子類別都可以存取,無論在不在同個資料夾。

  • private
    只有自己這個類別本身的成員可以存取,常用於封裝

  • no modifier(預設)
    又稱為package權限,只要在同一package下都可以存取到

封裝

什麼時候會用到封裝?例如我們希望一個變數,要透過我們規定的方法才可以更改,不能允許其他人隨意更改他的值,這時候我們就會用到封裝了

繼承

class [ClassName] extends [SuperClass]
  • 要搞清楚class、subclass、object之間的關係,不能混淆
  • 子類別會擁有父類別所有的變數及function,包括private的也會有,只是不能更改它而已

多型

  • 運用override就可以有多型的效果
  • 思考一下何時會需要用到多型? 當我們都要使用父類別繼承下來的function,但又想要做點更動的時候,就可以使用override
  • 標記 @Override 是個好習慣
  • 要呼叫父類別裡那個沒有被override的舊function,要使用
super.functionName( parameter );
  • 不想被override的function,要設成final

Static function

ClassName.FunctionName(...);

非static的function呼叫請用

ObjectName.functionName(...);

Abstract Class

public abstract class Shape {
    private String name;
    public abstract doubleGetArea();
    public abstract doubleGetPerimeter();
}
  • 只要有一個abstract funtcion就是abstract class
  • abstract function不需要加{ }更不需要寫出函數執行內容,但是函數名稱後的( )還是得加
  • 繼承至abstract class的class,若沒有將abstract function都實作出來,子類別還是得是abstract function,若將所有的abstract function都實作出來,子類別才可以成為一般類別

results matching ""

    No results matching ""