[英]How do I change a variable from a different class in 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
問題是
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();
second
類test
方法中的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.