目录
一、前言
二、数组的创建和初始化
三、数组的使用
四、数组是引用类型
1.JVM的内存分配
2.与引用类型变量
3.null
五、二维数组
六、Java中Arrays类的常用方法
1. Arrays.fill ->填充数组
2. Arrays.sort ->数组排序
3. Arrays.toString ->数组打印
4. Arrays.equals ->比较数组是否相等
5. Arrays.binarySearch ->二分查找法找指定元素的索引值(下标)
6.Arrays.copeOf ->复制代码
一、前言
内存在连续存储的一段空间,相同类型数据的集合
二、数组的创建和初始化
在C语言中数组的创建格式为int arr[ ],但是在JAVA中数组的创建格式为int[ ] arr
创建数组有这几种方法
- arr1创建并对其数组进行初始化,指定数组中的元素,前面的方括号空着,JAVA会根据数组中的值自动分配空间
- arr2是创建一个可以容纳10个int类型元素的数组
- arr1和arr3是等价的,可以省略了nrw int[ ]
如果没有对数组进行初始化,数组中元素有其默认值
如果数组中存储元素类型为引用类型,默认值为null
三、数组的使用
在打印数组的时候,在JAVA相比于C语言可以这样实现
在数组中可以通过 数组对象.length 来获取数组的长度
for-each 是 for 循环的另外一种使用方式. 能够更方便的完成对数组的遍历. 可以避免循环条件和更新语句写错.
四、数组是引用类型
1.JVM的内存分配
- 程序计数器 (PC Register): 只是一个很小的空间, 保存下一条执行的指令的地址
- 虚拟机栈(JVM Stack): 与方法调用相关的一些信息,每个方法在执行时,都会先创建一个栈帧,栈帧中包含 有:局部变量表、操作数栈、动态链接、返回地址以及其他的一些信息,保存的都是与方法执行时相关的一 些信息。比如:局部变量。当方法运行结束后,栈帧就被销毁了,即栈帧中保存的数据也被销毁了。
- 本地方法栈(Native Method Stack): 本地方法栈与虚拟机栈的作用类似. 只不过保存的内容是Native方法的局部变量. 在有些版本的 JVM 实现中(例如HotSpot), 本地方法栈和虚拟机栈是一起的
- 堆(Heap): JVM所管理的最大内存区域. 使用 new 创建的对象都是在堆上保存 (例如前面的 new int[]{1, 2, 3} ),堆是随着程序开始运行时而创建,随着程序的退出而销毁,堆中的数据只要还有在使用,就不会被销毁。
- 方法区(Method Area): 用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数 据. 方法编译出的的字节码就是保存在这个区域
2.与引用类型变量
大家来看下面这段代码
,相当于C语言中的指针用来接受数组的首地址。
3.null
五、二维数组
数据类型 [][] 数组名称 = new 数据类型 [ 行数 ][ 列数 ] { 初始化数据 }
以上3种方法都是正确的在JAVA中二维数组的行不能省略列可以省略并且在给一个二维数组初始化的时候每一行都要拿花括号围起来(每一行都是一个一维数组),这与C语言中还是有差异的
- arr1中创建了一个3行的二维数组(3个一维数组所组成的数组)
- arr2中创建了一个3行的二维数组,每行的大小可以是不一样的
- arr3中初始化并创建了一个3行的二维数组,每行的大小是不一样的
二维数组的用法和一维数组并没有明显差别
六、Java中Arrays类的常用方法
Arrays类位于 java.util 包中,主要包含了操作数组的各种方法。使用前得包含它的util包
import java.util.Arrays;
1. Arrays.fill ->填充数组
既能实现对不同数据类型数组进行全部分配,也能实现范围分配
以int类型举例子
2. Arrays.sort ->数组排序
既能实现对不同数据类型数组进行全部排序,也能实现范围排序
以int类型举例子
3. Arrays.toString ->数组打印
打印出来数组的内容
以int类型举例子
4. Arrays.equals ->比较数组是否相等
比较两个数组是否元素相同,并返回对应的布尔值
以int类型举例子
5. Arrays.binarySearch ->二分查找法找指定元素的索引值(下标)
二分查找使用前需要排序,既能实现对不同数据类型数组进行全部查找,也能实现范围查找
以int类型举例子
6.Arrays.copeOf ->复制代码
既能实现对不同数据类型数组进行全部复制,也能实现范围复制,同时可以扩容!!
以int类型举例子
希望对你有帮助