<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Java 中的數據類型 > 原文: [https://howtodoinjava.com/java/basics/data-types-in-java/](https://howtodoinjava.com/java/basics/data-types-in-java/) 了解 **Java 數據類型**。 **基本數據類型**和**非基本數據類型**(或引用數據類型)之間的差異。 知道數據類型大小和最佳實踐以在 Java 中使用數據類型。 ## 1\. 什么是數據類型 在 Java 中,通常**數據類型與變量**關聯。 變量具有三個屬性: 1. **變量名**(也稱為標識符),用于引用存儲器位置 2. 存儲在存儲位置的數據的**類型(稱為數據類型)** 3. **存儲器位置**以保存該值 ![Java Data Type](https://img.kancloud.cn/39/a1/39a125a2af1e69960892d76064e22c54_543x221.png) Java 數據類型 第二個屬性(標記為紅色)稱為**數據類型**。 變量的數據類型決定了存儲位置可以保存的值的**范圍**。 因此,為變量分配的內存量取決于其數據類型。 例如,為`'int'`數據類型的變量分配了 32 位內存。 > Java 是一種靜態類型的語言。 這意味著**必須先聲明所有變量,然后才能使用**。 ```java boolean flag = true; int counter = 20; ``` ## 2\. Java 中的數據類型 Java 支持**兩種數據類型**,即**基本數據類型**和*非基本*或**引用數據類型**。 #### 2.1 原始數據類型 直接*的原始數據類型*在內存中保存一個值。 例如,數字或字符。 原始數據類型不是 對象,也不是對對象的引用。 存儲在原始類型中的值稱為*字面值*。 **字面值**是固定值的源代碼表示; 字面值直接在您的代碼中表示,無需計算。 在 Java 中,我們有 8 種原始數據類型。 | 數據類型 | 描述 | 默認值 | 內存大小 | | --- | --- | --- | --- | | `boolean` | `true`或`false`的二元值 | `false` | 1 位 | | `char` | 任何 Unicode 字符 | `\u0000(0)` | 16 位 Unicode 字符 | | `byte` | 值從 -128 到 127 | 0 | 8 位有符號值 | | `short` | 值從 -32768 到 32767 | 0 | 16 位有符號值 | | `int` | 值從`-2 ^ 31`到`2 ^ 31 -1` | 0 | 32 位有符號值 | | `long` | 值從`-2 ^ 63`到`2 ^ 63 -1` | 0 | 64 位有符號值 | | `float` | [IEEE 754 浮點](https://en.wikipedia.org/wiki/IEEE_754) | 0.0 | 32 位浮點值 | | `double` | IEEE 754 浮點 | 0.0 | 64 位浮點值 | > 在 Java SE 7 和更高版本中,任何數量的**下劃線**字符(`'_'`)都可以出現在數字字面值中數字之間的任何位置。 例如 `10_000_000`是 Java 中的有效數字。 #### 2.1.1 原始類型之間的類型轉換 除`boolean`之外,您可以將一個原始值分配給另一個原始類型。 但是,當將較大存儲容量的原始類型分配給具有較小存儲容量的原始類型時,有時可能會導致**數據丟失**。 就像您要從大容器中轉移水,然后將小容器中的水轉??移一樣,所以自然而然地就會流失水。 ```java int counter = 20_000_000; //Assign int to short (data loss) short shortCounter = (short) counter; //assign int to long (no data loss) long longCounter = counter; System.out.println(counter); //20000000 System.out.println(shortCounter); //11520 System.out.println(longCounter); //20000000 ``` 請注意,當 Java 檢測到類型轉換可能會導致數據丟失(較大的數據類型轉換為較小的數據類型)時,會給出**類型不匹配錯誤**,并明確要求**類型轉換**(例如`int`到`short`賦值)。 它有助于檢測和解決意外的數據丟失。 #### 2.2 非原始數據類型 非原始或引用數據類型將對對象的引用保存在內存中。 使用存儲在變量中的引用,您可以訪問引用對象的字段和方法。 例如,`java.lang.String`是 Java 庫中定義的類,您可以使用它來處理文本(字符序列)。 您將類型為`String`的引用變量聲明為: ```java String str = new String( "Hello World !!" ); ``` 執行此代碼會怎樣? 首先,分配一個存儲塊,并將變量`str`的名稱與該存儲位置關聯。 此過程與聲明原始數據類型變量的過程相同。 代碼的第二部分在內存中使用文本`"Hi"`創建一個新的`String`對象,并將`String`對象的引用(或內存地址)存儲到變量`'str'`中。 #### 2.2.1 多個引用可以引用同一對象 您還可以將存儲在一個引用變量中的對象的引用分配給另一引用變量。 在這種情況下,兩個引用變量都將引用內存中的同一對象。 ```java // Declares String reference variable str1 and str2 String str1; String str2; // Assigns the reference of a String object "Hello" to str1 str1 = new String( "Hello World !!" ); // Assigns the reference stored in str1 to str2 str2 = str1; System.out.println( str1 ); //Hello World !! System.out.println( str2 ); //Hello World !! ``` 有一個引用常量(也稱為引用字面值)`null`,可以將其分配給任何參考變量。 如果將`null`分配給引用變量,則意味著該引用變量沒有引用內存中的任何對象。 #### 2.2.2 包裝類 包裝類是其對象**包裝或包含原始數據類型**的類。 換句話說,我們可以將原始值包裝到包裝類對象中。 請注意,Java 有**一個包裝類,映射到每種原始數據類型**。 例如,`java.lang.Integer`類是`int`數據類型的對象版本。 同樣,對于所有 8 種基本數據類型,我們總共有 8 個包裝器類。 包裝器類名稱與原始數據類型名稱相同,僅以大寫字母開頭。 這些包裝器類別是`Boolean`,`Byte`,`Short`,`Character`,`Integer`,`Long`,`Float`和`Double`。 #### 2.2.3 自動裝箱 在 Java 中,可以直接將原始類型值分配給包裝器類。 例如,您可以將`int`值分配給`Interger`類引用。 ```java Integer counter = 20; static Float PI = 3.14f; ``` > 值得一提的是,所有包裝器類實例都是不可變的。 由于性能原因,它們還維護[內部緩存](https://howtodoinjava.com/java/basics/object-initialization-best-practices-internal-caching-in-wrapper-classes/)。 ## 3\. 原始和非原始數據類型之間的區別 1. 原始類型直接存儲值,稱為字面值。 引用類型將對實際對象的引用存儲在存儲區中。 2. 有 8 種固定的原始數據類型。 在 Java 中,每個類都是包含包裝器類的數據類型。 ## 4\. 最佳做法 1. 使用 Java 變量命名約定并遵循最佳實踐。 2. 將原始類型用于范圍內局部變量。 例如內部方法,用于循環和中間結果的計數器。 3. 在方法或類之間傳輸數據時,最好使用對象,因為只會復制它們的引用,而不會增加內存開銷。 4. 在處理集合(需要對象)時,應使用對象。 5. 通過網絡發送數據時,請使用對象并使它們成為**可序列化的**。 包裝器類可自動序列化。 6. 始終知道您將需要的數據類型的大小。 使用適當的數據大小。 使用`int`存儲`boolean`值(0 和 1)會浪費內存。 7. 在數字中使用下劃線(Java 7 以上)。 這使它們**更具可讀性**。 學習愉快! 閱讀更多: [SO 帖子](https://stackoverflow.com/questions/13902281/best-practices-what-to-use-wrapper-classes-or-primitive-data-types) [Oracle 文檔](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variablesummary.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>

                              哎呀哎呀视频在线观看