第二章 java数组
文章目录
1、数组的概念
- java语言中的数组是一种引用数据类型,不是基本数据类型,数组的父类是Object.
- 数组实际上是一个容器,可以同时容纳多个元素。(数组是一个数据的集合)
- 数组当中可以存储基本数据的类型,也可以存储引用数据类型的数据
- 数组因为是引用数据类型,所以数组对象是堆内存当中(数组是存储在堆当中的)
- 数组当中如果存储的是“java对象”的话,实际上存储的是对象的“引用(内存地址)”
- 数组一旦创建,在java中规定,数组长度不可变
- 数组的分类:一位数组,二维数组,三维数组,多维数组
- 所有的数组对象都有length属性(java自带的),用来获取数组中元素的个数。
- java中的数组要求数组中的元素类型统一,比如int类型数组只能存储int类型,Person类型数组只能存储Person类型.
- 数组是一种简单的数据结构,内存地址是连续的
2、怎么声明,定义一个一维数组
- 语法格式:
- int[ ] array1;
- double[ ] array2;
- boolean[ ] array3;
- String[ ] array4;
- Object[ ] array5;
2.1、怎么初始化一个一维数组
- 包括两种方式:静态初始化,动态初始化一维数组
- 静态初始化语法格式:
- int[ ] array = {100,200,300};
- 动态初始化语法格式:
- int[ ] array = new int[5]; //这里的5表示数组的元素个数,初始化一个5个长度的int类型的数组,每个数据默认值是0
- String[ ] array = new String[5]; //这里的5表示数组的元素个数,初始化一个5个长度的String类型的数组,每个数据默认值是NULL
- 静态初始化语法格式:
2.2、一维数组的拷贝
- 使用System.arraycopy函数
下面是 System.arraycopy的源代码声明 :
public static native void arraycopy(Object src, int srcPos,
Object dest, int destPos,
int length);
参数意义:
Object src : 原数组
int srcPos : 从元数据的起始位置开始
Object dest : 目标数组
int destPos : 目标数组的开始起始位置
int length : 要copy的数组的长度
比如 :我们有一个数组数据 :
int[ ] src = {1,11,22,3,4}; // 源数组
int[ ] dest = new int[20]; // 目标数组
使用System类中的arraycopy方法,来完成数组的拷贝
System.arrayCopy(src ,0,dest,0,5);
上面这段代码的含义就是 : 创建一个一维空数组,
数组的总长度为 20位,然后将src源数组中从0位
到第4位之间的数值copy到dest目标数组中,在目
标数组的第0位开始放置.
3、二维数组
- 二维数组其实是一个特殊的一维数组,特殊在这个一维数组当中的每一个元素都是一个一维数组
3.1 二维数组静态初始化
int[ ][ ] a = {
{1,2,4},
{65,3,6,7},
{0}
};
3.2 二维数组中元素的读和改
public class Array{
public static void main(String[ ] args){
//二维数组
int[][] a = {
{21,45,74},
{4,56,23},
{0}
};
//请取出以上二维数组中的第一个一维数组
int[] a1 = a[0];
//取出二维数组中的第一个元素
int a2 = a[0][0];
}
3.3 动态初始化二维数组
//3行4列
//3个一维数组,每一个一维数组当中有4个元素
int[][] array = new int[3][4];
3.3 二维数组遍历
int[][] array = new int[3][4];
//遍历二维数组
for(int i = 0; i < array.length; i++){
for(int j = 0; j < array[i].length; j++){
System.out.println(array[i][j]+" ");
}
}