簡體   English   中英

如何在Java中更改其他類的變量?

[英]How do I change a variable from a different class in Java?

如何在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和編程都很新。

問題是

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!

Java是按值傳遞的 ,這意味着你傳遞了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();

secondtest方法中的var參數是副本,而不是引用或指針。 因此,您無法在類First更改var的值。

為了實現您的目標,您可以將var聲明為全局變量,如下所示:

public class First {

    public int var = 1; 

    public static void main(String args[]){

    Second Second = new Second();

    System.out.println(var);

    Second.test(); 

    System.out.println(var);

}
}

public class Second {

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

嗯,你已經在第二堂課改了它,但你沒有把它歸還給第一堂課。 如果你不退還,頭等艙不可能知道你在其他班級改變了它。 你可以這樣做,希望它有所幫助。

頭等艙:

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;

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM