<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 功能強大 支持多語言、二開方便! 廣告
                ## 數組拷貝 與使用for循環手工執行復制相比,**copyOf()** 和 **copyOfRange()** 復制數組要快得多。這些方法被重載以處理所有類型。 我們從復制 **int** 和 **Integer** 數組開始: ```JAVA // arrays/ArrayCopying.java // Demonstrate Arrays.copy() and Arrays.copyOf() import onjava.*; import java.util.Arrays; import static onjava.ArrayShow.*; class Sup { // Superclass private int id; Sup(int n) { id = n; } @Override public String toString() { return getClass().getSimpleName() + id; } } class Sub extends Sup { // Subclass Sub(int n) { super(n); } } public class ArrayCopying { public static final int SZ = 15; public static void main(String[] args) { int[] a1 = new int[SZ]; Arrays.setAll(a1, new Count.Integer()::get); show("a1", a1); int[] a2 = Arrays.copyOf(a1, a1.length); // [1] // Prove they are distinct arrays: Arrays.fill(a1, 1); show("a1", a1); show("a2", a2); // Create a shorter result: a2 = Arrays.copyOf(a2, a2.length / 2); // [2] show("a2", a2); // Allocate more space: a2 = Arrays.copyOf(a2, a2.length + 5); show("a2", a2); // Also copies wrapped arrays: Integer[] a3 = new Integer[SZ]; // [3] Arrays.setAll(a3, new Count.Integer()::get); Integer[] a4 = Arrays.copyOfRange(a3, 4, 12); show("a4", a4); Sub[] d = new Sub[SZ / 2]; Arrays.setAll(d, Sub::new); // Produce Sup[] from Sub[]: Sup[] b = Arrays.copyOf(d, d.length, Sup[].class); // [4] show(b); // This "downcast" works fine: Sub[] d2 = Arrays.copyOf(b, b.length, Sub[].class); // [5] show(d2); // Bad "downcast" compiles but throws exception: Sup[] b2 = new Sup[SZ / 2]; Arrays.setAll(b2, Sup::new); try { Sub[] d3 = Arrays.copyOf(b2, b2.length, Sub[].class); // [6] } catch (Exception e) { System.out.println(e); } } } /* Output: a1: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] a1: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] a2:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]a2:[0, 1, 2, 3, 4, 5, 6]a2:[ 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0]a4:[4, 5, 6, 7, 8, 9, 10, 11][Sub0, Sub1, Sub2, Sub3, Sub4, Sub5, Sub6][ Sub0, Sub1, Sub2, Sub3, Sub4, Sub5, Sub6]java.lang.ArrayStoreException */ ``` [1] 這是復制的基本方法;只需給出返回的復制數組的大小。這對于編寫需要調整存儲大小的算法很有幫助。復制之后,我們把a1的所有元素都設為1,以證明a1的變化不會影響a2中的任何東西。 [2] 通過更改最后一個參數,我們可以縮短或延長返回的復制數組。 [3] **copyOf()** 和 **copyOfRange()** 也可以使用包裝類型。**copyOfRange()** 需要一個開始和結束索引。 [4] **copyOf()** 和 **copyOfRange()** 都有一個版本,該版本通過在方法調用的末尾添加目標類型來創建不同類型的數組。我首先想到的是,這可能是一種從原生數組生成包裝數組的方法,反之亦然。 但這沒用。它的實際用途是“向上轉換”和“向下轉換”數組。也就是說,如果您有一個子類型(派生類型)的數組,而您想要一個基類型的數組,那么這些方法將生成所需的數組。 [5] 您甚至可以成功地“向下強制轉換”,并從超類型的數組生成子類型的數組。這個版本運行良好,因為我們只是“upcast”。 [6] 這個“數組轉換”將編譯,但是如果類型不兼容,您將得到一個運行時異常。在這里,強制將基類型轉換為派生類型是非法的,因為派生對象中可能有基對象中沒有的屬性和方法。 實例表明,原生數組和對象數組都可以被復制。但是,如果復制對象的數組,那么只復制引用—不復制對象本身。這稱為淺拷貝(有關更多細節,請參閱附錄:傳遞和返回對象)。 還有一個方法 **System.arraycopy()** ,它將一個數組復制到另一個已經分配的數組中。這將不會執行自動裝箱或自動卸載—兩個數組必須是完全相同的類型。
                  <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>

                              哎呀哎呀视频在线观看