Java笔记之数组

本文详细介绍了Java中的数组概念、定义、初始化以及常见操作,包括一维数组和二维数组的创建、赋值和遍历。同时,提到了数组内存分析,强调了栈内存和堆内存的区别,并展示了数组越界和空指针异常的情况。此外,还讲解了如何填充和替换数组元素的方法。
摘要由CSDN通过智能技术生成

如果需要存储大量的数据,,这时就需要数组的作用。

数组的概念

数组是存储很多个同一数据类型的值的容器,数组是同一数据类型的集合,数组其实是存储数据的一种方式,数组一旦定义好,里面的数据类型即确定。特点:类型相同,长度固定,数组从0开始编号第一个数字。

数组的定义

数组的创建:

元素数据类型[] 数组名 =new 元素类型[元素个数或数组长度]

int[] arr=new int [5]

声明数组变量 必须在程序中声明数组,并指定数据类型,标识数组我们用[] 来标识,定义数组的名称arr,格式为int[] arr

创建数组 要使用一个新的关键字叫做new,new用来在内存中产生一个容器实体,数据要存储时需要空间的,空间就用new操作符开辟new int[5],表示这个数组有5个int元素,这个部分就是在内存中定义了一个真实存在的数组,能存储5个元素,注意这里是做了两件事情,第一件是创建了一个数组,然后把这个数组的引用赋值给变量x

注意这个arr不是int类型的,int只是这个容器内元素的数组类型,数组其实是单独的数据类型,数据类型有两大派,第一大是引用数据类型,第二派是基本数据类型,数组就是引用数据类型。

定义数组有两种格式:

元素类型[] 数组名 = new 元素类型[元素个数或数组长度]; 
示例:int[] arr1 = new int[5];
示例:float[] arr2 = new float[5];
格式二:

元素类型[] 数组名 = new 元素类型[]{元素,元素,……}; 
int[] arr1 = new int[]{3,5,1,7}; 
float[] arr2 = {1.3,1.5,1.1,1.7};
注意的是:在给数组分配空间的时候,必须指定数组能存储的元素个数来确定数组的大小,体现了数组长度固定这一特点,

数组的初始化

数组的声明与赋值

int arr[]=new int [2];
a[0]=10;
a[1]=20;

另一种方式也可以直接明确数组的长度,以及数组中的内容:

int[] arr=new int[]{20,30,40};
int[] arr={30,20,40};

如果不写new就一定要指定数组的内容

数组下标的有效范围与常见的异常

1.ArrayIndexOutOfBoundsException 索引值越界异常。 也就是数组下标超出了有效范围。

例如创建一个int[] arr=new int[2];

如果程序输出a[3]的话就会报错,原因是

它的有效下标是0,1,2,并没有3.一旦我们访问不在范围内的下标,就会产生数组下标越界异常。

2.NullPointerException 空指针异常 引用类型变量没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。

数组内存分析

栈内存:栈内存存储的都是局部变量,变量一旦出了自己的作用域,那么就会马上在内存中消失,释放内存空间。

堆内存:堆内存存储的都是对象内存,对象一旦用完不是马上从内存中消失,而是等待垃圾回收器不定时把垃圾对象回收,这个时候对象消失,释放内存。

凡是以new关键字创建的对象,jvm都会在堆中开辟一个新的空间创建一个新的对象。对象如果没有变量引用,它就是垃圾对象。

创建二维数组

二维数组可以看作是特殊的一维数组,有两种声明的方式:

数组元素类型 数组名字[][];
数组元素类型[][] 数组名字;
int arr1[][]; 
char[][] arr2;

二维数组也要用new关键字来分配内存,然后才可以访问每个元素,为二维数组分配内存有两种方式

int a[][];
a = new int[2][4];  //直接分配行类
int b[][];
b = new int[2][];   //先分配行,再分配列
b[0] = new int[2];  //给第一行分配列
b[1] = new int[2];  //给第二行分配列
创建二维数组的时候可以只声明列的数量,但是只说明行的数量就是错误的。

二维数组的赋值

public class InitTDArray {
	public static void main(String[] args) {
		/* 第一种方式 直接赋值*/
		int tdarr1[][] = { { 1, 3, 5 }, { 5, 9, 10 } };
		/* 第二种方式 用new的方法*/
		int tdarr2[][] = new int[][] { { 65, 55, 12 }, { 92, 7, 22 } };
		/* 第三种方式 分配内存对元素分别赋值*/
		int tdarr3[][] = new int[2][3]; // 先给数组分配内存空间
		tdarr3[0] = new int[] { 6, 54, 71 }; // 给第一行分配一个一维数组
		tdarr3[1][0] = 63; // 给第二行第一列赋值为63
		tdarr3[1][1] = 10; // 给第二行第二列赋值为10
		tdarr3[1][2] = 7; // 给第二行第三列赋值为7
	}
}

数组的基本操作

1.遍历数组,即获取数组中的每一个元素,用两层for循环来实现,通过length来获取数组的长度

例子:

public class Trap {
	public static void main(String[] args) {
		int b[][] = new int[][] { { 1 }, { 2, 3 }, { 4, 5, 6 } }; // 定义二维数组
		for (int k = 0; k < b.length; k++) { // 循环遍历二维数组中第一个索引
			for (int c = 0; c < b[k].length; c++) { // 循环遍历二维数组中第二个索引
				System.out.print(b[k][c]); // 将数组中的元素输出
			}
			System.out.println(); // 输出换行
		}
	}

注意a.length返回的是数组的行数,a[0].length返回的是第一行的列的数量

填充和替换数组中的元素

使用fill()方法

import java.util.Arrays; //导入java.util.Arrays类

public class Swap {
	public static void main(String[] args) {
		int arr[] = new int[5]; // 创建int型数组
		Arrays.fill(arr, 8); // 使用同一个值对数组进行填充
		for (int i = 0; i < arr.length; i++) { // 循环遍历数组中的元素
			// 将数组中的元素依次输出
			System.out.println("第" + i + "个元素是:" + arr[i]);
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值