<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Java 中的原始數據類型 > 原文: [https://howtodoinjava.com/java/basics/primitive-data-types-in-java/](https://howtodoinjava.com/java/basics/primitive-data-types-in-java/) 了解 Java 中所有八種**基本數據類型**,它們的內存大小,默認值以及最大值和最小值范圍。 原始數據類型由語言預先定義,并由**保留關鍵字**命名。 讓我們在下面的圖片中查看每種原始數據類型。 ![Primitive data types in java](https://img.kancloud.cn/c0/9e/c09e4c775e2b8137daab368f1806e754_619x385.png) Java 中的原始數據類型 ## 1\. 整數數據類型 整數數據類型是數值數據類型,其值為**整數**。 Java 提供**五個整數數據類型**:`byte`,`short`,`int`,`long`和`char`。 #### 1.1 `int`數據類型 * `int`數據類型是 **32 位帶符號的** Java 基本數據類型。 `int`數據類型的變量占用 **32 位內存**。 * 其有效范圍是`-2,147,483,648`至`2,147,483,647`(`-2 ^ 31` 至` 2 ^ 31 – 1`)。 * 此范圍內的所有整數都稱為**整數字面值**(或整數常量)。 例如,10,-200、0、30、19 等是`int`的整數字面值。 可以將整數字面值分配給`int`變量,例如`counter`,如下所示: ```java int counter = 21; ``` ##### 1.1.1 `Integer`包裝器類 Java 有一個名為`Integer`的包裝器類,該包裝器類定義了兩個常量來表示`int`數據類型`Integer.MAX_VALUE`和`Integer.MIN_VALUE`的最大值和最小值。 它是 int 值的對象表示。 ```java int max = Integer.MAX_VALUE; // Assigns maximum int value to max int min = Integer.MIN_VALUE; // Assigns minimum int value to min ``` #### 1.2 `long`數據類型 * `long`數據類型是 **64 位帶符號的** Java 基本數據類型。 * 當對整數的計算結果可能超出`int`數據類型的范圍時,將使用它。 * 其范圍是`-2 ^ 63`到`2 ** 63 – 1`。 * `long`范圍內的所有整數都稱為 long 類型的**整數字面值**。 long 類型的整數字面值始終以`L`(或小寫的`l`)結尾。 ```java long num1 = 0L; long num2 = 401L; long mum3 = -3556L; ``` ##### 1.2.1 類型轉換 即使`long`變量中存儲的值恰好在`int`數據類型的范圍內,也不允許從`long`到`int`的賦值,而無需顯式**類型轉換**, 如下例所示: ```java int num1 = 5; long num2 = 25L; // A compile-time error. Even if num2's value 25 which is within the range of int. num1 = num2; ``` **如果要將`long`變量的值分配給`int`變量,則必須在代碼**中明確提及這一事實,以便 Java 確保您知道可能存在數據溢出。 您可以使用 Java 中的“類型轉換”來執行此操作,如下所示: ```java long num1 = (int) num2; // Now it is fine because of the "(int)" cast ``` 通過編寫`(int)num2`,您將指示 Java 將`num2`中存儲的值視為`int`。 在運行時,Java 將僅使用`num2`的 32 個最低有效位,并將存儲在這 32 位中的值分配給`num1`。 如果`num2`的值超出 int 數據類型的范圍,則`num1`中不會獲得相同的值,并且會導致**數據丟失**。 ##### 1.2.2 `long`包裝類 Java 具有類`Long`(請注意`Long`中的大寫`L`),該類定義了兩個常量來表示長數據類型的最大值和最小值`Long.MAX_VALUE`和`Long.MIN_VALUE`。 ```java long max = Long.MAX_VALUE; long min = Long.MIN_VALUE; ``` #### 1.3 `byte`數據類型 * `byte`數據類型是 **8 位帶符號的** Java 基本整數數據類型。 * 其范圍是 -128 至 127(`-2 ^ 7`至`2 ^ 7 – 1`)。 這是 Java 中可用的**最小整數數據類型**。 * 與`int`和`long`字面值不同,沒有字節字面值。 * 但是,您可以將屬于`byte`范圍的任何`int`字面值分配給`byte`變量。 ```java byte b1 = 125; byte b2 = -11; ``` ##### 1.3.1 類型轉換 如果將`int`字面值分配給`byte`變量,并且該值超出字節數據類型的范圍,則 Java 會生成編譯器錯誤。 以下代碼段將產生編譯器錯誤: ```java // An error. 150 is an int literal outside -128 to 127 byte b3 = 150; ``` Java 不允許您將范圍較大的數據類型的變量的值分配給范圍較小的數據類型的變量,因為在進行這種分配時可能會**失去精度**。 要進行從`int`到`byte`的賦值,必須像在`long`到`int`賦值時那樣使用強制轉換。 ```java b1 = (byte)num1; // Ok ``` ##### 1.3.2 `Byte`包裝器類 Java 具有類`Byte`(請注意,字節中的大寫`B`),該類定義了兩個常量來表示字節數據類型的最大值和最小值`Byte.MAX_VALUE`和 `Byte.MIN_VALUE`。 ```java byte max = Byte.MAX_VALUE; byte min = Byte.MIN_VALUE; ``` #### 1.4 `short`數據類型 * `short`數據類型是 **16 位帶符號的** Java 基本整數數據類型。 其范圍是 -32768 至 32767(或`-2 ^ 15`至`2 ^ 15 – 1`)。與`int`和`long`字面值不同,沒有`short`字面值。但是,您可以將任何在`short`范圍內的`int`字面值(-32768 到 32767)分配給`short`變量。 ```java short s1 = 12905; // ok short s2 = -11890; // ok ``` 字節變量的值始終可以分配給`short`變量,因為`byte`數據類型的范圍在`short`數據類型的范圍內。 將值從`int`或`long`變量分配給`short`變量的所有其他規則與字節變量的規則相同。 ##### 1.4.1 `Short`包裝類 Java 有一個名為`Short`的類(在`Short`中注意大寫字母`S`),它定義了兩個常量來表示`short`數據類型的最大值和最小值`Short.MAX_VALUE`和`Short.MIN_VALUE`。 ```java short max = Short.MAX_VALUE; short min = Short.MIN_VALUE; ``` #### 1.5 `char`數據類型 * `char`數據類型是 **16 位無符號** Java 基本數據類型。 * 它表示 **Unicode 字符**。 * 請注意,`char`是無符號數據類型。 因此,`char`變量不能具有負值。 * `char`數據類型的范圍是 0 到 65535,與 Unicode 集的范圍相同。 * 字符字面值表示`char`數據類型的值。 ```java char c1 = 'A'; char c2 = 'L'; char c3 = '5'; char c4 = '/'; ``` ##### 1.5.1 字符轉義序列 字符字面值也可以表示為**字符轉義序列**。 字符轉義序列以反斜杠開頭,后跟一個字符,并且兩者都用單引號引起來。 **共有八個預定義的字符轉義序列**,如下所示: | 字符轉義序列 | 描述 | | --- | --- | | `\n` | 換行 | | `\r` | 回車 | | `\f` | 換頁 | | `\b` | 退格鍵 | | `\t` | 標簽 | | `\\` | 反斜杠 | | `\"` | 雙引號 | | `\'` | 單引號 | 這些只是 Java 中的八個字符轉義序列。 您不能定義自己的字符轉義序列。 ##### 1.5.2 Unicode 轉義序列 字符字面值也可以表示為`'\uxxxx'`形式的 Unicode 轉義序列,此處`\u`(反斜杠緊跟小寫的`u`)表示 Unicode 轉義序列的開始,并且`xxxx`恰好代表四個十六進制數字。 ```java char c1 = 'A'; char c2 = '\u0041'; // Same as c2 = 'A' ``` ## 2\. 浮點數據類型 包含**小數部分**的浮點數被稱為**實數**,例如 3.25、0.49,-9.19 等。 #### 數字如何存儲在內存中 將實數轉換為二進制表示形式時,計算機還必須存儲數字中小數點的位置。 有兩種策略可以將實數存儲在計算機內存中。 1. **定點數字格式** – 僅存儲數字的二進制表示,并假定在該點之前和之后始終有固定數量的數字。 一個點在數字的十進制表示形式中稱為**小數點**,在二進制表示形式中稱為二進制點。 點的位置始終固定在數字中的表示類型稱為“定點”數字格式。 2. **浮點數格式** – 存儲實數的二進制表示形式以及該點在實數中的位置。 由于在這種實數表示中,點之前和之后的位數可能會有所不同,因此我們說該點可以浮動。 這種表示形式稱為“浮點”格式。 與定點表示相比,浮點表示的**速度較慢,準確度較低**。 但是,與定點表示相比,浮點表示可以在相同的計算機內存中處理更大范圍的數字。 > Java 支持“浮點”數字格式。 ![Floating-Point Numbers](https://img.kancloud.cn/41/bc/41bcd9187722884c1c10a702219817c1_449x136.png) IEEE-754 32 位單精度浮點數 Java 有兩種浮點數字數據類型:`float`和`double`。 #### 2.1 `float`數據類型 `float`數據類型以 **32 位** [IEEE 754 標準格式](https://en.wikipedia.org/wiki/IEEE_754)存儲浮點數(*單精度浮點數*)。 它的實數大小可小至`1.4 x 10 ^ -45`,大至`3.4 x 10 ^ 38`。 該范圍僅包括幅度。 它可以是正面的或負面的。 所有以`f`或`F`結尾的實數都稱為**浮點字面值**。 ```java float f1 = 8F; float f2 = 8.F; float f3 = 8.0F; ``` ##### 2.1.1 正負無窮大 `float`數據類型定義兩個無限性:正無窮大和負無窮大。 例如,將`2.5F`除以`0.0F`的結果是浮點正無窮大,而`2.5F`除以`-0.0F`的結果是浮點負無窮大。 ##### 2.1.2 `NaN`(非數字) 未對`float`上的某些操作結果進行定義。 這些結果由稱為`NaN`(非數字)的`float`數據類型的特殊值表示。 `Float`類定義了三個常量,分別表示`float`數據類型的正無窮大,負無窮大和`NaN`。 還有兩個常量,它們代表可以存儲在`float`變量中的最大值和最小值(大于零)。 ```java Float.POSITIVE_INFINITY - Positive infinity of type float. Float.NEGATIVE_INFINITY - Negative infinity of type float. Float.NaN - Not a Number of type float. Float.MAX_VALUE - The largest positive value that can be represented in a float variable. Float.MIN_VALUE - The smallest positive value greater than zero that can be represented in a float variable. ``` 請注意,可以將所有整數類型(`int`,`long`,`byte`,`short`和`char`)的值分配給`float`數據類型的變量,而無需使用顯式強制轉換,但必須先對`float`值進行強制轉換,然后再將其賦給任何整數數據類型`int`,`long`,`byte`,`short`或`char`的變量。 #### 2.2 `double`數據類型 `double`數據類型以 **64 位**“IEEE 754 標準格式”存儲浮點數。 根據 IEEE 754 標準,以 64 位表示的浮點數也稱為**雙精度浮點數**。 所有實數都稱為`double`字面量。 雙精度字面值可以選擇以`d`或`D`結尾,例如`19.27d`。 但是,后綴`d`或`D`在雙字面量中是可選的。 也就是說,`19.27d`和`19.27D`都代表相同的雙字面量。 ```java double d1 = 8D double d2 = 8.; double d3 = 8.0; double d4 = 8.D; ``` 像`float`數據類型一樣,`double`數據類型定義了最大值,最小值,兩個無限和一個`NaN`值。 ```java Double.POSITIVE_INFINITY - Positive infinity of type double. Double.NEGATIVE_INFINITY - Negative infinity of type double. Double.NaN - Not a Number of type double. Double.MAX_VALUE - The largest positive value that can be represented in a double variable. Double.MIN_VALUE - The smallest positive value greater than zero that can be represented in a double variable. ``` ## 3\. 布爾值 #### 3.1 布爾數據類型 布爾數據類型只有兩個有效值:`true`和`false`。 這兩個值稱為**布爾字面值**。 您可以將布爾字面值用作 ```java boolean done; // Declares a boolean variable named done done = true; // Assigns true to done ``` 需要注意的重要一點是*布爾變量不能轉換為任何其他數據類型,反之亦然*。 Java 沒有指定布爾數據類型的大小。 它的大小由 JVM 實現決定。 通常,布爾數據類型的值在內部以字節存儲。 這就是 Java 中可用的 8 種原始數據類型的全部內容。 學習愉快! 閱讀更多: [Oracle Java 文檔](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) [數據表示](http://www.ntu.edu.sg/home/ehchua/programming/java/datarepresentation.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看