请听题,这里打印的值是多少?
public class NewTest {
public static void main(String[] args) {
int m =10 ;
NewTest test = new NewTest();
m = test.method1(10);
System.out.println(m);
}
public void method1(int m){
m ++;
}
}
结果是10。因为java局部变量是传递数据值,传入到method1方法的,只是数据值10。而且一个方法一个栈帧一个局部变量,当方法执行完之后就跳出去了。所以method1里的m++ 不会影响到最开始的m值。
public class NewTest {
public static void main(String[] args) {
NewTest test = new NewTest();
int m = 10;
m = test.method1(10);
System.out.println(m);
}
public int method1(int m){
return m++;
}
}
结果:结果还是10。
为什么?
因为传入method1方法,之后,m++是先返回当前值,再运算。也就是返回出去的值还是10.