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.二维数组的遍历:通过二层循环,第一层遍历二维数组的长度,即二维数组包含的一维数组的个数,第二层再遍历所获取到的一维数组上的每一个元素,即可实现二维数组的遍历,实现如下:
7. Java中的值传递问题:
1) 基本数据类型值传递后不会改变原值,因为局部变量在使用后弹栈释放了。
2)引用数据类型值传递后会改变原值,因为传递地址后,堆内存中的对象数据改变了,并不会随着弹栈而消失。
3)Java中只有传值,因为地址值也是值的一种。