我对这个概念感到很困惑:
/* Example with primitive data type */
public class Example1 {
public static void main (String[] args){
int a = 1;
System.out.println("a is " + a);
myMethod( a );
System.out.println("a is " + a);
}
public static void myMethod(int b){
b = 3;
System.out.println("b is " + b);
}
}
输出:
a是1
b是3
a是1
为什么“a”没有改变?当int i初始化为零时,这个原始变量如何改变FOR LOOP或WHILE LOOP?像这样:
int i = 1;
while (i < = 3) {
System.out.println(i);
i *= 2;
}
输出:
1
2
请详细告诉我,因为我真的很困惑。我是一个原始类型,为什么它会更新,为什么不在第一个程序中使用int?
答案 0 :(得分:1)
myMethod()是无效的,如果它返回一个int并且你分配了一个= myMethod(a)那么它会改变
int a = 1;
System.out.println("a is " + a);
a= myMethod(a); //where myMethod is changed to return b instead of void
System.out.println("a is " + a);
a是1
b是3
a是3
答案 1 :(得分:0)
“为什么”a“不会改变?”
因为a
内的原始myMethod
与您a
中的原始void main
不一样。将其视为另一个变量,并将其值复制到myMethod
。该原语的生命周期在此方法执行结束时结束。
如果您有C ++背景,那么这个解释可能有所帮助:
=null
或=new Obj
它,它将仅影响您方法中的对象。