java数组的静态和动态的初始化及格式和注意事项
/**
* java数组是静态的,必须经过初始化后才能使用,并且一旦初始化指定了数组的长度,该长度是不可变的。
*
*
*
* A:数组静态初始化的格式:
* 格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
* 初始化时显示指定每个数组元素的初始值,由系统决定数组的长度
* 简化格式:
* 数据类型[] 数组名 = {元素1,元素2,…};
*
* B:java数组动态初始化
* 动态初始化:就是与静态初始化相对的,
* 其实动态初始化就是在初始化的时候指定数组长度(这时已经分配内存)
*
*
* 注意:所有的局部变量都是放在栈内存中保存的,
* 不管其实基本类型的变量还是引用类型的变量,都是存储在各自的方法栈区中;
* 但引用类型变量所引用的对象(包括数据,普通java对象)则总是存储在堆内存中。
*
* Java中数组是引用变量(类似于C语言中的指针变量),我们初始化操作后,
* 就是将它的引用指向了堆内存中开辟的指定长度的连续内存空间。
* 所以我们真正所做的初始化是将栈中数组变量指向有效的内存。
*
*
* 数组相关的两个异常
* a:ArrayIndexOutOfBoundsException:数组索引越界异常
* 原因:你访问了不存在的索引。
* b:NullPointerException:空指针异常
* 原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。
* int[] arr = {1,2,3};
* arr = null;
* System.out.println(arr[0]);
*/
public class f {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
int[] arr = new int[]{11,22,33,44,55};
//int[] arr = new int[5]{11,22,33,44,55}; //不允许动静结合
//Cannot define dimension expressions when an array initializer is provided
int[] arr2 = {11,22,33,44,55}; //静态初始化的简写形式
int[] arr3; //声明数组引用
arr = new int[]{11,22,33,44,55};
int[] arr4;
//arr2 = {11,22,33,44,55}; //简写形式声明和赋值要在同一行
//Array constants can only be used in initializers
System.out.println(arr2);
System.out.println(arr2[4]);
}
}