2013-07-27 55 views
0

当我使用参数声明一个方法时,并且在我的方法中,我为这些参数赋值,那些参数变成了变量?当我在方法中使用变量时,可以将变量调用到方法的参数中吗?

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

例子:

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

} 
+0

为什么要分配给参数?它是按值传递的,所以'returnDays'的调用者不会看到他提供的任何值的变化。该参数不会“变成”任何它不是因为您的任务而已。引入新的局部变量通常更清楚,而不是更改值参数的值!另外:如果你不打算读取调用者打扰发送给你的值,在你的场景中有一个参数的原因是什么? –

回答

1
//"Can I say : month is a variable?" 

是的,它是一个local variable该方法。

Official docs on passing arguments

+0

谢谢,如果我在if语句中使用月份(在同一个方法里面)呢? – tomasfly123

+0

是的,你可以使用it.Please花费一些时间在该链接:) –

1

是的,它被称为变量,你可以调用它的变量,你可以使用它。变量在存储器whoes值名为占位符可在程序

在计算机编程来改变一个变量是一个存储位置,其中包含一些已知的或 未知量的 相关符号名称(标识符)或信息,一个价值。变量名是 常用的方法来引用存储的值;将名称和 内容分开允许名称独立于其所代表的确切信息 使用。计算机源代码中的标识符 可以在运行时绑定到一个值,因此变量的值 因此可以在程序执行过程中更改为reference

1

你有2个问题

我声明的方法与参数,和我的方法里面我给你 值这些参数,这些参数变成变量

短回答是他们是变数

我可以调用变量的方法的参数时,我使用它们 我的方法里

至于你的背景而言是的,你可以使用它们,但在更广泛的角度看,变量是可以访问到您内该方法的范围,你应该read这才进入开发细节

0

我不完全得到你的问题。是的,“月”是一个变量。但是,我不确定你想通过分配它来实现什么。 int类型来自struct,这意味着它不通过引用传递。当您拨打returnDays(x)时,x本身未通过,并且其副本已生成。

如果您想要更改其值并返回日期,则需要使用refout关键字。前者基本上通过一个指向x的指针,它可以用作你的函数。然而,后者更严格,并且要求函数初始化通过它的任何值。

所以,这是你最终与

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

代码但尽管如此,我不知道这是否是你想这样回答的。

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 

所以如果你需要返回一串数值,我建议传递对象或返回专门设计用于容纳所有这些值的对象

+0

除了我可能应该使int值私人而不是公开,并添加一个 public int getValue(){返回值;} 返回值 – koZmiZm

+0

如果你不想创建你自己的类,你可以把所有的值放到List或Arraylist中,并且只要稍后将它们放回,你甚至可以将混合类型放入列表中。这是一种马虎的做法,尽管你会得到编译器警告,除非你添加正确的@supress – koZmiZm

相关问题