首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Java中对原语进行引用传递等效?

如何在Java中对原语进行引用传递等效?
EN

Stack Overflow用户
提问于 2018-02-28 00:53:39
回答 2查看 0关注 0票数 0

Java代码:

public class XYZ {   
    public static void main(){  
        int toyNumber = 5;   
        XYZ temp = new XYZ();  
        temp.play(toyNumber);  
        System.out.println("Toy number in main " + toyNumber);  
    }

    void play(int toyNumber){  
        System.out.println("Toy number in play " + toyNumber);   
        toyNumber++;  
        System.out.println("Toy number in play after increement " + toyNumber);   
    }   
}  

将输出以下内容:

Toy number in play 5  
Toy number in play after increement 6  
Toy number in main 5  

在C++中,可以通过toyNumber变量作为引用传递.如下所示:

void main(){  
    int toyNumber = 5;  
    play(toyNumber);  
    cout << "Toy number in main " << toyNumber << endl;  
}

void play(int &toyNumber){  
    cout << "Toy number in play " << toyNumber << endl;   
    toyNumber++;  
    cout << "Toy number in play after increement " << toyNumber << endl;   
} 

C++输出如下:

Toy number in play 5  
Toy number in play after increement 6  
Toy number in main 6  
EN

回答 2

Stack Overflow用户

发布于 2018-02-28 08:58:05

选择1:使toyNumber成为类中的公共成员变量

class MyToy {
  public int toyNumber;
}

然后将对MyToy的引用传递给方法。

void play(MyToy toy){  
    System.out.println("Toy number in play " + toy.toyNumber);   
    toy.toyNumber++;  
    System.out.println("Toy number in play after increement " + toy.toyNumber);   
}

选择2:返回值而不是通过引用传递

int play(int toyNumber){  
    System.out.println("Toy number in play " + toyNumber);   
    toyNumber++;  
    System.out.println("Toy number in play after increement " + toyNumber);   
    return toyNumber
}

这个选择主要需要对调用站点进行一个小的更改,以便它可以读取,toyNumber = temp.play(toyNumber);...

选择3:使其成为类或静态变量

如果这两个函数是同一个类或类实例上的方法,则可以将toyNumber转换为类成员变量。

选择4:创建一个int类型的单一元素数组并传递

void play(int [] toyNumber){  
    System.out.println("Toy number in play " + toyNumber[0]);   
    toyNumber[0]++;  
    System.out.println("Toy number in play after increement " + toyNumber[0]);   
}
票数 0
EN

Stack Overflow用户

发布于 2018-02-28 10:41:57

Java不是通过引用调用它是只按值调用

public class XYZ {

    public static void main(String[] arg) {
        StringBuilder toyNumber = new StringBuilder("5");
        play(toyNumber);
        System.out.println("Toy number in main " + toyNumber);
    }

    private static void play(StringBuilder toyNumber) {
        System.out.println("Toy number in play " + toyNumber);
        toyNumber.append(" + 1");
        System.out.println("Toy number in play after increement " + toyNumber);
    }
}

此代码的输出:

run:
Toy number in play 5
Toy number in play after increement 5 + 1
Toy number in main 5 + 1
BUILD SUCCESSFUL (total time: 0 seconds)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档