05.Java数组详解
春色三分,二分尘土,一分流水。
——苏轼《水龙吟》
[TOC]Java数组
数组是多个
相同类型
数据的组合,实现对这些数据的统一管理。数组中的元素可以是
任何
数据类型,包括基本类型
和引用类型。
数组属
引用类型
,数组型数据是对象(object)
,数组中的每个元素相当于该对象的成员变量。
1. 一维数组
1 | //一维数组的声明 |
1.1 一维数组的默认值
数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化
对于基本数据类型而言,默认初始化值各有不同
1 | < |
2. 多维数组
对于二维数组的理解,我们可以看成是一维数组arr1又作为另一个一维数组arr2的元素而存在。其实,从数组底层的运行机制来看,其实没有多维数组。
2.1 二维数组的初始化
静态初始化
1 | String[][] arr = new String[][]{{"杨过","13357737898"},{"洪七公","17625959595"},{"郭靖","17768108828","南京人"}}; |
动态初始化
1 | //格式一: |
注意特殊写法情况:
1 | int[] x,y[]; |
3. 数组内存原理
内存是计算机中的重要原件,临时存储区域,作用是
运行程序
。我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。
3.1 JVM的内存划分
为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
区域名称 | 作用 |
---|---|
寄存器 | 给CPU使用,与我们开发无关。 |
本地方法栈 | JVM在使用操作系统功能的时候使用,与我们开发无关。 |
方法区 | 存储可以运行的.class文件,以及class相关的信息,类中方法的相关的信息 |
堆内存 | 存储对象或者数组,new来创建的,都存储在堆内存。(会给所有的元素一个默认值) |
方法栈 | 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。 |
3.2 数组内存原理图
一维数组
二维数组
4. 操作数组的工具类–Arrays
java.util.Arrays类包含了用来操作数组(比如排序和搜索)的各种方法。
boolean equals(int[] a,int[] b) | 判断两个数组是否相等。一系列重载的方法。 |
---|---|
void fill(int[] a,int val) | 将指定值填充到数组之中。一系列重载的方法。 |
void sort(int[] a) | 对数组进行排序。一系列重载的方法。 |
int binarySearch(int[] a,int key) | 对排序后的数组进行二分法检索指定的值。 |
String toString(int[] a) | 输出数组信息。一系列重载的方法。 |
5. 数组练习
使用二维数组打印一个 10 行杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
….
1 | /** |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jilfoyle!