我知道 Java 中没有指针。但是如何更改调用范围中的值?例如,我想编写一个接受整数 num 的函数,如果整数大于 21,则将其设置为 0,否则什么也不做。 大体上,我的代码如下:
int a=34;
KillOver21(a);
System.out.print(a);
我希望是 0。
最佳答案
Java 是 pass by value ,所以参数a的副本被发送到方法,所以在方法中修改a
不会影响main
中的原始参数a
>
您最多可以从 KillOver21(a)
方法返回 int
int z = KillOver21(a); // This will return 0
System.out.print(z);
但是你可以用自定义对象实现类似的东西,假设你有一个类
class AHolder {
public int a;
}
那么你可以期待 AHolder
实例发生变化
public static void main(String [] args) {
AHolder a = new AHolder();
a.a = 34;
killOver21(a);
System.out.println(a.a);
}
public static void killOver21(AHolder b) {
if(b.a > 21) {
b.a = 0;
}
}
因为在后者中(即使它的按值传递),引用被复制并且两个引用指向同一个对象。因此,在 killOver21
方法中所做的更改实际上更改了对象。
关于java - 如何实现一个基本指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18201169/