java中的数组

第二章 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]+" ");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值