你讲错了吧.他讲的没写主方法, x是在主方法里面定义的,依然是局部变量,这里的问题不是成员变量和局部变量的问题,而是在方法中参数对于基本数据类型的传递是按照值传递的,也就是在方法里面复制了一份和原来一样的值,和原来的变量没有关系.如果变量是引用数据类型的变量,方法调用就是按照地址传递的,在方法里改变变量的值,原来变量也会随着改变- public class Test {
- public static void main(String[] args) {
- //参数的按照值传递
- int x=7;
- show(x); //调用show方法对x重新赋值
- System.out.println(x);//打印x的值
- //参数的按照引用传递
- int[] arr=new int[3];
- arr[0]=3;
- arr[1]=3;
- arr[2]=3;
- show(arr);
- System.out.println(arr[0]);
- System.out.println(arr[1]);
- System.out.println(arr[2]);
-
- }
- private static void show(int[] arr) {
- arr[0]=5;
- arr[1]=5;
- arr[2]=5;
- }
- public static void show(int x){
- x=3;
- // this.x=3; 按照你说的这样编译都报错
- }
- }
复制代码 |