0

当我声明一个带参数的方法,并在我的方法中为这些参数赋值时,这些参数会变成变量吗?

我的问题是,我可以说:“当我在我的方法中使用它时,我的方法的参数也是一个变量”?

例子:

public int returnDays(int month)
{
month = getMonth();
//"Can I say : month is a variable?"

}
4

5 回答 5

1

是的,它被称为变量,你可以称它为变量,你可以使用它。变量是内存中的命名占位符,其值可以在程序中更改

在计算机编程中,变量是一个存储位置和一个相关的符号名称(标识符),其中包含一些已知或未知的数量或信息,一个值。变量名是引用存储值的常用方式;这种名称和内容的分离允许名称的使用独立于它所代表的确切信息。计算机源代码中的标识符可以在运行时绑定到一个值,因此变量的值可能会在程序执行过程中发生变化,引用

于 2013-07-27T13:37:12.717 回答
1
//"Can I say : month is a variable?"

是的,这是一种local variable方法。

关于传递参数的官方文档

于 2013-07-27T13:37:24.337 回答
1

你有2个问题

我声明了一个带参数的方法,并在我的方法中为这些参数赋值,这些参数变成了变量

简短回答是的,它们是变量

当我在我的方法中使用变量时,我可以将变量调用到方法的参数中吗

就您的上下文而言,是的,您可以使用它们,但从更广泛的角度来看,您应该在方法范围内访问哪些变量,然后再进入开发细节

于 2013-07-27T13:42:17.370 回答
0

我不完全明白你的问题。是的,“月”是一个变量。但是,我不确定您要通过分配它来实现什么。该int类型派生自struct,这意味着它不是通过引用传递的。当您调用 时returnDays(x)x它本身不会被传递,并且会生成它的副本。

相反,如果您想更改其值并返回天数,则需要使用reforout关键字。前者基本上传递一个指向 的指针x,它可以根据您的功能使用。然而,后者更严格,需要函数初始化通过它传递的任何值。

所以,这是你最终得到的代码

public int ReturnDays(out int month)
{
     month = GetCurrentMonth();
     return GetDays(month);
}

但是,我仍然不确定这是否是您想要的答案。

于 2013-07-27T14:55:57.353 回答
0

首先,这是 C# 还是 Java?每种语言都有自己的怪癖。

如果 C# 使用 KappaG3 显示的 out 语句。

如果是 Java,

只需在函数/方法中使用 return 语句:

    return getMonth();

如果需要返回多个值,可以传递对象,然后在函数/方法中分配给这些对象。对象是通过引用传递的,而基元是通过值传递的。整数是一个对象,但不像你可以看到的那样:

    //
public class Main {
public static void main(String[] args) {

    int      value1 = 0;
    Integer  value2 = new Integer(0);
    MyObject value3 = (new Main()).new MyObject(0);

    passByVal(value1);
    passByRef(value2);
    passByRef(value3);

    System.out.println("value1 = " + value1);
    System.out.println("value2 = " + value2);
    System.out.println("value3 = " + value3);
}

class MyObject
{
    public int value = 0;

    public MyObject(int value) { this.value = value; }

    @Override
    public String toString() {
        return value + "";
    }
}

public static void passByVal(int i)
{
    i = 7;
}
public static void passByRef(Integer i)
{
    i = new Integer(7);
}
public static void passByRef(MyObject o)
{
    o.value = 7;
}

}

返回输出:

0
0
7

因此,如果您需要返回一堆值,我建议您传递对象或返回专门设计用于保存所有这些值的对象

于 2013-07-27T17:52:47.710 回答