如何在Java中更改其他类的变量?

时间:2014-02-10 03:44:45

标签: java class variables

如何在Java中更改其他类的变量?

我正在尝试从另一个类更改变量,并在第一个类中使用它。

我在类First中创建一个变量,并给它一个值1.然后我尝试在类Second中将同一个变量的值更改为2,但是当我在类First中使用它时它会变回1。

我是Java的新手并且还不太了解,所以如果你能尝试简单地解答答案,那就太棒了:)


第一课:

public class First {

    public static void main(String args[]){


    int var = 1; //Variable i'm trying to change from class "Second"

    Second Second = new Second();

    System.out.println(var); //Prints out 1

    Second.test(var); 

    System.out.println(var); // Prints out 1 again, even though I changed it

}
}

<小时/> 第二类:

public class Second {

    void test(int var){
    /*
     * 
     * I try to change var to 2, and it works in this class
     * but when it doesn't change in the class "First"
     * 
     */
    var = 2;
    System.out.println(var); //Prints out 2

}
}

输出结果如下:

1
2
1

我想要的是什么:

1
2
2

<小时/> 我试图找到答案,但我能找到的所有答案都没有任何意义,因为我对Java和编程都很陌生。

4 个答案:

答案 0 :(得分:4)

问题是

Second.test(var); 

这不是一个错误。它只是没有按照你的想法去做。

传递给函数的基元(int称为基元...它不是对象)可以在该函数中更改,但在副本中。一旦完成该功能,原始值就相同,因为它从未被改变为以开头。

你想要的是

int test(int var){
   var = 2;
   System.out.println(var); //Prints out 2
   return  var;
}

然后而不是

Second.test(var); 

使用

var = Second.test(var);

参数实际上没有任何意义。它相当于

var = Second.test();

...

int test(){
   int var = 2;
   System.out.println(var); //Prints out 2
   return  var;
}

我希望这会有所帮助。祝你好运,欢迎来到Java,欢迎来到stackoverflow!

答案 1 :(得分:2)

Java是pass-by-value,这意味着您传递了var的副本。您可以做的是让方法test()返回int

int test(int var){
    ...
    var = 2;
    System.out.println(var); //Prints out 2
    return var;
}  

然后将其结果(方法test()返回的值)分配给var

var = second.test(var);
System.out.println(var); //Prints out 2

注意:

Second Second = new Second();

您不应该使用类的名称作为变量的名称。做这个罪恶:

Second second = new Second();

答案 2 :(得分:0)

var的{​​{1}}方法中的test参数是副本,而不是引用或指针。因此,您无法在课程second中更改var的值。

为了实现目标,您可以将First声明为全局变量,如下所示:

var

答案 3 :(得分:0)

嗯,你在第二堂课中已经改变了,但是你没有把它归还给第一堂课。如果你不退还,头等舱不可能知道你在其他班级改变了它。 你可以这样做,希望它有所帮助。

头等舱:

public class First {

    public static void main(String args[]){


        int var = 1;

        Second Second = new Second();

        System.out.println(var); //Prints out 1

        var = Second.test(var); 

        System.out.println(var); //Prints out 2

    }
}

第二课:

public class Second {

    int test(int var){

        var = 2;

        System.out.println(var); //Prints out 2

        return var;

    }
}