我对用 Java 编写这个 C 代码很感兴趣:
// sets n's ith bit from right, i starts from 0
void setBit(int* n, int i){
*n = *n | (1 << i);
}
但是,看起来 java 不能传递地址,那么有什么干净的方法呢?
我想到了两种方法,但我想知道是否有更好的方法来做到这一点?
方法一:使用数组
// sets n[0]'s ith bit from right, i starts from 0
public void setBit(int[] n, int i){
n[0] = n[0] | (1 << i);
}
方法2:使用类
private class Data{
int value;
}
// sets d.value's ith bit from right, i starts from 0
public void setBit(Data d, int i){
d.value = d.value | (1 << i);
}