ホームページ > Java > &#&はじめる > Javaで配列をコピーする方法

Javaで配列をコピーする方法

王林
リリース: 2020-10-19 16:52:37
転載
2720 人が閲覧しました

Javaで配列をコピーする方法

1. 配列の長さは等しい

nums と nums1 が同じ長さの 2 つの配列であると仮定します。

#(推奨チュートリアル:

java コース )

1.1. 割り当ての前に nums = nums1;

を使用します

Javaで配列をコピーする方法##割り当て後

Javaで配列をコピーする方法nums が作成されると、格納用のメモリ領域がヒープ内に作成され、nums はこのメモリ アドレス A を指します。 nums1 が作成されると、それは B を指します。

ここで、nums = nums1 とすると、num1 のアドレス (または参照) が num に割り当てられるため、num も B を指します。どちらの配列もヒープ内の同じメモリ領域を指し、内部のデータを共有します。

##1.2、ループ用##
        for (int i = 0; i < nums1.length; i++){
            nums[i] = nums1[i];
        }
ログイン後にコピー

ループ前

#ループ後

Javaで配列をコピーする方法参照を変更せずに、nums 配列の内部内容を正常に変更しました。

1.3、配列クラス

方法 1: 指定された配列を指定された長さにコピーするJavaで配列をコピーする方法

nums = Arrays.copyOf(nums1,5);
ログイン後にコピー

方法 2: 指定された配列の指定された長さをコピーする

nums = Arrays.copyOfRange(nums1,0,5);
ログイン後にコピー

2 種類 メソッドの最後のインデックスを配列の長さ以上にすることができ、残りに 0 が追加されます。

どちらの方法でも配列を正常にコピーでき、元の配列の番号が 524 から 526 に変更されたことがわかりました。これは、これら 2 つのコピー メソッドが新しい配列を作成し、等しい配列の左側にある配列を使用していることを示しています。この新しい配列を指すように署名します。

1.4. System.arraycopy メソッド

System.arraycopy(originalArray, 0, targetArray, 0, originalArray.length);
ログイン後にコピー

Javaで配列をコピーする方法このメソッドは for ループと似ていることがわかります。 、つまり、参照を変更せずに、元の配列の内容が直接変更されます。

2. 配列の長さが等しくありません

赋值法成功for循环要注意越界问题,会报java.lang.ArrayIndexOutOfBoundsExceptionArrays类法成功注意越界问题,会报java.lang.ArrayIndexOutOfBoundsException

其他:

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

   //思路:设置一个index,表示非0数的个数,循环遍历数组,
    // 如果不是0,将非0值移动到第index位置,然后index + 1
    //遍历结束之后,index值表示为非0的个数,再次遍历,从index位置后的位置此时都应该为0
    public void moveZeroes(int[] nums) {
        if (nums == null || nums.length <= 1) {
            return;
        }
        int index = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                nums[index] = nums[i];
                index++;
            }
        }

        for (int i = index; i < nums.length; i++) {
            nums[i] = 0;
        }
    }
ログイン後にコピー

相关推荐:java入门

以上がJavaで配列をコピーする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート