在java混乱中传递一个值

时间:2017-01-29 21:49:52

标签: java

我是编程新手。

用外行人的话说,当有人说“传递价值”时,这是什么意思?

有人告诉我:

public Money (int cost)

需要传递一个值,我不明白其含义。

感谢。

3 个答案:

答案 0 :(得分:3)

Java通过引用操作对象,所有对象变量都是引用。但是,Java不通过引用传递方法参数;它按值传递它们。

以该代码为例:

import java.util.HashMap;

public class Test {

    public static void main(String[] args) {

        HashMap<Integer, String> map = new HashMap<>();

        map.put(1, "Value 1");
        map.put(2, "Value 2");
        map.put(3, "Value 3");
        map.put(4, "Value 4");
        map.put(5, "Value 5");

        System.out.println(map);

        // existing key but new value
        map.put(2, "Value 7");

        System.out.println(map);

    }
}

请注意,public void Money (int cost) { cost = cost + 2; } 变量已添加2。现在,假设我们有一些调用Money方法的代码:

cost

在main方法中,我们将变量public static void main(String [] args) { int passing = 3; Money (passing); System.out.println("The value of passing is: " + passing); } 设置为3,然后将该变量传递给passing方法,然后将2加到传入的变量中。

您认为Money来电会打印出来怎么样?好吧,如果你认为它会打印出System.out.println你错了。它实际上会打印出5。当我们在Money方法中明确添加2时,为什么打印出3?

它打印出的原因3是因为Java由值传递参数 - 这意味着当该呼叫为3是由,Java将刚创建的副本Money变量和该副本是传递给Money方法的 - 而不是存储在passing方法中的原始变量。这就是为什么Money方法中main发生的任何事情都不会影响main方法中的cost变量。

答案 1 :(得分:0)

传递值是发送方法或类使用的指定值。

在您显示的行中,名为 cost 的整数的值被传递给类对象 Money (我假设它是一个类,因为类通常是大写的)由另一个对象。

方法的参数是必须由任何对象调用它传递的值。

传递只是从另一个对象向该对象发送一个值。当你调用方法或类时,括号中的内容是传递给它的内容(尽管传递给类时,必须存在构造函数)。

答案 2 :(得分:-1)

在Java中,从结果中,您将看到:

  • 当你传递一个原始类型的值,比如int,double,float等时,但是你修改了接受方法中的值,原始变量的值不会改变。

  • 传递对象时,如果在接受方法中修改对象数据,则需要修改原始对象。

了解这一点,你知道在编写代码时你期望得到什么结果。

关于术语,请参阅其他答案/评论以获取更多详细信息。