以下Java代码输出结果为什么是1不是0?大神大神快粗线~~

2024年11月17日 16:21
有5个网友回答
网友(1):

我把代码打一遍给你分析下吧:

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的吧,建议多敲点代码,根据代码来分析,这样提升会比较快。

网友(2):

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数组属于类变量, 在这个类里面可以共享

搞清楚变量的作用范围这个问题就迎刃而解了.

网友(3):

答案确实是一1。
题主是刚刚开始学习JAVA吧,了解下传值和传址
祝好运,望采纳。

网友(4):

modify(int a[]) 这个方法传的参数是对象类型的,传的是对象的引用 所以modify方法里面改值是at对象的at.a的值也会改

网友(5):

参数的传递问题 建议看看Java编程思想 里面有涉及到这个的