Lab:
判斷奇數還是偶數
新增一個
IfEvenOrOdd
的類別
public
class IfEvenOrOdd {
public
static void main(String[] args){
int
num = Integer.parseInt(args[0]);
{
System.out.println(num+"
is 偶數");
}
else
{
System.out.println(num+"
is 奇數");
}
}
}
Notes:
- 這邊有注意到 Netbeans 會把編譯後的class放在專案目錄下的 build/clesses 資料夾, 所以如果要執行這個範例就要在 clesses 資料夾下 java mod07/IfEvenOrOdd 111
*for迴圈
- 語法: for( [初始化] ; [條件式] ; [後處理] )
- 以 ; 為分隔符號
- 初始化只會執行一次
- 如果滿足條件式就會進行後處理
Lab:
for 迴圈
public
class TestForLoop {
public
static void main(String[] args) {
int
i = 0; //為了證明
for
迴圈的初始化是optional
還有想要知道
I
在第幾個值跳出來,
在這邊宣告
for
( ; i < 10; i++) { //第一個欄位沒有填
System.out.println("Hello"+i);
}
System.out.println("i
= "+i); //列出
i
的值
}
}
Notes:
- 可以藉由去修改專案的屬性 (File → Project Properties 內的 Run) 去填入不同的arguments, 這樣就未必一定要到終端機下去下引數.
*while
迴圈
- 迴圈次數不確定時常用的方式, 是一種 0 到多的迴圈
- 語法 while ( boolean 運算式 ) { }
Lab:
while
package
mod07;
public
class TestWhileLoop {
public
static void main(String[] args) {
//
TODO code application logic here
int
i = 0;
while
(i < 10){
System.out.println("Hello
"+ i);
i++;
}
System.out.println("i
= "+i);
}
}
– Take
Break 15 mins –
*do
… while 迴圈
- 無論如何會執行一次, 1 到多的迴圈
- 語法 do { } while (boolean 運算式);
- 記得結束要有 ; 分號
Lab:
do … while
public
class TestDoWhileLoop {
public
static void main(String[] args) {
int
i = 0; //宣告
i
= 0 初始化
do{
//至少會執行一次
at
least run one time
System.out.println("Hello
"+i);
i++;
}while(i
< 10); //i 小於10
就執行
System.out.println("i
= "+i);
}
}
*break,
continue, label
- 控制迴圈的手段
- break 終止迴圈的執行
- continue暫停目前的迴圈, 提早進入下一個迴圈的判斷式
說明 break
do{
statement1;
if
(a > 10){
break; // 因為是
break
所以會終止目前的迴圈,
跳到 statement
3
}
statement2;
}
while ( b > 10 );
statement3;
說明 continue
do{
statement1;
if
(a > 10){
continue; //因為是
continue,
所以會繼續下一回合的邏輯判斷
while(b
> 10)
}
statement2;
}
while ( b > 10 );
statement3;
outer:
//這個是 label
do{
statement1;
do{
statement2;
if(a
> 10) {
break
Outer; //指定
break
Outer 所以跳出
Outer
, 執行 statement
5
}
statement3;
}
while (b > 10);
statement4;
}
while ( c > 10);
statement
5;
說明 label
outer:
//這個是 label
do{
statement1;
do{
statement2;
if(a
> 10) {
continue
Outer; //指定
continue
Outer 執行 Outer
判斷 while(
c> 10)
}
statement3;
}
while (b > 10);
statement4;
}
while ( c > 10);
statement
5;
Lab:
九九乘法表
public
class ForMultiTable {
public
static void main(String[] args) {
for(
int i = 1; i <= 9; i++){
for(int
j=1; j <= 9; j++){
System.out.print(i+"*"+j+"="+(i*j)+"\t");
//若要排列整齊,
使用 tab的方式
}
System.out.println();
}
//
for 三角形列出
for(
int i = 1; i <= 9; i++){
for(int
j=1; j <= i; j++){
System.out.print(i+"*"+j+"="+((i*j<10)?"
":"")+(i*j)=" "); //若要排列整齊另一種方式
}
System.out.println();
}
}
}
*Chapter
8 封裝概論
Notes:
- 藉由封裝來釐清責任歸屬
*存取物件的成員
- 用點符號來存取
- 這種方式可以用來存取物件的成員, 包含屬性和方法
*public
存取控制關鍵字
- 表示該物件成員可由類別外部直接存取
Notes:
- 如果使用屬性的方式來修改
- 缺點:
- 必須將資料驗證放在用戶端程式(client code)
- 程式碼散落各用戶端程式
- 程式碼可能不一致
- 維護性大幅降低
- 所以修改使用方法的方式比修改屬性來的好
- 驗證程式碼統一集中於方法內
- 方法內部可修改不同的實作而不影響用戶程式碼 (前提為: 方法簽章(方法名稱, 資料型別, 參數列)必須保持固定不變[操作存取介面])
*private
存取控制
- 類別圖的 - 代表 public
- 表示該物件成員只能由類別內部存取, 而不能由類別外部存取
- 透過方法來存取物件屬性
*getter
and setter 方法
- 透過 getter 和 setter 方法來存取 private 屬性
*封裝
- 將類別的實作細節(屬性, 方法內部的實作)隱藏起來
- 迫使用戶端透過公開的介面來存取物件的資料
沒有留言:
張貼留言