基本格式
动态初始化
格式:数据类型[] 数组名称 = new 数据类型 [数组长度]
1 | public class Demon01Array { |
此方法虽然只定义了数组的长度,未定义内容,但是系统默认会有初始值。
数据类型 | 0 |
---|---|
整数型 | 0.0 |
字符型 | ‘\u0000’ |
布尔型 | false |
引用数据类型 | null |
静态初始化
标准格式
数据类型[] 数据名称 = new 数据类型[] {元素1,元素2,元素3…}
1 | public class Demon02Array { |
省略格式
数据类型[] 数组名称 = {元素1,元素2,。。}
1 | public class Demon02Array { |
注意事项
- 静态初始化没有直接指定长度,但是仍然会自动推算到长度
- 静态初始化标准格式可以拆成两个步骤(先定义数组名称,后定义长度或内容)
- 动态初始化也可以拆成两个步骤
- 静态初始化一旦使用省略格式,就不能拆分成两个步骤
内存划分
Java的内存需要划分为5个部分
- 栈(stack):存放的都是方法中的局部变量。局部变量:方法的参数,或者是方法{}内部分变量。作用域:一旦超出作用域,立即从栈内存当中消失
- 堆(Heap):凡是new出来的东西,都在堆当中,堆内存中的东西都有一个地址值:16进制
- 方法区(Method Area):存储.class相关信息,包含方法的信息
- 本地方法栈(Native Method Stack):与操作系统相关
- 寄存器(pc Register):与cpu相关
一个数组的内存图
两个数组的内存图
两个引用指向同一个数组的内存图
以下的arrayA和arrayB实际时同一个数组,arrayA和arrayB只是数据的名称,最关键的还是是否有new,是否有新的内存地址产生。
1 | public class Demon03ArraySame { |
数组在方法中的运用
作为输入
方法的输入参数中可以定义一个数组。
调用方法时,实际就是将数组的地址值传递给方法,然后根据地址来访问数组内的元素。
1 | public class Demon07ArrayParameter { |
作为输出
可以利用数组,实现在方法中输出多个返回值。
原理同上,调用也是通过输出数组的地址值,然后根据地址访问元素。
1 | public class Demon08ArrayReturn { |
一些练习
求最值
1 | /*求出数组中的最大值*/ |
数组元素反转
1 | /* |