package com.example.demo; import java.util.*; /** * @author lzf * @create 2021/3/26 */ class Solution { public static void main(String[] args) { // int i; // System.out.println(i);//i未初始化 // int[] ints = new int[];//编译出错,需指定数组长度 // System.out.println(ints[1]); // int[] ints = new int[5]; // System.out.println(ints[1]);//输出0 // int[][] ints1 = new int[5][]; // System.out.println(ints1[1]);//输出null // int[][] ints1 = new int[5][]; // System.out.println(ints1[1][1]);//NullPointerException // int[][] ints1 = new int[5][5]; // System.out.println(ints1[1][1]);//输出0 // Student[] ints1 = new Student[5]; // System.out.println(ints1[1]);//输出null // Student[] ints1 = new Student[5]; // ints1[1] = new Student1();//编译出错,类型不匹配 } } class Student{ public String name; } class Student1{ public String name; }
个人理解:数组也是一个对象,对于int类型的一维数组,必须指定长度,指定了长度之后,堆上的空间大小就可知了,即可分配,new命令创建对象之后会初始化所有值为0.
对于二维数组,如果只指定了第一维度的大小(如int[5][]),该对象持有五个int[]的引用,但是这五个对象的大小不知,也没有创建,所以为null