<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/java-wrapper-classes/](https://howtodoinjava.com/java/basics/java-wrapper-classes/) 了解 **Java 包裝器類**的用法,它們在原始和對象之間的轉換; 以及帶有示例的自動裝箱和拆箱。 ## 1\. Java 包裝器類 Java 提供**類型包裝器**,它們是**封裝對象內原始類型**的類。 在 Java 中,我們有 [8 種原始數據類型](https://howtodoinjava.com/java/basics/primitive-data-types-in-java/)。 包裝器類將數據類型包裝(封裝)并賦予其對象外觀。 在任何需要數據類型作為對象的地方,都可以使用此對象。 包裝器類包括解包裝對象并返回數據類型的方法。 *類型包裝器*類是`java.lang`包的一部分。 每個基本類型都有一個對應的包裝器類。 | **基本類型** | **包裝類** | | --- | --- | | `double` | `Double` | | `float` | `Float` | | `long` | `Long` | | `int` | `Integer` | | `short` | `Short` | | `byte` | `Byte` | | `char` | `Character` | | `boolean` | `Boolean` | ## 2\. 何時使用包裝器類 在場景中使用 Java 包裝器類: * 當兩個方法要引用基本類型的相同實例時,請將包裝器類作為方法參數傳遞。 * Java 中的泛型僅適用于對象,不支持原始類型。 * Java 中的集合僅處理對象。 要將原始類型存儲在這些類之一中,您需要將原始類型包裝在一個類中。 * 要從數據類型引用`null`時,需要對象。 原始類型不能將`null`作為值。 ## 3\. 轉換 #### 3.1 包裝器類的原始類型 有兩種方法可以將原始類型轉換為相應包裝類的對象: 1. 使用**構造器** 2. 使用**靜態工廠方法**(例如`valueOf()`)(字符除外) ```java // 1\. using constructor Integer object = new Integer(10); // 2\. using static factory method Integer anotherObject = Integer.valueOf(10); ``` 在上面的示例中, `valueOf()`方法返回一個表示指定的`int`值的實例。 同樣,我們可以將其他基本類型轉換,例如將`boolean`轉換為`Boolean`,將`char`轉換為`Character`,將`short`轉換為`Short`等。 > Java 包裝器類使用[**內部緩存**](https://howtodoinjava.com/java/basics/object-initialization-best-practices-internal-caching-in-wrapper-classes/),該緩存返回緩存的值,從而使其高效且在內存上明智。 #### 3.2 包裝器類到原始類型 從包裝器轉換為原始類型很簡單。 我們可以使用相應的方法來獲取基本類型。 例如`intValue()`,`doubleValue()`,`shortValue()`等。 ```java Integer object = new Integer(10); int val = object.intValue(); //wrapper to primitive ``` ## 4\. 自動裝箱和拆箱 從 JDK 5 開始,Java 添加了兩個重要特性:*自動裝箱*和*自動拆箱*。 #### 4.1 自動裝箱 **自動裝箱**是將原始類型自動轉換為其對應的對象包裝器類的方法。 例如,將`int`轉換為`Integer`,將`char`轉換為`Character`,依此類推。 我們可以簡單地將原始類型傳遞或分配給接受包裝類對象的參數或引用。 例如 ```java Character ch = 'a'; //char to Character List<Integer> integerList = new ArrayList<>(); for (int i = 1; i < 10; i ++) { integerList.add(i); //int to Integer } ``` `integerList`是`Integer`對象的列表,而不是原始類型`int`值的列表。 編譯器會根據`i`自動創建一個`Integer`對象,并將該對象添加到`integerList`中。 因此,前面的代碼在運行時變成了下面的代碼: ```java List<Integer> integerList = new ArrayList<>(); for (int i = 1; i < 50; i += 2) { integerList.add(Integer.valueOf(i)); //autoboxing } ``` #### 4.2 拆箱 **拆箱**是在從包裝器類轉換為其對應的原始類型時發生的。 這意味著我們可以將包裝對象傳遞或分配給接受原始類型的參數或引用。 例如 ```java public static int sumOfEven(List<Integer> integerList) { int sum = 0; for (Integer i: integerList) { if (i % 2 == 0) sum += i; //Integer to int } return sum; } ``` 在上面的示例中,余數(`%`)和一元加(`+=`)運算符不適用于`Integer`對象。 編譯器在運行時通過調用`intValue()`方法自動將`Integer`轉換為`int`。 通過自動裝箱和拆箱,開發人員可以編寫**更干凈的代碼**,從而更易于閱讀。 學習愉快! 閱讀更多: [SO 帖子](https://stackoverflow.com/questions/3579035/why-are-there-wrapper-classes-in-java)
                  <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>

                              哎呀哎呀视频在线观看