【原】Java學習筆記003 - 數據類型。本站提示廣大學習愛好者:(【原】Java學習筆記003 - 數據類型)文章只能為提供參考,不一定能成為您想要的結果。以下是【原】Java學習筆記003 - 數據類型正文
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 }