天天看點

超詳細,資料類型和變量總結資料類型與變量1. 基本資料類型2. 變量3.小結

資料類型與變量

文章目錄

  • 資料類型與變量
  • 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);
           

注意事項:

  1. byte 表示變量的類型是一個位元組型變量
  2. 變量名是變量的辨別. 後續都是通過這個名字來使用變量
  3. Java 中 = 表示指派(和數學不一樣), 意思是給變量設定一個初始值.
  4. 初始化操作是可選的, 但是建議建立變量的時候都顯式初始化.
  5. 最後不要忘記分号, 否則會編譯失敗.
  6. // 表示注釋. 注釋作為代碼的解釋說明部分, 不參與編譯運作.
  7. 在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);
           

此時輸出結果為

超詳細,資料類型和變量總結資料類型與變量1. 基本資料類型2. 變量3.小結

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類型.

超詳細,資料類型和變量總結資料類型與變量1. 基本資料類型2. 變量3.小結

問題二:下列代碼輸出結果為什麼是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變量的命名規則

大家從第剛開始寫代碼就要規範起來,規範的代碼是非常加分的,寫代碼一定要遵從相應的語言規範.

硬性名額:

  1. 一個變量名隻能包含數字, 字母, 下劃線
  2. 數字不能開頭.
  3. 變量名是大小寫敏感的. 即 num 和 Num 是兩個不同的變量.
注意: 雖然文法上也允許使用中文/美元符($)命名變量, 但是 強烈 不推薦這樣做

軟性名額

  1. 變量命名要具有描述性, 見名知意.
  2. 變量名不宜使用拼音(但是不絕對).
  3. 變量名的詞性推薦使用名詞.
  4. 變量命名推薦 小駝峰命名法, 當一個變量名由多個單詞構成的時候, 除了第一個單詞之外, 其他單詞首字母都大寫.

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.小結

超詳細,資料類型和變量總結資料類型與變量1. 基本資料類型2. 變量3.小結

每種資料類型及其範圍, 是需要我們掌握的重點.

謝謝欣賞!!!