[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裡面的變數名稱長度沒限制

Java的基本資料形態只有8個

1.   boolean  值只有 true or false  大小 1 byte
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:
+ - * / %

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 is equal to 2, then 2 * (++n) is evaluated to 6
看到 2 * (++n) 時:()先解讀,看到是++n,放在程式block的上面那行
解讀完變成:
n = n+1;
2*n;

If 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資料夾裡面看得到





留言

這個網誌中的熱門文章

[筆記] CRLF跟LF之區別 --- 隱形的 bug

[ML筆記] Batch Normalization

[筆記] 統計實習(1) SAS 基礎用法 (匯入資料並另存SAS新檔,SUBSTR,計算總和與平均,BMI)

[ML筆記] Ensemble - Bagging, Boosting & Stacking