我把代码打一遍给你分析下吧:
class ArrayTest {
// a数组,这是一个成员变量,在整个ArrayTest类中均有效。
int a[] = new int[1];
public static void main(String[] args) {
ArrayTest at = new ArrayTest ();
// 令a[0] = 0
at.a[0] = 0;
// 调用modify(),数组是引用类型,所以传入的是a数组的引用,就是前面定义的a数组
modify(at.a);
System.out.println(at.a[0]);
}
/**
* 传入一个int[],使a[0]++
*/
public static void modify(int a[]) {
a[0]++;
}
}
这是一个最基本的参数传递问题,题主你应该是刚学Java的吧,建议多敲点代码,根据代码来分析,这样提升会比较快。
run...
进入main方法之前, a=null
进入main方法然后new ArrayTest对象时, 类成员(类变量)初始化 a[0]=0
至于这一行: at.a[0]=0; 再次赋值了一遍,
然后调用 modify() 方法 对a数组下标为0处进行了加一操作a[0]+1; 即 a[0]=0+1
然后打印结果, 输出值为 1
这个主要是看一个变量的作用范围(在这个范围有效)
大多数情况下 变量的作用范围在一对大括号里面, 而这个a数组属于类变量, 在这个类里面可以共享
搞清楚变量的作用范围这个问题就迎刃而解了.
答案确实是一1。
题主是刚刚开始学习JAVA吧,了解下传值和传址
祝好运,望采纳。
modify(int a[]) 这个方法传的参数是对象类型的,传的是对象的引用 所以modify方法里面改值是at对象的at.a的值也会改
参数的传递问题 建议看看Java编程思想 里面有涉及到这个的