[Java] Absolute Java (5E) Ch1 重點整理
- Java 起源1991年
- 1994年開始可以在browser上面run
- 1995年 Netscape made its Web browser capable of running Java programs.
p.s. Firefox的前身: Netscape
語法
println 是print line
System.out.println("........");
等號 = 是一種assignment的觀念
例如
a = b;
L-value: 變數在assignment左邊(L)時return回來的東西,通常是位置
R-value: 變數在assignment右邊(R)時return回來的東西,通常是內容(值)
Java virtual machine
Code
Source Code: Java的原始碼是以Unicode的 Utf-8 形式存在
Object Code
Class Loader
執行java程式 (假如現在class 名稱為FirstProgram)
在command line當中寫
java FirstProgram
如果要手動的compile: 使用 javac 意即java compiler
javac FirstProgram.java
- 一個java檔案,可以寫多個class
但只能有一個public class
兩個以上pulic class會出現error
<觀念>
一個 .java 檔寫兩個class,compile後會出現兩個.class檔
一個 .java 檔可以寫多個class,但public class只能一個
一個 .java 檔可以沒有public class,要public class只能一個
- Syntax:語法,Syntax error語法錯誤eclipse可以幫你找
- Semantics:語意,語意錯誤請自行解決
- Run-time error:compile時沒錯誤,但執行時出錯了
- Logic error:compile跟執行時都沒錯誤,但結果不如預期
- identifier:具有識別效果的字,像是pirintln,String[],class name,function name等,包括所有的保留字Reserved Word
- Reserved Word:如 void public static等
- Predefined identifiers:預先定義好的libraries,系統要用的函式,例如 System, String, println
- 通常class名稱通常是大寫開始,為名詞
- Java裡面的變數名稱長度沒限制
2. char 值為single character 大小 2 byte (因為是Unicode)
---以下四個跟整數有關
3. byte 大小 1 byte range: -2^7 ~ +2^7 - 1
4. short 大小 2 byte range: -2^15 ~ +2^15 -1
5. int 大小 4 byte range: -2^31 ~ +2^31 - 1
6. long 大小 8 byte range: -2^63 ~ +2^63 - 1
-- 以下是浮點數相關
7. float 大小 4 byte
8. double 大小 8 byte
沒指定時的預設type:
整數為int,浮點是double
operator:
+ - * / %
不接受這個
int i = 2.99;
如果是c語言,會直接把.99丟掉 變成 i = 2;
java不接受這個情形
但如果是 double d = 2; 就可以
順序:
byte -> short -> int -> long -> float -> double
char 可跟 int 同等
注意:沒有boolean ,因為java的boolean 值是true跟false,
跟C語言的bool型態 0 or 1的值不一樣。
同理,浮點數預設為double所以 e = 1.0; 出現錯誤代表double塞不進float裡面
再看下圖:
a = 1; 這行過了!代表compiler會自動幫整數看範圍轉換型別
但 e = 1.0;還是error代表compiler懶得幫浮點數check範圍
所以要加上 f 確保安全
如果有兩個不同type做運算時,會往大的轉換
例如 byte / short 結果出來換轉成short
2nd: the binary arithmetric operator *, /, and %
3rd : the binary arithmetric operator + and -
實例:
+-+rate is evaluated as +(-(+rate))
b + r + h is evaluated as (b + r) + h
n1 = n2 = n3 is evaluated as n1 = (n2 = n3)
If n is equal to 2, then 2 * (++n) is evaluated to 6
看到 2 * (++n) 時:()先解讀,看到是++n,放在程式block的上面那行
解讀完變成:
n = n+1;
2*n;
If n is equal to 2, then 2 * (n++) is evaluated to 4
看到 2 * (n++) 時:()先解讀,看到是n++,放在程式block的下面那行
解讀完變成:
2*n;
n = n+1;
目前結果 0.
0.4 * 2 = 0.8 -> 得到整數為0 目前結果 0.0
0.8*2 = 1.6 -> 1拿出去 目前結果 0.01
0.6*2 = 1.2 -> 1拿出去 目前結果 0.011
0.2 * 2 = 0.4 -> 得到整數為0 目前結果 0.0110
0.4 * 2 = 0.8 -> 得到整數為0 目前結果 0.01100
0.8*2 = 1.6 -> 1拿出去 目前結果 0.011001
0.6*2 = 1.2 -> 1拿出去 目前結果 0.0110011
0.2 * 2 = 0.4 -> 得到整數為0 目前結果 0.01100110
所以最後結果為二進位的無限循環小數 0.011001100110 .......
由以上結果知,浮點數儘量用double不要用float
用float很不精確,很危險。
加完註解
/**開頭的
*
*/
在產生doc時會出現在doc之中
- 1994年開始可以在browser上面run
- 1995年 Netscape made its Web browser capable of running Java programs.
p.s. Firefox的前身: Netscape
語法
println 是print line
System.out.println("........");
等號 = 是一種assignment的觀念
例如
a = b;
L-value: 變數在assignment左邊(L)時return回來的東西,通常是位置
R-value: 變數在assignment右邊(R)時return回來的東西,通常是內容(值)
Java virtual machine
Code
Source Code: Java的原始碼是以Unicode的 Utf-8 形式存在
Object Code
Class Loader
執行java程式 (假如現在class 名稱為FirstProgram)
在command line當中寫
java FirstProgram
如果要手動的compile: 使用 javac 意即java compiler
javac FirstProgram.java
- 一個java檔案,可以寫多個class
但只能有一個public class
兩個以上pulic class會出現error
<觀念>
一個 .java 檔寫兩個class,compile後會出現兩個.class檔
一個 .java 檔可以寫多個class,但public class只能一個
一個 .java 檔可以沒有public class,要public class只能一個
- Syntax:語法,Syntax error語法錯誤eclipse可以幫你找
- Semantics:語意,語意錯誤請自行解決
- Run-time error:compile時沒錯誤,但執行時出錯了
- Logic error:compile跟執行時都沒錯誤,但結果不如預期
- identifier:具有識別效果的字,像是pirintln,String[],class name,function name等,包括所有的保留字Reserved Word
- Reserved Word:如 void public static等
- Predefined identifiers:預先定義好的libraries,系統要用的函式,例如 System, String, println
- 通常class名稱通常是大寫開始,為名詞
- Java裡面的變數名稱長度沒限制
Java的基本資料形態只有8個
1. boolean 值只有 true or false 大小 1 byte2. char 值為single character 大小 2 byte (因為是Unicode)
---以下四個跟整數有關
3. byte 大小 1 byte range: -2^7 ~ +2^7 - 1
4. short 大小 2 byte range: -2^15 ~ +2^15 -1
5. int 大小 4 byte range: -2^31 ~ +2^31 - 1
6. long 大小 8 byte range: -2^63 ~ +2^63 - 1
-- 以下是浮點數相關
7. float 大小 4 byte
8. double 大小 8 byte
沒指定時的預設type:
整數為int,浮點是double
operator:
+ - * / %
Assignment Compatibility
Java當中不像C語言不接受這個
int i = 2.99;
如果是c語言,會直接把.99丟掉 變成 i = 2;
java不接受這個情形
但如果是 double d = 2; 就可以
順序:
byte -> short -> int -> long -> float -> double
char 可跟 int 同等
注意:沒有boolean ,因為java的boolean 值是true跟false,
跟C語言的bool型態 0 or 1的值不一樣。
Data type 轉換
因為整數預設是int 所以塞不進byte跟short裡面會出現error同理,浮點數預設為double所以 e = 1.0; 出現錯誤代表double塞不進float裡面
再看下圖:
a = 1; 這行過了!代表compiler會自動幫整數看範圍轉換型別
但 e = 1.0;還是error代表compiler懶得幫浮點數check範圍
所以要加上 f 確保安全
如果有兩個不同type做運算時,會往大的轉換
例如 byte / short 結果出來換轉成short
Precedence Rule
1st : the unary operator +, -, ++, --, and !2nd: the binary arithmetric operator *, /, and %
3rd : the binary arithmetric operator + and -
實例:
+-+rate is evaluated as +(-(+rate))
b + r + h is evaluated as (b + r) + h
n1 = n2 = n3 is evaluated as n1 = (n2 = n3)
If n is equal to 2, then 2 * (++n) is evaluated to 6
看到 2 * (++n) 時:()先解讀,看到是++n,放在程式block的上面那行
解讀完變成:
n = n+1;
2*n;
If n is equal to 2, then 2 * (n++) is evaluated to 4
看到 2 * (n++) 時:()先解讀,看到是n++,放在程式block的下面那行
解讀完變成:
2*n;
n = n+1;
十進位轉二進位
例:十進位 0.4 轉成二進位目前結果 0.
0.4 * 2 = 0.8 -> 得到整數為0 目前結果 0.0
0.8*2 = 1.6 -> 1拿出去 目前結果 0.01
0.6*2 = 1.2 -> 1拿出去 目前結果 0.011
0.2 * 2 = 0.4 -> 得到整數為0 目前結果 0.0110
0.4 * 2 = 0.8 -> 得到整數為0 目前結果 0.01100
0.8*2 = 1.6 -> 1拿出去 目前結果 0.011001
0.6*2 = 1.2 -> 1拿出去 目前結果 0.0110011
0.2 * 2 = 0.4 -> 得到整數為0 目前結果 0.01100110
所以最後結果為二進位的無限循環小數 0.011001100110 .......
由以上結果知,浮點數儘量用double不要用float
用float很不精確,很危險。
Java 裡面永遠不變常數的寫法:
加入註解
匡起來選取,按右鍵,選source -> Generate Element Comment加完註解
/**開頭的
*
*/
在產生doc時會出現在doc之中
產生document
選 Project -> Generate javadoc... |
按下finish |
Yes To All |
開始產生document |
產生的文件會在doc資料夾裡面看得到 |
留言
張貼留言