黑马程序员技术交流社区

标题: 菜鸟有问题要提问,关于数组的????????? [打印本页]

作者: 流沙    时间: 2014-5-15 14:17
标题: 菜鸟有问题要提问,关于数组的?????????
本帖最后由 流沙 于 2014-5-16 10:12 编辑

我正在开基础视频!!!一维数组和二维数组都是引用数据类型;那为什么以为数组初始化默认是0,而二维默认初始化是null呢???????????????????????????????????????????????:'(:'(:'(

作者: Super__kids    时间: 2014-5-15 14:22
你有没有百度?
作者: 月光海    时间: 2014-5-15 14:23
因为二维数组中放的是一维数组,而一维数组本身就是引用数据类型,所以二维数组中默认初始化就是null了
作者: 流沙    时间: 2014-5-15 14:28
Super__kids 发表于 2014-5-15 14:22
你有没有百度?

百了,没有这个提问啊
作者: 暧緑荼    时间: 2014-5-15 18:34
都是0啊?我记得都是0
作者: 流沙    时间: 2014-5-15 19:17
暧緑荼 发表于 2014-5-15 18:34
都是0啊?我记得都是0

不是的 一个是0  一个是null
作者: 暧緑荼    时间: 2014-5-15 19:24
  1. package com.inetaddress;

  2. public class Arrayfor {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 int [][] a = new int[3][3];
  8.                 for (int i = 0; i < 3; i++) {
  9.                         for (int j = 0; j < 3; j++) {
  10.                                 System.out.print(a[i][j]+",");
  11.                         }
  12.                 }
  13.                
  14.         }

  15. }
复制代码

结果是0,0,0,0,0,0,0,0,0,
作者: 张旭宇    时间: 2014-5-15 21:04
我个人是这样认为的
{
        public static void main(String[] args)
        {
                int[] arr =new int[3];
                System.out.println(arr[0]);
        }
       
}
//打印的是一维数组中0指标的元素值;默认的初始化值为0。
//例如一件教室,每位学生都有一个名字(这里就认为0是个名字),而叫0的这位学生就是要找的那位学生。
{
        public static void main(String[] args)
        {
                int[][] arr =new int[3][];
                System.out.println(arr[0]);
        }
       
}
//打印的是二维数组中0这个一维数组,而一维数组默认是null。
//例如一所学校里面有很多教室,而每间教室都有一个编号,而0编号的教室就是我们要找的那件教室,而不是找教室里的学生。
作者: 孟祥钰    时间: 2014-5-15 21:19
一维数组中的元素的默认初始化值是0。
二维数组是一个包含多个一维数组的数组, 被包含的每个一维数组相当于这个二维数组的各个元素。
因为数组是定义在堆内存中的,所以这个二维数组的每一个元素都是相应一维数组的地址值,这些地址值的默认初始化值就是null
作者: 蛤蟆太康    时间: 2014-5-15 23:09
亲,你定义的一位数组数据类型肯定是int类型的,int是基本数据类型初始值是0,如果定义的是引用数据类型则初始值是null。
作者: stream    时间: 2014-5-16 11:16
很简单嘛,因为二维数组里都是些对一维数组的引用,这些引用没被赋值当然是null了。。。。。也要看你这个二维数组是怎么来定义的
作者: 流沙    时间: 2014-5-16 11:22
stream 发表于 2014-5-16 11:16
很简单嘛,因为二维数组里都是些对一维数组的引用,这些引用没被赋值当然是null了。。。。。也要看你这个二 ...

哦哦是这个样子啊 还是不明白
作者: 格子、    时间: 2014-5-16 23:33
数组之所以有初始化值是因为数组被被定义后是一个实体,存放在对内存中,有默认初始化值。
例如:
     int[] arr=new int[5];其中arr就是一个引用变量,指向堆内存中的实体。而根据数量类型有不同的初始化值,楼主可以参考一下:
                    int--->0  double--->0.0 boolean--->false;  char----->'\u0000'
至于二维数组,可以理解成数组中的数组。
             Java中规定可以省略二维数组的长度,却不可以省略一维数组的长度。这是因为每个一维数组的初始化值为null,而二维数组的长度就是一维数组的个数因此可以省略。至于为什么为null,这是因为二维数组包含这一维数组,这是一个引用变量,所以为null了
    这是我的一些理解,希望能帮到楼主!!!


作者: 赵京    时间: 2014-5-17 07:28
因为一维数组的每个脚标存的都是元素,是具体的值,例如:int[] arr=new int[4],如果没有手动初始化,默认值就是0.而二维数组里面存的是一维数组,每一个脚标代表一个一维数组,即存在堆内存中,代表地址值,所以默认值为null。
作者: tangliping    时间: 2014-6-28 02:00
因为二维数组的元素是一维数组,而数组的默认值就是null
作者: tangliping    时间: 2014-6-28 02:02
因为二维数组的元素是一维数组,而数组的默认值就是null
作者: zhanqq2010    时间: 2014-6-28 13:23
本帖最后由 zhanqq2010 于 2014-6-28 13:34 编辑
孟祥钰 发表于 2014-5-15 21:19
一维数组中的元素的默认初始化值是0。
二维数组是一个包含多个一维数组的数组, 被包含的每个一维数组相当 ...

不对啊,当类的成员数组初始化以后(此时不给他初始化真正的数据,只给他分配内存空间,那么java虚拟机会默认给数组赋值),是根据数据类型来决定他里面的内容的,         如下例子,当String类型时,不管是一维数组还是二位数组,值都为null,当int类型时,不管是一维数组还是二位数组,值都为0;如果是基本数据类型的话,他会初始化为基本数据类型默认的值(这个可以百度,这里我就不讲了),如果不是基本数据类型默认值应为null。
public class DomainClassTest02 {
        String arr[] = new String[3] ;            //一维数组,String类型
        String arr2[][]= new String[2][2];    //二维数组,String类型
        int arr3[] =new int[3];                       //一维数组,int 类型
        int arr4[][] = new int[2][2];              //二维数组,int 类型
        Integer arr5[] = new Integer[3];     //一维数组,Integer 类型
        Integer arr6[][] = new Integer[2][2];//二维数组,Integer 类型
       
        @Test
        public void test(){
                 System.out.println(arr[0]);              //输出null
                System.out.println(arr2[0][0]);       //输出null
                System.out.println(arr3[0]);            //输出0
                System.out.println(arr4[0][0]);       //输出0
                System.out.println(arr5[0]);            //输出null
                System.out.println(arr6[0][0]);       //输出null
        }

}

输出:
null
null
0
0
null
null






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