我想創建一個方法來增加各種變量的值,這裏是我正在使用的邏輯類型的一個例子,但是當方法完成時,原始變量沒有改變。我需要添加或替換以允許值在方法外更改?如何從一個方法內改變一個變量的值?
static int num = 2;
static String text = "3";
public static void up(int i, String s){
//Debug
System.out.println("Before Change");
System.out.println("I: " + i);
System.out.println("S: " + s);
System.out.println("Num: " + num);
System.out.println("Text: " + text);
//Code
i = i + 3;
s = String.valueOf(i);
//Debug
System.out.println("After Change");
System.out.println("I: " + i);
System.out.println("S: " + s);
System.out.println("Num: " + num);
System.out.println("Text: " + text);
}
public static void main(String[] args) {
up(num, text);
//Debug
System.out.println("Out of Scope");
System.out.println("Num: " + num);
System.out.println("Text: " + text);
}
發生這種情況是因爲變量''i''是您傳入的內容的副本,而不是(原始)變量''num''。原因是java爲原始類型使用了按值調用。 – f1sh
因爲它是一個String對象,所以文本肯定會在函數調用外面得到更新,但是num是int類型的一個原語,它不會被更新到函數之外。 –
@VineetKasat'String'不會像int那樣更新。 –