Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将变量从函数返回到输入变量_Java_Android - Fatal编程技术网

Java 将变量从函数返回到输入变量

Java 将变量从函数返回到输入变量,java,android,Java,Android,如何通过调用函数来更改变量 范例 byte a; ... void setBit(byte variable, byte n){ variable |= (1<<n); } ... setBit(a,2); System.out.println(a); // expected output "2" 您可以使用setter方法的return,如: private byte setBit(byte variable, byte n){ variable |= (1&l

如何通过调用函数来更改变量

范例

byte a;
...

void setBit(byte variable, byte n){
variable |= (1<<n);

}

...
setBit(a,2);

System.out.println(a); // expected output "2"

您可以使用setter方法的return,如:

private byte setBit(byte variable, byte n){
     variable |= (1<<n);
     return variable;
}

答案是,除非您制作自己的字节包装器,允许修改其内部结构,否则无法实现

<>你不能像C++那样通过引用传递基本类型。 在很多情况下,这是一件好事,在某些特殊情况下,这是一件值得错过的事情

与Venkatesh试图建议的类似,但不同之处在于它不使用Byte(这是不可变的afaik)对象。您可以实现ByteWrapper,但它不会自动转换为Byte之类的基本类型。您必须调用byteWrapper.getByte()

然后你可以用

void setBit(ByteWrapper bw, byte n){
    bw.setByte(byte.getByte() |= (1<<n));
}
void setBit(字节包装bw,字节n){

bw.setByte(byte.getByte()|=(1这不是Java的工作方式。您能做的最好的事情是更改对象的属性。您不能修改原语类型变量所持有的调用者值。您需要返回修改后的
字节
,并将其分配给调用者中的某个对象。或者,使用数组或对象。正如我在讨论中所写的,如果可能的话,我希望防止这种情况发生。
a = setBit(a, 2);
public class ByteWrapper {
    private byte byteValue = 0;
    public ByteWrapper(byte b) {
        byteValue = b;
    }

    public byte getByte() { return b; }
    public void setByte(byte b) { byteValue = b; }
}
void setBit(ByteWrapper bw, byte n){
    bw.setByte(byte.getByte() |= (1<<n));
}