黑马程序员技术交流社区

标题: 数组在内存中的运行问题? [打印本页]

作者: 黄诗宾    时间: 2013-3-21 20:39
标题: 数组在内存中的运行问题?
本帖最后由 黄诗宾 于 2013-3-21 21:43 编辑

public class Demo
{
        public static void main(String[] args)
        {
                int[] a=new int[1];
                modify(a);
                System.out.println(a[0]);
        }
        public static void modify(int[] a)
        {
                a[0]++;
        }
}

函数括号里的 int[]a 就是主函数里的int[]a么?
最后打印出的值为1,哪位大大讲解下,谢谢!

作者: HM刘博    时间: 2013-3-21 20:45
public class Demo
{
        public static void main(String[] args)
        {
                int[] a=new int[1]; //定义一个数组,长度为1,而且数组中元素默认为0
                modify(a);
                System.out.println(a[0]);
        }
        public static void modify(int[] a)
        {
                a[0]++;
        }
}

定义一个int类型数组,长度为1,数组元素默认为0.所以在调用 modify方法后,元素的值自加1,即数组中元素值变为1,打印结果为1

作者: 于腾飛    时间: 2013-3-21 20:50
public class Demo
{
        public static void main(String[] args)
        {
                int[] a=new int[1];// new了一个a数组,长度为1,初试值a[0]=0;
                modify(a); //调用modify函数,a[0]++值是1;
                System.out.println(a[0]);//输出数组零角标元素值,就是1;
        }
        public static void modify(int[] a)
        {
                a[0]++;
        }
}



作者: michaelchen    时间: 2013-3-21 20:55
  1. public class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] a=new int[1];//自定义一个长度为1的int型数组a       
  6.                 modify(a);//将a的地址值传给modify函数,这里的a非函数里的a,a[0]原来为0,调用函数之后a[0]为1
  7.                 System.out.println(a[0]);//打印a[0]的数值,打印的数值就是1啦
  8.         }
  9.         public static void modify(int[] a)
  10.         {
  11.                 a[0]++;
  12.         }
  13. }
复制代码

作者: 陈原野    时间: 2013-3-21 20:59
int [] a = new int[1]; //定义一个长度为1的数组a[x];
且系统默认a[0]=0;
a[0]++;
后a[0]=1;
所以最后打印a[0]=1
作者: 黑马19我最牛    时间: 2013-3-21 21:03

public class Demo
{
        public static void main(String[] args)
        {
                int[] a=new int[1];            //这里面的a是数组的名称a,是标识符
                modify(a);
                System.out.println(a[0]);
        }
        public static void modify(int[] a)              //这里的a和主函数里面的a没有关系,这里面a只是一个参数,
        {
                a[0]++;
        }
}

你这段程序,因为数组中只有一个元素,且这个元素没有初始值,那么默认的初始值就是0,也就是说a[0]的默认初始值是0,然 modify[]函数中对a[0]++也就是说a[0]自加了1那么a[0]就变成了1,因此打印1
作者: lxww    时间: 2013-3-21 21:24
int[] arr=new int[1];数组长度为2.因为你数组中没赋值,所以取默认值0,int类型的数组中的元素默认值为0.

你在modify方法中a[0]++,所以最后输入结果为1.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2