leetcode 88からのJavaの値によって引用の問題を考えての問題
与えられるNums1関数は、2つの配列組み合わせnums2と以下とnums1に結果を置きます。
public void merge(int[] nums1, int m, int[] nums2, int n) {
int[] tar=new int[m+n];
int count=0;
int i=0;
int j=0;
while(count<(m+n)) {
if(nums1[i]>=nums2[j]||i>=m) {
tar[count]=nums2[j];
count++;
j++;
}else if(nums1[i]<nums2[j]||j>=n) {
tar[count]=nums1[i];
i++;
count++;
}
}
nums1=tar.clone();
for(int xx=0;xx<tar.length;xx++) {
nums1[xx]=tar[xx];
}
}
私は後に戻った時には、上記のコードブロックとしてnums1を割り当てられたターゲットアレイタールタールはnums1配列の配列が変更されていない見つけました。
(前バック戻すために使用されるか、または問題を解決するためのいくつかの他の方法は、この前にあまりについて考えていないように)
最終試験合格値
public void changer(int x) {
x=10;
System.out.println("函数中修改:"+x);
}
//main中
int a=0;
System.out.println("a: "+a);
h.changer(a);
System.out.println("a1: "+a);
最后输出结果:
a: 0
函数中修改:10
a1: 0
しかし、内の値によって、JavaとCでの参照はありません。そして、唯一のJavaパラメータは値渡し
すなわち、価値によって:プロセス外の値関数による機能の彼の変化の値。参照のみが変更されます。
1.javaのみアドレス(参照)転送により、いわゆる値渡し、また、値渡し属するが、「値」がアドレスです。
参照型パラメータについて2.値渡しと参照型の値を渡している、実際には、オブジェクトのアドレスです。
1。Javaのパラメータ値が渡されます。
2。Javaのすべての変数が参照等のようになります。
3.または:コピーはコピーは基本型または参照データであることを除いて、過去渡されます。
参照変数の間に[アドレス]をコピーし、メモリにコピー(ダイレクト量として知られている)基本変数の値を; 4.フォームコピー引数が渡された関数のパラメータは、
7オブジェクト自体、及びオブジェクトのアドレスオブジェクトを渡したい場合、この関数の間で、二つのことである[]、唯一のオブジェクトのアドレスを渡すことによって達成することができます。
上記課題を解決するために次の書き込み機能