java - 如何实现一个基本指针

标签 java pointers

我知道 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 方法中所做的更改实际上更改了对象

enter image description here

关于java - 如何实现一个基本指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18201169/

相关文章:

Java线程: Running a simple java thread program output confusion

java - 当用户输入文本时 Swing GUI 移动

c++ - 我应该如何构造相互依赖的C++成员?

C++ 指向运算符的指针

c - 将地址作为函数参数传递

c++ - 如何实现pop()函数

java - 从根节点到所有子节点的 n-Tree 遍历

java - 设置构造函数参数时无法解析对 bean 'entityManagerFactory' 的引用;

java - Wicket 7.6.0 中的 wicket.version.undo 包

c - 二进制到十进制段错误