为什么有动态初始化呢?
 当 不知道数组里几个元素的具体值时用动态初始化
 动态初始化:初始化时只指定数组长度,由系统分配初始值
 格式:数据类型[]数组名=new 数据类型[数组长度];
 特点:在创建的时候有自己指定数组长度,由虚拟机给出初始化值
数组默认初始化值的规律
 整数类型:0
 小数类型:0.0
 字符类型:‘\u00000’空格
 布尔类型:false
 引用数据类型:null
拓展一:动态初始化与静态初始化的区别
 
动态初始化:手动指定数组长度,由系统给出初始化值
 只知道元素个数,不知道具体数值不知道具体数值推荐使用
eg:
 int []arr={?,?,?,?,?};
 int []arr=new int[5];
静态初始化:手动指定数组元素,系统会根据元素个数计算出数组长度。
 需求中已经明确了具体数据,直接静态初始化
eg:
 int [] arr={11,22,33};  
数组的常见问题:索引越界问题
 代码演示:

小结:
 原因:访问了不存在的索引
 避免:索引的范围
 最小索引:0
 最大索引:数组长度-1