我是java的新手.如何编写java相当于以下C代码.
void Swap(int *p, int *q)
{
int temp;
temp = *p;
*p = *q;
*q = temp;
}
Run Code Online (Sandbox Code Playgroud) 我在Java中需要一个可变的布尔字段(稍后我将通过get*方法返回此字段,并且应该可以修改此字段).
布尔值不起作用,因为布尔类中没有set*方法(我会说布尔值是不可变的,你只能改变引用,但你不能改变对象本身).
我想我可以使用大小为1的布尔数组.但是可能有更优雅的解决方案?
为什么Java没有这么简单的东西?
我想调用一个可能采用不同版本的方法,即类型为输入参数的相同方法:
我想这样做的方法是"重载"方法(我认为这是正确的术语?):
public void getValue(byte theByte) {...}
public void getValue(short theShort) {...}
... etc ...
Run Code Online (Sandbox Code Playgroud)
...但这意味着我必须通过引用传递原始类型...类似于C++,其中方法具有外部效果,其中它可以修改其范围之外的变量.
有没有办法在不创建新类或使用原始类型的Object版本的情况下执行此操作?如果没有,有关替代战略的任何建议吗?
让我知道是否应该进一步解释清除任何混淆.
我实际上要做的是从一组位构造基本类型.因此,如果我正在处理方法的字节版本,我希望我的工作能够得到8位并返回字节(因为我无法通过引用传递).
我问这个问题的原因是因为我用bit做的工作是非常重复的,我不想在不同的方法中使用相同的代码.所以我想找到一种方法让我的ONE方法知道我正在谈论多少位......如果我正在处理一个字节,那么就是8位,如果我正在处理一个短的16位等等...
我需要在 java 中通过引用传递一个整数。有没有一种简单的方法可以做到这一点?在 C++ 中,通过在整数之前放置“&”将通过引用传递。这是我试图转换为 Java 的 C 代码:
void count(int distance, int i, int &counter, int array[], int n) {
if (i == distance)
counter++;
else {
for (int j = 0; j < n; j++) {
if (i <= distance - array[j])
count(distance, i + array[j], counter, array, n);
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有整数对象的情况下做到这一点?(我不想再上一堂课)
我有一个问题:如何在方法extendedEuclid中传递原始long类型作为引用?我发现它在java中是不可能的,还有其他解决方案吗?
参数long a必须通过引用传递,这是下面的代码.
public long extendedEuclid(long a, long b) //a have to be passed as a reference
{
long x = 0;
long y = 1;
long lx = 1;
long ly = 0;
long temp_a;
List quotient = new ArrayList<>();
while(b != 0)
{
quotient.add(a/b);
temp_a = a;
a = b;
b = temp_a % b;
}
long temp_x = x;
long temp_y = y;
for(int i=0; i<quotient.size()-1; i++)
{
x = lx - quotient.indexOf(i) * x;
y = …Run Code Online (Sandbox Code Playgroud)