1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 System.out.println("第一個例子"); 6 } 7 } 1 package cn.te... ...
1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 System.out.println("第一個例子"); 6 } 7 }
1 package cn.temptation; 2 3 public class Sample02 { 4 public static void main(String[] args) { 5 // Java的基本數據類型 6 // 分為四大類,共八種數據類型 7 /* 占用位元組數 8 * 1、整數類型 9 * byte: 位元組類型 1 -128~127 10 * short: 短整型 2 11 * int: 整型 4 12 * long: 長整型 8 13 * 14 * 2、浮點數類型 15 * float: 單精度類型 4 16 * double: 雙精度類型 8 17 * 18 * 3、字元類型 19 * char: 字元類型 2 20 * 21 * 4、布爾類型 22 * boolean: 布爾類型 1 23 */ 24 25 // 變數:在程式執行過程中發生變化的量 26 27 // 思考:為什麼要使用變數?全部都使用常量行不行? 28 // System.out.println(123); 29 // System.out.println(123); 30 // System.out.println(123); 31 32 // 現在要進行修改,不要顯示123了,要顯示456,那麼需要把前面使用常量123的地方全部改為常量456 33 // System.out.println(456); 34 // System.out.println(456); 35 // System.out.println(456); 36 37 // 註意:使用變數是一種思想:通過封裝變化來達到擁抱變化的結果,即在變化時,只需要修改變數賦值的地方,不需要修改變數使用的地方 38 // int i = 123; 39 // 變化時,只要修改變數賦值的地方 40 // int i = 456; 41 42 // 把變數使用的地方 和 變數賦值的地方 分離開 43 // System.out.println(i); 44 // System.out.println(i); 45 // System.out.println(i); 46 47 // 定義變數的格式: 48 // 數據類型 變數名 = 初始化的值; 49 50 byte i = 3; 51 System.out.println(i); 52 53 short j = 4; 54 System.out.println(j); 55 56 int k = 123; 57 System.out.println(k); 58 59 // Java中書寫整型數字,不加說明,預設認為是int類型 60 // The literal 12345678901 of type int is out of range 61 // long m = 12345678901; 62 // 要使用long類型,需要在數字後添加大寫的L 或是 小寫的l(因為小寫的l和數字1容易混淆,所以使用大寫的L) 63 long m = 12345678901L; 64 System.out.println(m); 65 66 // Java中書寫浮點書數字,不加說明,預設認為是double類型 67 // Type mismatch: cannot convert from double to float 68 // float x = 123.456; 69 // 要使用float類型,需要在數字後添加大寫的F 或是 小寫的f(為了保持風格的一致,所以使用大寫的F) 70 float x = 123.456F; 71 System.out.println(x); 72 73 double y = 987.654; 74 System.out.println(y); 75 76 // 字元類型使用單引號把字元包含其中 77 char z = 'a'; 78 System.out.println(z); 79 80 // 布爾類型有兩個特殊值:true 和 false 81 boolean flag1 = true; 82 boolean flag2 = false; 83 System.out.println(flag1); 84 System.out.println(flag2); 85 } 86 }
1 package cn.temptation; 2 3 public class Sample03 { 4 // int i = 123; 5 6 public static void main(String[] args) { 7 // 使用變數的註意事項: 8 /* 9 * 1、作用範圍(作用域):通過大括弧來劃定作用範圍,變數不在該大括弧內且沒有其他的範圍描述時,是無法使用的 10 * 2、在同一作用域下,變數不能重覆命名 11 * 3、變數的初始化值: 12 * 變數沒有初始化就直接使用會語法出錯 13 * 要不在聲明變數的時候就進行變數的初始化;要不就在使用的時候進行初始化 14 */ 15 // int i = 123; 16 // 在主函數之外定義int類型的變數i,在主函數中(大括弧)中無法訪問到 17 // Cannot make a static reference to the non-static field i 18 // System.out.println(i); 19 20 // int i = 3; 21 // System.out.println(i); 22 // Duplicate local variable i 23 // int i = 4; 24 // System.out.println(i); 25 26 // 只對變數進行聲明但是不賦值 27 // int i; 28 // 對只聲明但是不賦值的變數直接使用 29 // The local variable i may not have been initialized 30 // System.out.println(i); 31 32 // 先做聲明 33 // int i; 34 // 在使用前進行賦值 35 // i = 5; 36 // 再使用變數,這樣沒有語法問題 37 // System.out.println(i); 38 39 // 聲明變數時並對變數進行初始化賦值(初始化) 40 // int i = 2; 41 42 // 如下寫法語法沒有問題,但是不建議這樣寫(可讀性差) 43 // int i = 2; int j = 3; 44 // System.out.println(i); 45 // System.out.println(j); 46 47 // 如下寫法也可以,但是不推薦這樣寫 48 // int i = 2, j = 3; 49 // System.out.println(i); 50 // System.out.println(j); 51 52 // 在一行語句中對多個變數進行聲明是可以的,並且多個變數之間使用英文的逗號分隔開 53 int i, j; 54 // 在一行語句中對於聲明好的多個變數進行賦值,不能使用英文的逗號分隔開進行賦值,而只能使用英文的分號分隔開進行賦值 55 // Syntax error on token ",", ; expected 56 // i = 2, j = 3; 57 i = 2; j = 3; 58 // 上句等價於 59 i = 2; 60 j = 3; 61 System.out.println(i); 62 System.out.println(j); 63 } 64 }
1 package cn.temptation; 2 3 public class Sample04 { 4 public static void main(String[] args) { 5 // 兩個int類型的變數做加法 6 // int i = 2; 7 // int j = 3; 8 // int result = i + j; 9 // System.out.println(result); 10 11 // byte類型的變數 和 int類型的變數做加法 12 // byte i = 2; 13 // int j = 3; 14 // int result = i + j; 15 // System.out.println(result); 16 17 // int類型的變數 和 int類型的變數做加法,得到的結果賦值給一個byte類型的變數 18 // int i = 2; 19 // int j = 3; 20 // Type mismatch: cannot convert from int to byte 21 // 賦值號右側兩個int類型的變數相加,得到的結果還是一個int類型的結果,把這個int類型的結果賦值給byte類型的變數,提示類型不匹配 22 // byte result = i + j; 23 // System.out.println(result); 24 25 // byte類型的變數 和 int類型的變數做加法,得到的結果賦值給一個byte類型的變數 26 // byte i = 2; 27 // int j = 3; 28 // Type mismatch: cannot convert from int to byte 29 // 賦值號右側byte類型的變數 和 int類型的變數相加,得到的結果還是一個int類型的結果(類型提升),把這個int類型的結果賦值給byte類型的變數,提示類型不匹配 30 // byte result = i + j; 31 // System.out.println(result); 32 33 // 解決類型不匹配錯誤的方法: 34 /* 35 * 1、將結果的數據類型改為範圍大的數據類型 36 * 2、使用強制類型轉換,註意可能會發生精度丟失的問題 37 * 聯想一下:小碗盛米,大鍋里的米比較少的時候,倒入小碗中是沒有問題的;大鍋里的米比較多的時候,倒入小碗里就有問題了 38 */ 39 40 // 強制類型轉換的格式:(要轉換為的數據類型)(被轉換的數據內容); 41 int i = 2; 42 int j = 3; 43 byte result = (byte)(i + j); 44 System.out.println(result); 45 } 46 }
1 package cn.temptation; 2 3 public class Sample05 { 4 public static void main(String[] args) { 5 // 字面量常量整數不加說明,預設是int類型 6 // byte i = 127; 7 // System.out.println(i); 8 9 // byte i = (byte)127; 10 // System.out.println(i); 11 12 // Type mismatch: cannot convert from int to byte 13 // byte j = 130; 14 // System.out.println(j); 15 16 byte j = (byte)130; 17 System.out.println(j); // -126 18 } 19 } 20 /* 21 * 原碼、反碼 和 補碼 22 * 規則: 23 * 1、正數的原碼、反碼和補碼都相同 24 * 2、負數的反碼和原碼符號位相同,其他位取反;負數的補碼 = 負數的反碼 + 1; 25 * 3、電腦在進行運算時,使用的是補碼,最終顯示出來的是原碼 26 * 27 * int類型的正整數130的原碼:0000 0000 0000 0000 0000 0000 1000 0010 28 * int類型的正整數130的反碼:0000 0000 0000 0000 0000 0000 1000 0010 29 * int類型的正整數130的補碼:0000 0000 0000 0000 0000 0000 1000 0010 30 * 31 * 強制類型轉換做了截取 32 * 33 * byte類型的 補碼:1000 0010 最高位是符號位 34 * byte類型的 反碼:1000 0001 35 * byte類型的 原碼:1111 1110 -126 36 */
1 package cn.temptation; 2 3 public class Sample06 { 4 public static void main(String[] args) { 5 double i = 123.45; 6 System.out.println(i); 7 8 // 在單精度浮點數後添加F 和 對單精度浮點書進行強制類型轉換為float類型,效果一致 9 // float j = 987.65F; 10 float j = (float) 987.65; 11 System.out.println(j); 12 } 13 }
1 package cn.temptation; 2 3 public class Sample07 { 4 public static void main(String[] args) { 5 // 定義兩個byte類型的變數 6 // byte i = 2; 7 // byte j = 3; 8 9 // Type mismatch: cannot convert from int to byte 10 // 使用加號進行加法計算時,對於比int類型範圍小的數據類型進行了類型提升 11 // byte result = i + j; 12 // byte result = (byte) (i + j); 13 // System.out.println(result); 14 15 // 第11行使用byte類型的變數相加提示語法錯誤,第16行使用int類型的字面量常量相加沒有語法錯誤 16 byte result = 2 + 3; 17 18 // Type mismatch: cannot convert from int to byte 19 // byte result = 2 + 126; 20 21 System.out.println(result); 22 23 // 註意: 24 // 變數相加,先看變數的數據類型是否有問題 25 // 常量相加,先看結果是否在被賦值的變數的數據類型範圍內 26 } 27 }
1 package cn.temptation; 2 3 public class Sample08 { 4 public static void main(String[] args) { 5 // char字元類型 和 整型存在轉換的關係 6 System.out.println('a'); // a 7 8 char i = 'b'; 9 System.out.println(i); // b 10 11 // 把字元'c' 和 int類型的數字1做加法,加出來的結果賦值給char類型的變數j 12 // 因為j的數據類型為char字元類型,所以輸出的結果還是字元 13 char j = 'c' + 1; 14 System.out.println(j); // d 15 16 // 字元類型和int類型做加法,得到的結果是int類型 17 System.out.println('c' + 1); // 100 18 19 // 字元類型和int類型做加法,得到的結果是int類型 20 System.out.println('B' + 'e' + 'i' + 'J' + 'i' + 'n' + 'g' + 2008); // 2672 21 22 // 字元類型和字元類型做加法,得到的結果是int類型 23 System.out.println('B' + 'e' + 'i' + 'J' + 'i' + 'n' + 'g'); // 664 24 25 // 布爾類型不參與加法運算 26 // The operator + is undefined for the argument type(s) boolean, int 27 // System.out.println(true + 1); 28 29 // boolean flag = false; 30 // The operator + is undefined for the argument type(s) boolean, int 31 // System.out.println(flag + 1); 32 } 33 }