我有兴趣用Java做这个C代码:
// sets n's ith bit from right, i starts from 0
void setBit(int* n, int i){
*n = *n | (1 << i);
}
Run Code Online (Sandbox Code Playgroud)
但是,看起来java无法传递地址,那么一些干净的方法会是什么呢?
我想到了两种方法,但我想知道是否有更好的方法来做到这一点?
方法1:使用数组
// 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);
}
Run Code Online (Sandbox Code Playgroud)
方法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);
}
Run Code Online (Sandbox Code Playgroud)
不,没有更好的方法来做到这一点......
除非你想用传统的Java方式来做,否则就是这样
d = setBit(d, i);
public int setBit(int d, int i) {
return d | (1 << i);
}
Run Code Online (Sandbox Code Playgroud)
这在Java中可以说"修改函数的参数"几乎是不洁净的.干净的方法是找到一些修改参数的替代方法.
(有时这是不可避免的,在这种情况下,你的解决方法就是可行的方法.也就是说,如果你想编写一个方法modify(myData)
,通常最好在modify()
方法中添加一个方法myData
.)
归档时间: |
|
查看次数: |
88 次 |
最近记录: |