1.数组的静态初始化和动态初始化:

1)动态初始化:创建的时候指定长度 int[ ] array = new int[长度]; 称为数组的动态初始化,在系统中开辟出int数据类型的固定长度的内存。系统会给数组默认初始化值。

2)静态初始化:创建的时候指定内容,长度由系统去分配。 int[ ] array = {1, 2, 3, 4, 5};(只能在声明的时候赋值,声明的同时赋值) & Int[ ] array = new int[ ]{1, 2, 3, 4, 5};(可以先声明,后赋值)

2.地址值

地址值:[I19bb25a 左中括号代表的是数组,几个左中括号就代表几维数组,大写的I字母代表的是数组存储的是int类型。 后面的数组和字母代表的是16进制表示的地址值。

2进制表示符号:0b

8进制表示符号:0

16进制表示符号:0b

3.数组两个常见的问题

1)越界 : 当访问数组不存在的索引时会发生索引越界错误。ArrayIndexOutOfBoundsException

2)空指针 :当数组变量的地址为空时,就会产生空指针异常。NullPointerException

4.数组反转

在很多算法题和平常使用中会经常用到数组反转。

5.二维数组

1)int[ ][ ] array = new int[ 2 ][ 3 ]; 前面的2代表这个二维数组中有两个一维数组,第二个数代表每个一维数组有三个元素。其实我自己更倾向于用矩阵来理解二维数组,2,3代表是2行3列的矩阵。

二维数组在堆中存储方式和一维数组一致,也是一个一维数组的形式,只是每个位置上存储的是一维数组的地址。

2)int[][] array = new int[4][]; 这是二维数组的第二种创建形式。

int[0] = new int[6]; int[1] = new int[5]; int[2] = new int[7]; int[3] = new int[8];

这是二维数组的第二种创建方法。

3)第三种二维数组创建方法:int[][] array = {{1, 2, 3}, {2, 3, 4, 5}, {5, 6, 7, 8, 9}}

6.二维数组的遍历:通过二层循环,第一层遍历二维数组的长度,即二维数组包含的一维数组的个数,第二层再遍历所获取到的一维数组上的每一个元素,即可实现二维数组的遍历,实现如下:


java 创建动态二维数组 java动态二维数组初始化_java 创建动态二维数组


7. Java中的值传递问题:

1) 基本数据类型值传递后不会改变原值,因为局部变量在使用后弹栈释放了。

2)引用数据类型值传递后会改变原值,因为传递地址后,堆内存中的对象数据改变了,并不会随着弹栈而消失。

3)Java中只有传值,因为地址值也是值的一种。