Javaは常に値渡しであり、C++のようにグローバル変数はありません。したがって、C++と同じようにしたい場合は、新しい値を返す必要があります。
Thusly:
public int change(int x) {
return ++x;
// or
// return x + 1;
}
それをテストするには:
int x = 2;
change(x);
System.out.println(x); // returns 2
x = change(x);
System.out.println(x); // returns 3
だから、メソッドがchange
と呼ばれるようにする任意の意味がありません、それはcalculateThisInt
の線に沿って、より賢明です。
Javaはオブジェクトを値渡しします。しかし、Mark ByersにはIntegerクラスが不変であることが記載されているため、Apache CommonsライブラリのMutableInt
を使用できます。これはあなたがあなたの例のためにそれを自分で実装できる機能について説明するには:
public void change(MyInt i) {
i.increment();
}
は使用法::
MyInt x = new MyInt();
x.setInt(2);
change(x);
System.out.println(x.getInt); // returns 3
public class MyInt() {
public int i;
public void setInt(int i) {
this.i = i;
}
public int getInt() {
return this.i;
}
public int increment() {
this.i++;
}
}
あなたは、引数として上記MyInt
オブジェクトを持っているあなたのchange
機能を変更する必要があります
を変更したい場合オブジェクト...
public void changeVector(Vector v) {
// anything you do with 'v' will change it even
// for the scope that called this method
}
// Usage:
Vector v = new Vector();
changeVector(v);
// v should be changed after calling change vector method
これはすべて意味があります。
Javaは常に値渡しです。 –
答えは "あなたができない"可能性が高いです - しかし、私たちに関連するJavaコードを与えることから始める... –
[Javaで参照渡す方法]の可能な複製(http://stackoverflow.com/questions/5614562) /どのようにJavaで参照渡し) –