我只是想确保我对此很清楚,因为我不确定确切的行为。我有两个数组:
private short[] bufferA;
private short[] bufferB;
我要在它之间交换。我可以这样做:
private short[] currentBuffer;
while(something)
{
currentBuffer = (condition) ? bufferA : bufferB;
modify(currentBuffer);
}
根据某些条件修改bufferA或bufferB,或者我应该使用标志并手动编码,如下所示:
private int currentBuffer;
while(something){
currentBuffer = (condition) ? BUFFER_A : BUFFER_B;
if(currentBuffer == BUFFER_A) {
modify(bufferA);
}else{
modify(bufferB);
}
}
我正在使用的代码比这个简化的示例更复杂,所以如果我能够做到第一种更受欢迎的方式。
答案 0 :(得分:4)
虽然您的数组持有基元,但数组本身就是对象
所以参考可行。
Java通过值原语和引用对象传递。
乌
答案 1 :(得分:3)
是的,你可以。对数组的引用与任何其他引用一样。
答案 2 :(得分:2)
你的第一个例子应该可以正常工作。
答案 3 :(得分:1)
第一种方法适用于数组(或任何其他容器)。
但是,您无法重新分配变量,只需更改其内容:
int myVar = someCondition ? myInt1 : myInt2;
// this has no effect on either myInt1 or myInt2
myVar = 1000;
这里的原因是Java按值传递所有内容,包括引用。
因此,如果您将引用传递给其他地方的容器,则该代码可以更改容器的内容,您的代码将看到更改。
答案 4 :(得分:1)
两者都是allrite ..你可以继续第一种方式.. 编辑:作为旁注,java中的引用更像是c ++中的指针而不是c ++中的引用。当然,java引用和c ++指针之间仍然存在一些差异,例如你可以在c ++中做指针运算..