1月14號筆記
阿新 • • 發佈:2021-01-15
Java程式執行機制
編譯型、解釋型
用一個例子來解釋。有一個美國人想看中文的小說,他有兩種辦法。
一種是僱一箇中國人把這本小說直接翻譯成英文的,這種就類似編譯型。
如果美國人足夠有錢,他可以僱個翻譯直接給他翻譯這本小說,這種類似解釋型。
JAVA檔案到CLASS檔案的過程就是一個編譯的過程
JAVA結合了編譯和解釋,先編譯,然後再解釋
浮點數
詭異的事情
float f1 = 0.1f; //0.1
double f2 = 1.0/10; //0.1
System.out.println(f1==f2); //結果是false
float d1 = 1231546489798798;
float d2 = d1 + 1;
System.out.println(d1==d2); //結果竟然是true
因為浮點數是有限的 離散的 舍入誤差 大約 接近但不等於的
因此,最好避免使用浮點數進行比較
字元轉換
char c1= 'a';
char c2= '你';
System.out.println(c1);
System.out.println((int)c1);
System.out.println(c2);
System.out.println((int)c2);
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-qKveSfiy-1610636281202)(C:\Users\大鼻子\AppData\Roaming\Typora\typora-user-images\image-20210114210915408.png)]
所有的字元本質還是數字,程式是通過Unicode表進行轉換的,比方說 97對應於’a’
而Unicode佔兩個位元組,也就是說Unicode最多有2^16=65536個數
char c3 = '\u0097'; //這樣也是表示 char c3 = 'a'
轉義字元
/t 空格
/n 換行
布林
boolean flag = true;
if(flag==true){};
if(flag){};//以上兩種表示的是一個意思,老手喜歡用下面的,精簡易讀
an flag = true;
if(flag==true){};
if(flag){};//以上兩種表示的是一個意思,老手喜歡用下面的,精簡易讀