1

さて、これは間違いなくn00bの質問ですが、ここに行きます。

私が理解しているように、Javaのオブジェクトは、参照ではなく値によって渡されます。それでは、メソッドへの参照を渡すことによって、メソッド内のクラスメンバーをどのように変更しますか?

getRotationMatrixメソッドがそれを行うので、それが可能であることを私は知っています...つまり、クラスレベルで次のように書く場合:

private float rotationMatrix[] = new float[9];

次に、私が呼び出すメソッド内で:

SensorManager.getRotationMatrix(rotationMatrix, inclinationMatrix, gData, mData);

これにより、rotationMatrixが変更されます。私の質問は、すべてが値で渡された場合、そのメソッドは渡したオブジェクトの内容をどのように変更するのかということです。

私が尋ねる理由は、私が同じことをするメソッドを書き込もうとしているが、値渡しの難問にぶつかり続けているからです。FloatBufferへの参照をメソッドに渡して、FloatBufferを初期化しようとしています。

4

3 に答える 3

3

はい、オブジェクトは値で渡されます。ただし、オブジェクトは参照であるため、参照のコピーが渡されます。参照を使用してオブジェクトを変更できますが、参照を変更しても呼び出し元には影響しません。

例えば:

List list = new ArrayList();
modifyList(list);
noOp(list);

void modifyList(List l)
{
   l.add("A"); // A is added to list
}

void noOp(List l)
{
   l = null; // No effect to list, you are modifying local variable l.
}
于 2012-06-20T05:09:27.467 に答える
0

Javaオブジェクトは参照によって渡されます。参照をプリミティブと混同している可能性があります。プリミティブは常に値によって渡されます。

于 2012-06-20T05:06:38.377 に答える
0

さて、Javaでオブジェクトを扱っている場合は、2つのことがあることを理解してください。1つ目はオブジェクトで、2つ目はオブジェクトへの参照です。

したがって、オブジェクトの参照をメソッドに渡すと、参照自体が値によって渡されます。つまり、渡されたものと同じ新しい参照がメソッドに作成されます。ただし、参照はコピーされますが、オブジェクトはこの新しい参照で操作できる場所にあることに注意してください。

SensorManager.getRotationMatrix(rotationMatrix, inclinationMatrix, gData, mData);

この例では、getRotationMatrix()メソッドに新しいrotationMatrix参照が与えられています。しかし、この参照によって、実際のArrayオブジェクトの操作を妨げるものはありません。

于 2012-06-20T05:51:25.160 に答える