以下Java代码输出结果为什么是1不是0?大神大神快粗线~~
publicclassArrayTest{inta[]=newint[1];publicstaticvoidmain(String[]args){ArrayTestat=...
public class ArrayTest {
int a[]=new int[1];
public static void main(String[] args) {
ArrayTest at=new ArrayTest();
at.a[0]=0;
modify(at.a);
System.out.println(at.a[0]);
}
public static void modify(int a[]) {
a[0]++;
}
} 展开
int a[]=new int[1];
public static void main(String[] args) {
ArrayTest at=new ArrayTest();
at.a[0]=0;
modify(at.a);
System.out.println(at.a[0]);
}
public static void modify(int a[]) {
a[0]++;
}
} 展开
5个回答
展开全部
我把代码打一遍给你分析下吧:
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吧,了解下传值和传址
祝好运,望采纳。
题主是刚刚开始学习JAVA吧,了解下传值和传址
祝好运,望采纳。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2019-03-09
展开全部
modify(int a[]) 这个方法传的参数是对象类型的,传的是对象的引用 所以modify方法里面改值是at对象的at.a的值也会改
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
参数的传递问题 建议看看Java编程思想 里面有涉及到这个的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询