黑马程序员技术交流社区

标题: 数组问题 [打印本页]

作者: 汤姆纳斯    时间: 2014-6-4 13:40
标题: 数组问题
本帖最后由 汤姆纳斯 于 2014-6-4 14:28 编辑

int[] arr = new int[10];
System.out.println(arr[0]);
这个程序输出结果是什么?是0还是null呢?这两个我分不清楚。


作者: f78fk    时间: 2014-6-4 13:45
本帖最后由 f78fk 于 2014-6-4 13:47 编辑

刚才我试了下,是0
作者: 123_yaya    时间: 2014-6-4 13:46
0,因为int[] arr = new int[10];已经实例化了,如果没有赋值,那么java中会默认为0,所以是0.
作者: 杨韬略    时间: 2014-6-4 14:03
本帖最后由 杨韬略 于 2014-6-4 14:08 编辑

答:是0!以下为测试例子,对数组角标超出以及未赋值已定义的角标进行实际测试,来帮助你对数组的理解!
public class 多维数组内元素数量差异化 {
/**
  * 第一种情况若直接给数组赋值在下不存在的角标输出会失败的
  * 第二种情况验证假如给数组定义角标,只要输出角标在定义范围内即使没被赋值输出都有默认值且都为0
  */
public static void main(String[] args) {
  //第一种情况
     int[][] a={{4,5},{7,52,69,100},{1}};
    //System.out.println("没被 赋值的元素角标:\n"+a[0][3]);

  
  //第二种情况:
  
  //int[][] a=new int[3][4]{{4,5},{7,52,69,100},{1}};//该定义是不被允许的
  int[][] a=new int[3][4];
//  a[3][4]=4;/该超出定义范围内的赋值也是无效
  a[2][3]=4;
  System.out.println("没被 赋值的元素角标:\n"+a[2][1]+"\n"+a[0][1]);
  System.out.println(a[2][3]);
}
}


作者: 宋大人-专注    时间: 2014-6-4 15:52
是0,字符类型的是null
作者: Whero    时间: 2014-6-4 16:51
我写了一段小代码,方便理解,定义字符串数组时,默认值为null,像int这种类型的数组默认的值是0
public class Try {
    public static void main(String args[])
    {
        int arr[]=new int[10];
        String s[]=new String[10];
        System.out.println("arr[0]="+arr[0]);
        System.out.println("s[0]="+s[0]);
    }
}


作者: tangchuanping    时间: 2014-6-4 17:11
是0,自己试一下就知道了
作者: jiang_ming    时间: 2014-6-4 17:24
给数组定义角标,只要输出角标在定义范围内即使没被赋值输出都有默认值且都为0
作者: 夏季熬成了秋    时间: 2014-6-5 03:04
是0,因为  int[] 是数组类型,属于引用类型,一经被创建存在与堆中,
作者: 夏季熬成了秋    时间: 2014-6-5 03:06
夏季熬成了秋 发表于 2014-6-5 03:04
是0,因为  int[] 是数组类型,属于引用类型,一经被创建存在与堆中,

而堆中的int 变量默认 为0;
作者: 姿_`态    时间: 2014-6-5 08:29
数组的默认初始化值是0





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