我想创建一个方法来增加各种变量的值,这里是我正在使用的逻辑类型的一个例子,但是当方法完成时,原始变量没有改变。我需要添加或替换以允许值在方法外更改?如何从一个方法内改变一个变量的值?
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那样更新。 –