資料類型與變量
文章目錄
- 資料類型與變量
- 1. 基本資料類型
- 2. 變量
-
- 2.1 變量的概念
- 2.2 類型的概念
- 2.3 整型變量(重點)
-
- 2.3.1 位元組變量
- 2.3.2 短整型變量(基本沒用)
- 2.2.3 整形變量
- 2.2.4 長整型變量
- 2.4 浮點型變量
-
- 2.4.1 雙精度浮點型(重點)
- 2.4.2 單精度浮點型
- 2.5 字元型變量
- 2.6 字元串String--引用資料類型(重點)
- 2.7 變量的作用域
- 2.8變量的命名規則
- 2.9 final關鍵字修飾的常量
- 2.10字面值常量
- 3.小結
在Java中資料類型主要分為兩類:基本資料類型和引用資料類型
1. 基本資料類型
基本資料類型有四類八種
1.四類: 整型 , 浮點型 , 字元型 , 以及布爾型
2.八種:
資料類型 | 關鍵字 | 記憶體占用 | 範圍 |
---|---|---|---|
位元組型 | byte | 1位元組 | -128 ~ 127 |
短整型 | short | 2位元組 | -32768 ~ 32767 |
整型 | int | 4位元組 | − 2 31 -2^{31} −231 ~ 2 31 − 1 2^{31}-1 231−1 |
長整型 | long | 8位元組 | − 2 63 -2^{63} −263 ~ 2 63 − 1 2^{63}-1 263−1 |
單精度浮點數 | float | 4位元組 | 有範圍,一般不關注 |
雙精度浮點數 | double | 8位元組 | 有範圍,一般不關注 |
字元型 | char | 2位元組 | 0 ~ 65535 |
布爾型 | boolean | 沒有明确規定 | true和false |
2. 變量
2.1 變量的概念
變量指的是程式運作時可變的量. 相當于開辟一塊記憶體空間來儲存一些資料。
2.2 類型的概念
類型則是對變量的種類進行了劃分, 不同的類型的變量具有不同的特性。
2.3 整型變量(重點)
2.3.1 位元組變量
注:不常用,一般用于檔案和網絡傳輸中。
基本文法格式:
byte 變量名 = 初始值;
代碼示例:
//定義一個位元組變量
byte num = 10;
//輸出
System.out.println(num);
注意事項:
- byte 表示變量的類型是一個位元組型變量
- 變量名是變量的辨別. 後續都是通過這個名字來使用變量
- Java 中 = 表示指派(和數學不一樣), 意思是給變量設定一個初始值.
- 初始化操作是可選的, 但是建議建立變量的時候都顯式初始化.
- 最後不要忘記分号, 否則會編譯失敗.
- // 表示注釋. 注釋作為代碼的解釋說明部分, 不參與編譯運作.
在Java中變量在定義時可以不指派,但是一般推薦定義變量時賦予初始化值。
也就是說,在方法中定義的變量(局部變量),必須指派後才能使用。
2.3.2 短整型變量(基本沒用)
基本文法格式:
short 變量名 = 初始值;
代碼示例
//定義一個短位元組變量
short num = 10;
//輸出
System.out.println(num);
2.2.3 整形變量
基本文法格式:
int 變量名 = 初始值;
代碼示例:
//定義一個整形變量
int num = 10;
//輸出
System.out.println(num);
注意事項:
在 Java 中, 一個 int 變量占 4 個位元組. 和作業系統沒有直接關系.
補充:
什麼是位元組
1.位元組是計算機中表示空間大小的基本機關.
2.計算機使用二進制表示資料. 我們認為 8 個二進制位(bit) 為一個位元組(Byte).
3,我們平時的計算機為 8GB 記憶體, 意思是 8G 個位元組.
4.其中 1KB = 1024 Byte, 1MB = 1024 KB, 1GB = 1024 MB.是以 8GB 相當于 80 多億個位元組.4 個位元組表示的資料範圍是 -2^31 -> 2^31-1 , 也就大概是 -21億 到 +21億.
使用以下代碼檢視 Java 中的整型資料範圍:
//int 最小值
System.out.println(Integer.MAX_VALUE);
//int 最大值
System.out.println(Integer.MIN_VALUE);
如果運算的結果超出了 int 的最大範圍, 就會出現溢出的情況
int maxValue = Integer.MAX_VALUE;
System.out.println(maxValue+1);
int minValue = Integer.MIN_VALUE;
System.out.println(minValue-1);
此時輸出結果為
21億這樣的數字對于目前的大資料時代來說, 是很容易超出的. 針對這種情況, 我們就需要使用更大範圍的資料類型來表示,Java中提供了long類型.
2.2.4 長整型變量
基本文法格式:
long 變量名 = 初始值;
代碼示例:
//定義一個長整形變量,此時表示這個 10 是一個 long 類型的值
long num = 10L;
//輸出
System.out.println(num);
注意:
long類型占八個位元組,其能存儲的最大範圍是 -(2^63) ~ (2^63)-1,現實生活的場景已經完全夠用.
2.4 浮點型變量
2.4.1 雙精度浮點型(重點)
基本文法格式:
double 變量名 = 初始值;
代碼示例:
//定義一個雙精度浮點數
double num = 1.0f;
System.out.println(num);
下面提出如下問題
問題一:下面代碼的輸出結果為什麼是0?
答:在計算機中,當整型與整型運算時(結果會忽略小數部分),輸出整型,也就是int / int = int.當計算過程中我們想要結果為小數,我們就更換相應的類型為 double,即如下代碼.
将其中任意一個參與運算的整型數字轉換為double類型.
問題二:下列代碼輸出結果為什麼是2.4200000000000004,而不是2.42?
double a = 1.1;
double b = 2.2;
System.out.println(a*b);
答:計算機的内部隻能存儲一大堆的0和1,浮點數在計算機的内部實際上是通過整數模拟的。
在工程中一般有以下兩種解決方法:
1.仍然使用double,但是我們一般隻看小數點後6~7位左右為有效位數,剩下的小數忽略不計
⒉.使用BigDecimal****類來代替double使用。
注意:
Java 中的 double 雖然也是 8 個位元組, 但是浮點數的記憶體布局和整數差别很大, 不能單純的用 2 ^ n 的形式表示資料範
圍.Java 的 double 類型的記憶體布局遵守 IEEE 754 标準(和C語言一樣), 嘗試使用有限的記憶體空間表示可能無限的小數, 勢必會存在一定的精度誤差.
在Java中,直接寫出來的小數預設都double類型的.
2.4.2 單精度浮點型
基本文法格式:
float 變量名 = 初始值;
代碼示例:
float num = 1.0f;//寫作1.0F也可以
System.out.println(num);
注意:
float 類型在 Java 中占四個位元組, 同樣遵守 IEEE 754 标準. 由于表示的資料>精度範圍較小, 一般在工程上用到浮點數都
優先考慮 double, 不太推薦使用 float
2.5 字元型變量
基本文法格式:
char 變量名 = ‘初始值’;
代碼示例:
char ch = 'A';
System.out.println(ch);
使用一個字元表示一個漢字:
char ch = '呵';
System.out.println(ch);
注意:
1.Java中字元集預設為Unicode編碼,支援地球上的所有語言。
2.使用"括起來的值都是字元字面量,預設都是char類型
3.計算機中的字元本質上是一個整數. 在 C 語言中使用 ASCII 表示字元, 而 Java 中使用 Unicode 表示字元. 是以一
個字元占用兩個位元組, 表示的字元種類更多, 包括中文.
4.關于字元編碼方式的讨論, 參見https://zhuanlan.zhihu.com/p/35172335
2.6 字元串String–引用資料類型(重點)
把一些字元放到一起就構成了字元串,String是引用資料類型,不是基本資料類型.
基本文法格式:
String 變量名 = “初始值”;
代碼示例:
String sh = "bit";
System.out.println(sh);
注意事項:
1.Java 使用 雙引号 + 若幹字元 的方式表示字元串字面值.
2.當碰到一些特殊字元時,需要轉義輸出所謂的轉義輸出,就是告訴編譯器,對這個字元不要做特殊處理。 " " 預設都是定義字元串變量,我現在就想輸出 " ,需要對 " 轉義,\\表示轉義字元
轉義字元示例:
轉義字元 | 解釋 |
---|---|
\n | 換行 |
\t | 水準制表符 |
\’ | 單引号 |
\" | 雙引号 |
\\ | 反斜杠 |
字元串的 + 操作, 表示字元串拼接:
String a = "hello";
String b = "world";
String c = a + b;
System.out.println(c);
還可以用字元串和整數進行拼接:
String str = "result = ";
int a = 10;
int b = 20;
String result = str + a + b;
System.out.println(result);
// 執行結果
result = 1020 //此時的result為字元型
注:在Java中,任意資料類型隻要和字元串"+",都會把其他類型轉變為字元串然後進行字元串的拼接操作.
2.7 變量的作用域
變量的作用域,就是這個變量起作用的區域在哪,就看變量是在哪個大括号{}中定義的!!!
代碼示例一:
public class Test {
public static void main(String[] args) {
int a = 10;
int b = 10;
System.out.println("a = "+a +",b = "+b);
}
}
a和b是在主方法0中定義的,是以在主方法的内部都是可以使用的,出了主方法,a和b就會銷毀。
代碼示例二:
public class Test {
{
//代碼塊
int a = 10;
}
}
出了{}後,a就銷毀了.
2.8變量的命名規則
大家從第剛開始寫代碼就要規範起來,規範的代碼是非常加分的,寫代碼一定要遵從相應的語言規範.
硬性名額:
注意: 雖然文法上也允許使用中文/美元符($)命名變量, 但是 強烈 不推薦這樣做
- 一個變量名隻能包含數字, 字母, 下劃線
- 數字不能開頭.
- 變量名是大小寫敏感的. 即 num 和 Num 是兩個不同的變量.
軟性名額
- 變量命名要具有描述性, 見名知意.
- 變量名不宜使用拼音(但是不絕對).
- 變量名的詞性推薦使用名詞.
- 變量命名推薦 小駝峰命名法, 當一個變量名由多個單詞構成的時候, 除了第一個單詞之外, 其他單詞首字母都大寫.
2.9 final關鍵字修飾的常量
final int a = 10;
a = 20; // 編譯出錯. 提示 無法為最終變量a配置設定值
常量不能在程式運作過程中發生修改.
2.10字面值常量
10 // int 字面值常量(十進制)
010 // int 字面值常量(八進制) 由數字 0 開頭. 010 也就是十進制的 8
0x10 // int 字面值常量(十六進制) 由數字 0x 開頭. 0x10 也就是十進制的 16
10L // long 字面值常量. 也可以寫作 10l (小寫的L)
1.0 // double 字面值常量. 也可以寫作 1.0d 或者 1.0D
1.5e2 // double 字面值常量. 科學計數法表示. 相當于 1.5 * 10^2
1.0f // float 字面值常量, 也可以寫作 1.0F
true // boolen 字面值常量, 同樣的還有 false
'a' // char 字面值常量, 單引号中隻能有一個字元
"abc" // String 字面值常量, 雙引号中可以有多個字元.
3.小結
每種資料類型及其範圍, 是需要我們掌握的重點.
謝謝欣賞!!!