因為今天一口氣新增了不少文
所以要看完可能要花點時間
今天新增的文有JAVA文七篇
一篇圖畫
JAVA文進度還是不夠阿!!!!
對了
如果有再看JAVA文的人
發現錯誤要跟我說一下喔~~
這樣我好修正
有什麼建議也可以說一下~~
下星期天空那邊就會整頓好跟這裡同步更新了
有些圖也會放過去
我天空那邊還會放其他我在網路上抓到的圖
有需要的等我天空開放後
再找我要密碼喔
2009年9月30日 星期三
JAVA筆記:第七篇-迴圈
迴圈:
迴圈有三種,for、while、do-while,基本上功能都相同,依照需求決定使用哪種迴圈。
for:
for(X;Y;Z){
程式行為。
}
X:起始化數值,若有多個則用逗號區隔,大多用於迴圈的計數值,可同時在此宣告需要的變數
Y:條件句,會產生布林值,若條件為true則繼續迴圈,為false則停止迴圈
Z:數值增減,負責對變數作增減,大多用於迴圈的計數值,若有多變數則用逗號區隔
一個特別的for迴圈:
for( X ; Y ) { }
X:與Y相同型別的變數,可在此宣告需要的變數
Y:陣列、集合等變數
功用:將Y的內容依序傳給X,一次一個
while:
while(X){
程式行為。
}
X:條件句,會產生布林值,若條件為true則會執行迴圈,為false則停止迴圈
do-while:
do{
程式行為。
}while(X);
X:條件句,會產生布林值,若條件為true則會執行迴圈,為false則停止迴圈
while與do-while迴圈的差別是,while會先確認條件句X是否為true再決定是否執行迴圈,而do-while必定會先執行一次再依照條件句X的結果決定是否繼續迴圈。
迴圈有三種,for、while、do-while,基本上功能都相同,依照需求決定使用哪種迴圈。
for:
for(X;Y;Z){
程式行為。
}
X:起始化數值,若有多個則用逗號區隔,大多用於迴圈的計數值,可同時在此宣告需要的變數
Y:條件句,會產生布林值,若條件為true則繼續迴圈,為false則停止迴圈
Z:數值增減,負責對變數作增減,大多用於迴圈的計數值,若有多變數則用逗號區隔
一個特別的for迴圈:
for( X ; Y ) { }
X:與Y相同型別的變數,可在此宣告需要的變數
Y:陣列、集合等變數
功用:將Y的內容依序傳給X,一次一個
while:
while(X){
程式行為。
}
X:條件句,會產生布林值,若條件為true則會執行迴圈,為false則停止迴圈
do-while:
do{
程式行為。
}while(X);
X:條件句,會產生布林值,若條件為true則會執行迴圈,為false則停止迴圈
while與do-while迴圈的差別是,while會先確認條件句X是否為true再決定是否執行迴圈,而do-while必定會先執行一次再依照條件句X的結果決定是否繼續迴圈。
JAVA筆記:第六篇-流程控制
判別式:
判別式是多數的程式語言都有的指令,當然,java也不例外,以下將介紹if-else判別式與switch-case的判別式。
if-else判別式;
if(X){
y;
}elxe{
Z;
}
以上是一個最基本的if-else判別式
x=條件式
y&z=程式
若是x條件成立,則執行y程式碼,反之,則執行else程式碼.
if可以單獨使用,當然,也可以重複使用,例如:
if( ){
} if( ){
}
這樣的狀況會在第一個if判別結束之後繼續執行第二個if。
條件式範例:
字串變數.equals("內容") 判別該字串變數內容是否與""中內容相同
變數 = = x 判別該變數數值是否為x (x需為數值
條件式可多個,使用 || (or) && (and) 作區隔
|| (or) 用此相連的條件式只需其中之一符合即成立
&& (and) 用此相連的條件式則需全部符合才成立
三元運算子:
有一種與if-else功能相同的運算子,叫做三元運算子,
他可以很方便得以一行完成if-else的功能,不過實用性不太高
之所以稱為三元運算子,是因為你必須提供三個運算元做為他運算時所需要的數值。
例:boolean_expression ? result_1 : result_2 ;
如果boolean_expression運算為true的話則執行result_1,若為false則執行result_2
switch-case判別式:
switch(X){
case Y1: <<注意!case後面式接續冒號非分號。
z1;
case Y2:
z2;
case Y3:
case Y4:
z3;
}
X=要檢查的變數
Yn=受檢查的變數內容是否為次
Zn=若case成立則執行的程式碼
case中建議搭配break做中斷switch的動作,若沒有做此動作則程式會繼續往下執行switch內的case。
case中判斷的若是字元或市字串皆要使用雙引號和單引號包圍。
此範例中,case Y3 與 case Y4 相連是被允許的,若是變數內容符合Y3與Y4則執行z3的程式碼。
判別式是多數的程式語言都有的指令,當然,java也不例外,以下將介紹if-else判別式與switch-case的判別式。
if-else判別式;
if(X){
y;
}elxe{
Z;
}
以上是一個最基本的if-else判別式
x=條件式
y&z=程式
若是x條件成立,則執行y程式碼,反之,則執行else程式碼.
if可以單獨使用,當然,也可以重複使用,例如:
if( ){
} if( ){
}
這樣的狀況會在第一個if判別結束之後繼續執行第二個if。
條件式範例:
字串變數.equals("內容") 判別該字串變數內容是否與""中內容相同
變數 = = x 判別該變數數值是否為x (x需為數值
條件式可多個,使用 || (or) && (and) 作區隔
|| (or) 用此相連的條件式只需其中之一符合即成立
&& (and) 用此相連的條件式則需全部符合才成立
三元運算子:
有一種與if-else功能相同的運算子,叫做三元運算子,
他可以很方便得以一行完成if-else的功能,不過實用性不太高
之所以稱為三元運算子,是因為你必須提供三個運算元做為他運算時所需要的數值。
例:boolean_expression ? result_1 : result_2 ;
如果boolean_expression運算為true的話則執行result_1,若為false則執行result_2
switch-case判別式:
switch(X){
case Y1: <<注意!case後面式接續冒號非分號。
z1;
case Y2:
z2;
case Y3:
case Y4:
z3;
}
X=要檢查的變數
Yn=受檢查的變數內容是否為次
Zn=若case成立則執行的程式碼
case中建議搭配break做中斷switch的動作,若沒有做此動作則程式會繼續往下執行switch內的case。
case中判斷的若是字元或市字串皆要使用雙引號和單引號包圍。
此範例中,case Y3 與 case Y4 相連是被允許的,若是變數內容符合Y3與Y4則執行z3的程式碼。
JAVA筆記:第五篇-運算子
運算子:
運算子分為算術運算子、關係運算子、條件運算子、位元運算子、位移運算子、指定運算子,以下將會分別作介紹。
算術運算子:
算術運算子簡單來說就是一般數學使用到的+-*/等符號,以下會一一列出。
標準數學運算子:
加法: " + " 例:x + y 將整數(或是浮點數)X、Y相加
減法: " - " 例:x - y 將整數(或是浮點數)X、Y相減
乘法: " * " 例:x * y 將整數(或是浮點數)X、Y相乘
除法: " / " 例:x / y 將整數(或是浮點數)X、Y相除 10/3 得 3
除法(求餘數): " % " 例:x % y 將整數(或是浮點數)X、Y相除求餘數 10%3 得 1
遞增與遞減:
遞增: ++
遞減: --
遞增與遞減都是逐次減一或是加一,而此運算子放在變數前後功能並不相同!
前置時,會優先將變數加一後再做其他動作。
後置時,會將該行運算執行完後再將變數加一。
例:x = ++y ; < 此行會先將 y 變數加一再將加一後的數值放入 x
x = y++ ; < 此行會先將 y 變數數值放入 x 再將 y 作加一的動作
運算子的優先順序:
算術運算子的優先順序大致與我們一般算數學時相同,由左而右計算
優先順序如下
1,以小括號標計的運算子
2,遞增遞減
3,乘除
4,加減
關係運算子:
關係運算子用於比對兩數值的大小關係,運算結果為boolean型態。
相等; == 相等的關係運算子是由兩個等號組成,不要打錯喔
不等: != 不等的關係運算子是由一個驚嘆號配一個等號
小於: <
大於: >
小於等於: <=
大於等於: >=
條件運算子:
在程式中常常用到多種條件需要同時成立或是其一成立的狀況,
此時就會需要用到條件運算子進行並且、或是的運算,運算結果為boolean型態。
並且; A && B AB兩者同時成立 由兩個 & 符號組成
或是: A || B AB兩者其一成立 由兩個 | 符號組成 | 鍵位於enter鍵上方
不是: !A A條件式不成立
位元運算子:
JAVA提供 & 、 | 、 ! 、 ~ 四個位元運算子,這些運算子又稱為邏輯運算子,
因為他們分別提供數位邏輯中的And、Or、Xor、補數運算,
注意!運算過程中,數值皆以二進位表示,並且需要注意各型別擁有多少位元(BIT)
And; & 邏輯運算記憶口訣:有零為零,無零為一
Or : | 邏輯運算記憶口訣:有一為一,無一為零
Xor: ^ 邏輯運算記憶口訣:相同為一,不同為零
補數運算: ~ 邏輯運算記憶口訣:求補數,零與一互換
位移運算子:
位移運算子可以指定數值的位元進行左移或是右移,並可以指定位移單元,位移時以二進位運算!
左移; A << B A位元左移B個單位,右邊補上0
右移: A >> B A位元右移B個單位,左邊補上原來左邊的位元值
右移: A >>> B A位元右移B個單位,左邊補上0
指定運算子:
一般在做某數值或是變數給予某一變數的"="就是一個指定運算子,在JAVA中還提供了其他許多的指定運算子,
讓你可以同時進行指定與運算的工作
+= : A+=B A=A+B
-= : A-=B A=A-B
*= : A*=B A=A*B
/= : A/=B A=A/B
%= : A%=B A=A%B
&= : A&=B A=A&B
|= : A|=B A=A|B
^= : A^=B A=A^B
<<= : A<<=B A=A<
>>= : A>>=B A=A>>B
>>>= : A>>>=B A=A>>>B
運算子分為算術運算子、關係運算子、條件運算子、位元運算子、位移運算子、指定運算子,以下將會分別作介紹。
算術運算子:
算術運算子簡單來說就是一般數學使用到的+-*/等符號,以下會一一列出。
標準數學運算子:
加法: " + " 例:x + y 將整數(或是浮點數)X、Y相加
減法: " - " 例:x - y 將整數(或是浮點數)X、Y相減
乘法: " * " 例:x * y 將整數(或是浮點數)X、Y相乘
除法: " / " 例:x / y 將整數(或是浮點數)X、Y相除 10/3 得 3
除法(求餘數): " % " 例:x % y 將整數(或是浮點數)X、Y相除求餘數 10%3 得 1
遞增與遞減:
遞增: ++
遞減: --
遞增與遞減都是逐次減一或是加一,而此運算子放在變數前後功能並不相同!
前置時,會優先將變數加一後再做其他動作。
後置時,會將該行運算執行完後再將變數加一。
例:x = ++y ; < 此行會先將 y 變數加一再將加一後的數值放入 x
x = y++ ; < 此行會先將 y 變數數值放入 x 再將 y 作加一的動作
運算子的優先順序:
算術運算子的優先順序大致與我們一般算數學時相同,由左而右計算
優先順序如下
1,以小括號標計的運算子
2,遞增遞減
3,乘除
4,加減
關係運算子:
關係運算子用於比對兩數值的大小關係,運算結果為boolean型態。
相等; == 相等的關係運算子是由兩個等號組成,不要打錯喔
不等: != 不等的關係運算子是由一個驚嘆號配一個等號
小於: <
大於: >
小於等於: <=
大於等於: >=
條件運算子:
在程式中常常用到多種條件需要同時成立或是其一成立的狀況,
此時就會需要用到條件運算子進行並且、或是的運算,運算結果為boolean型態。
並且; A && B AB兩者同時成立 由兩個 & 符號組成
或是: A || B AB兩者其一成立 由兩個 | 符號組成 | 鍵位於enter鍵上方
不是: !A A條件式不成立
位元運算子:
JAVA提供 & 、 | 、 ! 、 ~ 四個位元運算子,這些運算子又稱為邏輯運算子,
因為他們分別提供數位邏輯中的And、Or、Xor、補數運算,
注意!運算過程中,數值皆以二進位表示,並且需要注意各型別擁有多少位元(BIT)
And; & 邏輯運算記憶口訣:有零為零,無零為一
Or : | 邏輯運算記憶口訣:有一為一,無一為零
Xor: ^ 邏輯運算記憶口訣:相同為一,不同為零
補數運算: ~ 邏輯運算記憶口訣:求補數,零與一互換
位移運算子:
位移運算子可以指定數值的位元進行左移或是右移,並可以指定位移單元,位移時以二進位運算!
左移; A << B A位元左移B個單位,右邊補上0
右移: A >> B A位元右移B個單位,左邊補上原來左邊的位元值
右移: A >>> B A位元右移B個單位,左邊補上0
指定運算子:
一般在做某數值或是變數給予某一變數的"="就是一個指定運算子,在JAVA中還提供了其他許多的指定運算子,
讓你可以同時進行指定與運算的工作
+= : A+=B A=A+B
-= : A-=B A=A-B
*= : A*=B A=A*B
/= : A/=B A=A/B
%= : A%=B A=A%B
&= : A&=B A=A&B
|= : A|=B A=A|B
^= : A^=B A=A^B
<<= : A<<=B A=A<
>>= : A>>=B A=A>>B
>>>= : A>>>=B A=A>>>B
JAVA筆記:第四篇-顯示/使用者輸入
顯示/使用者輸入
注意!這裡提及的顯示與輸入指令常用於在DOS環境,一般視窗化後有其他的顯示與輸入方法。
顯示指令:
System.out.print("內容");
System.out.println("內容");
System.out.printf("內容、轉換指令詞",與指令相符合的變數);
以上三種都是JAVA提供的顯示指令,print與println的差別就是是否會自動換行,println會自動換行,而print不會。printf的使用方法與C相同,以%s、%d、%f等跳脫指令接收與之相符合的變數內容。
指令前方的System.out指的是系統輸出。
輸入指令:
在JAVA裡面要輸入內容,目前常用的一種方法就是使用Scanner元件。
而要使用這個元件,需要先import java.util.*才可使用,因為Scanner屬於util套件。
在宣告元件的時候大小寫需分明!
Scanner (自訂一變數名稱) = new Scanner(System.in);
輸入時,若你需要獲得使用者輸入的變數為A,而你宣告Scanner的變數為x:
A = x.next___();
___處輸入A的型別,若A為字串型別(String)則___處可省略。
注意!這裡提及的顯示與輸入指令常用於在DOS環境,一般視窗化後有其他的顯示與輸入方法。
顯示指令:
System.out.print("內容");
System.out.println("內容");
System.out.printf("內容、轉換指令詞",與指令相符合的變數);
以上三種都是JAVA提供的顯示指令,print與println的差別就是是否會自動換行,println會自動換行,而print不會。printf的使用方法與C相同,以%s、%d、%f等跳脫指令接收與之相符合的變數內容。
指令前方的System.out指的是系統輸出。
輸入指令:
在JAVA裡面要輸入內容,目前常用的一種方法就是使用Scanner元件。
而要使用這個元件,需要先import java.util.*才可使用,因為Scanner屬於util套件。
在宣告元件的時候大小寫需分明!
Scanner (自訂一變數名稱) = new Scanner(System.in);
輸入時,若你需要獲得使用者輸入的變數為A,而你宣告Scanner的變數為x:
A = x.next___();
___處輸入A的型別,若A為字串型別(String)則___處可省略。
JAVA筆記:第三篇-變數型別
變數型別:
primitive type 基本型態
-整數-
-小數(浮點數)-
JAVA內部預設碰到浮點數即將該數值當作double型別,若以float型別變數承接會出現錯誤,若要使用float變數承接該數值則需要在該數值後加上f,或是在數值前加上(float)強制轉型。
-ASCII碼-
內容為7 或是 '\0007'時 使主機板蜂鳴器響
-布林代數-
初始值只能給 true/false
變數表:兩型態變數作算術運算後其內容型態會轉為此表相交錯的型態。例:byte+byte=int
整數與浮點數型別的變數可以在變數前面加上"(型別)"強制將該變數轉換為指定的型別,要注意的是,若是由浮點數轉為整數,則其小數點後數字會被去除。
運算後的晉升、轉型問題
在算術運算時,需要注意的是型別轉換的狀況!
通常來說,兩個變數在做運算時,得出的答案都會升級到bit較大的型態,稱為晉升
所以要注意到承接兩變數運算結果的變數型態!
例如:一個int型態的A與一個byte型態的B做運算時,答案會變成int型態。
如果碰到浮點數,則結果以浮點數儲存。
單純碰到數值運算時,例如:X=9/3 其結果預設以int儲存。
單純碰到數值運算時,且需要取完整的浮點數時,則在其中之一個數值加上.0即可,
例如:x=10/4 直接這樣運算的結果會是2,若我們希望他出來的答案是2.5時,有兩種解決辦法
第一種:在10或是4的後方加上.0
第二種:在運算時(10/4)前方加上(float)或是(double)強制轉型成浮點數
單純做數值運算時,若其結果是浮點數,而我們卻只需要整數時,只須強制轉型成整數型態即可
primitive type 基本型態
-整數-
| bit | byte | 數值範圍 | |
| byte | 8 | 1 | -2^7 ~ +2^7-1 |
| short | 16 | 2 | -2^15~+2^15-1 |
| int | 32 | 4 | -2^31~+2^31-1 |
| long | 64 | 8 | -2^63~+2^63-1 |
-小數(浮點數)-
| bit | byte | 數值範圍 | ||
| float | 32 | 4 | max:3.4028235*10^38 | min:1.4*10^-45 |
| double | 64 | 8 | max:1.7976931348623157*10^308 | min:4.9*10^-324 |
JAVA內部預設碰到浮點數即將該數值當作double型別,若以float型別變數承接會出現錯誤,若要使用float變數承接該數值則需要在該數值後加上f,或是在數值前加上(float)強制轉型。
-ASCII碼-
| bit | byte | 數值範圍 |
| char | 16 | 2 |
內容為7 或是 '\0007'時 使主機板蜂鳴器響
-布林代數-
| bit | byte | 數值範圍 |
| boolean | 1 |
初始值只能給 true/false
變數表:兩型態變數作算術運算後其內容型態會轉為此表相交錯的型態。例:byte+byte=int
| double | double | double | double | double | double | double |
| float | float | float | float | float | float | double |
| byte | short | int | long | float | double | |
| byte | int | int | int | long | float | double |
| short | int | int | int | long | float | double |
| int | int | int | int | long | float | double |
| long | long | long | long | long | float | double |
整數與浮點數型別的變數可以在變數前面加上"(型別)"強制將該變數轉換為指定的型別,要注意的是,若是由浮點數轉為整數,則其小數點後數字會被去除。
運算後的晉升、轉型問題
在算術運算時,需要注意的是型別轉換的狀況!
通常來說,兩個變數在做運算時,得出的答案都會升級到bit較大的型態,稱為晉升
所以要注意到承接兩變數運算結果的變數型態!
例如:一個int型態的A與一個byte型態的B做運算時,答案會變成int型態。
如果碰到浮點數,則結果以浮點數儲存。
單純碰到數值運算時,例如:X=9/3 其結果預設以int儲存。
單純碰到數值運算時,且需要取完整的浮點數時,則在其中之一個數值加上.0即可,
例如:x=10/4 直接這樣運算的結果會是2,若我們希望他出來的答案是2.5時,有兩種解決辦法
第一種:在10或是4的後方加上.0
第二種:在運算時(10/4)前方加上(float)或是(double)強制轉型成浮點數
單純做數值運算時,若其結果是浮點數,而我們卻只需要整數時,只須強制轉型成整數型態即可
JAVA筆記:第二篇-程式的基本架構
程式基本架構
下面將會介紹一個程式的基本架構,這裡只是大略提及,後面會有更詳細的篇章。
1.套件的宣告
package (套件名稱);
宣告套件名稱,套件用於管理類別,相同套件的類別會儲存在同一個資料夾。
必須位於程式最上方。
套件宣告可以省略,若無宣告則類別屬於預設套件,即同一資料夾內皆屬於同一套件。
2.匯入套件
import java.lang.*;
import java.util.*;
匯入需要的套件庫,可省略,可多行。
某些套件會有類似程式碼,故不要隨意匯入大量套件!易混亂。
若是真的需要匯入擁有相同指令的套件,就需要再使用該指令時加上套件名稱。
省略時預設匯入 java.lang.*;
多不會影響程式運行效率
介於package class/interface 之間
3.類別or介面宣告
public class Report {};
類別宣告
一個檔案中只有一個class可以使用public宣告,但是可以無public宣告。
以public宣告之類別名稱需要與檔案名稱相符。
public interface Fly {};
介面宣告。
在後面幾篇會再完整敘述。
4.方法宣告
方法位於類別內,編寫程式行為。
建構子:包含在class內部,與class名稱相同,可有可無。
之後會有更詳細的介紹。
程式啟始點:
程式起始點為一種方法,方法名稱為main,用於啟動程式。
程式起始點可以省略,但若是以該class作為一個程式的執行起點,則該class必須含有main方法。
main方法的編寫範例:
public static void main( String[] args ) { }
在此可以看到幾個之後會解說的關鍵字 public 、 static 、 void
public:main方法必須是public(公開)的
static:靜態的,在後面的篇幅會解說
void :表示main方法沒有回傳值
main方法括號中的args字串陣列的變數用來儲存啟動程式時,使用者一並輸入的命令列引數,雖然不太會使用到,但仍必須寫上,這是規定。
若是宣告一個class,內容皆為空時,編譯後內容為:
class MyClass extende Object{
public MyClass(){ (此為建構子)
super();
}
}
紅字內容為編譯後編譯器自行加入的東西!
宣告在class內的變數可不給預設內容
但是在方法內部的變數則需要給預設內容!
命名規則:在宣告類別與方法名稱時,數字不可開頭,名稱可用中文與$ (Unicode字元) 但是盡量少用。
另外,JAVA對大小寫有較嚴格的規範。
下面將會介紹一個程式的基本架構,這裡只是大略提及,後面會有更詳細的篇章。
1.套件的宣告
package (套件名稱);
宣告套件名稱,套件用於管理類別,相同套件的類別會儲存在同一個資料夾。
必須位於程式最上方。
套件宣告可以省略,若無宣告則類別屬於預設套件,即同一資料夾內皆屬於同一套件。
2.匯入套件
import java.lang.*;
import java.util.*;
匯入需要的套件庫,可省略,可多行。
某些套件會有類似程式碼,故不要隨意匯入大量套件!易混亂。
若是真的需要匯入擁有相同指令的套件,就需要再使用該指令時加上套件名稱。
省略時預設匯入 java.lang.*;
多不會影響程式運行效率
介於package class/interface 之間
3.類別or介面宣告
public class Report {};
類別宣告
一個檔案中只有一個class可以使用public宣告,但是可以無public宣告。
以public宣告之類別名稱需要與檔案名稱相符。
public interface Fly {};
介面宣告。
在後面幾篇會再完整敘述。
4.方法宣告
方法位於類別內,編寫程式行為。
建構子:包含在class內部,與class名稱相同,可有可無。
之後會有更詳細的介紹。
程式啟始點:
程式起始點為一種方法,方法名稱為main,用於啟動程式。
程式起始點可以省略,但若是以該class作為一個程式的執行起點,則該class必須含有main方法。
main方法的編寫範例:
public static void main( String[] args ) { }
在此可以看到幾個之後會解說的關鍵字 public 、 static 、 void
public:main方法必須是public(公開)的
static:靜態的,在後面的篇幅會解說
void :表示main方法沒有回傳值
main方法括號中的args字串陣列的變數用來儲存啟動程式時,使用者一並輸入的命令列引數,雖然不太會使用到,但仍必須寫上,這是規定。
若是宣告一個class,內容皆為空時,編譯後內容為:
class MyClass extende Object{
public MyClass(){ (此為建構子)
super();
}
}
紅字內容為編譯後編譯器自行加入的東西!
宣告在class內的變數可不給預設內容
但是在方法內部的變數則需要給預設內容!
命名規則:在宣告類別與方法名稱時,數字不可開頭,名稱可用中文與$ (Unicode字元) 但是盡量少用。
另外,JAVA對大小寫有較嚴格的規範。
訂閱:
文章 (Atom)