public class Demo01Array {
public static void main(String[] args) {
//一、数组定义格式
// 1.动态初始化(指定数组长度)
int[] arrayA = new int[300];
double[] arrayB = new double[300];
// 动态初始化拆分两个步骤
String[] arrayG;
arrayG = new String[5];
char[] arrayI = new char[3];
boolean[] arrayH = new boolean[2];
// 2.静态初始化(指定数组元素)
int[] arrayC = new int[]{5, 15, 25};
String[] arrayD = new String[]{"hello", "world", "java"};
//静态初始化拆分两个步骤
int[] arrayF;
arrayF = new int[] {40,50,60};
// 静态初始化省略格式(无发拆分两个步骤)
int[] arrayE = {10,20,30};
// 使用建议:
// 如果不确定数组中的具体内容,因动态初始化;
// 否则,已经确定了具体的内容,用静态初始化
// 二、数组的访问
// 直接访问数组名称,得到数组对应的内存地址哈希值,十六进制
System.out.println(arrayE);
//1.访问静态数组:使用索引值
System.out.println(arrayD[0]);
//2.访问动态数组
// 整型类型,默认值为0
System.out.println(arrayA[0]);
// 浮点型类型,默认值为0.0
System.out.println(arrayB[0]);
// 字符型类型,默认值为‘\u0000’
System.out.println(arrayI[0]);
// 布尔型类型,默认值为false
System.out.println(arrayH[0]);
// 还有一种引用型类型(字符串、数组、对象),默认值为null
System.out.println(arrayG[0]);
System.out.println("=================");
//三、数组的赋值
//1.动态数组赋值
arrayA[0] = 3;
System.out.println(arrayA[0]);
arrayI[0] = 'C';
System.out.println(arrayI[0]);
// 2.注意:静态初始化其实也有默认值过程,只不过系统自动马上将默认值替换为大括号中的具体值
System.out.println(arrayF[0]);
arrayF[0] = 46;
System.out.println(arrayF[0]);
// 四、数组问题
// 1、数组索引越界异常
//System.out.println(arrayE[4]); // 错误写法,并不存在,所以发生异常
// 2.空指针异常
int[] array01;
//System.out.println(array01[0]); //错误写法,没进行new初始化。
// 所有引用类型(字符串、数组、对象),都可以赋值为一个null,带代表其中什么都没有
// 数组如果只是赋值null,没有进行new初始化创建,那么将会发生空指针异常 NUllPointerException
int[] array02 = null;
//System.out.println(array02[0]);
// 解决:补上new初始化
}
}