更改函数参数的值?
这似乎是一个愚蠢的问题,但是这个函数实际上会影响变量吗(关于我将如何使用它有更大的上下文,但这基本上是我不确定的)?(我专门问java)bool
void truifier (boolean bool) {
if (bool == false) {
bool = true;
}
}
这似乎是一个愚蠢的问题,但是这个函数实际上会影响变量吗(关于我将如何使用它有更大的上下文,但这基本上是我不确定的)?(我专门问java)bool
void truifier (boolean bool) {
if (bool == false) {
bool = true;
}
}
考虑一个稍微不同的示例:
public class Test {
public static void main(String[] args) {
boolean in = false;
truifier(in);
System.out.println("in is " + in);
}
public static void truifier (boolean bool) {
if (bool == false) {
bool = true;
}
System.out.println("bool is " + bool);
}
}
运行此程序的输出将是:
bool is true
in is false
该变量将更改为 true,但一旦返回该方法,该参数变量就会消失(这就是人们说它“超出范围”的意思)。但是,传递给方法的变量保持不变。bool
truifier
in
truifier
正如另一个响应所指出的那样,当作为参数传递时,将在本地为您的truifier函数创建一个布尔值,但将按位置引用对象。因此,您可以根据所使用的参数类型获得两个截然不同的结果!
class Foo {
boolean is = false;
}
class Test
{
static void trufier(Foo b)
{
b.is = true;
}
public static void main (String[] args)
{
// your code goes here
Foo bar = new Foo();
trufier(bar);
System.out.println(bar.is); //Output: TRUE
}
}
但是,如果您使用的不是布尔值,而是 Object,则参数可以修改对象。此代码输出 TRUE