【java初学】数组详解

数组【重点】

1. 数组
1.1 为什么要使用数组
是否存在可能性需要一口气处理100个int类型数据???
	开发中一定会出现对于相同数据类型的使用操作过程,但是如果按照一个一个的变量定义来进行数据处理,保存和操作,会导致以下一些问题
	1. 代码过于臃肿。
	2. 变量命名压力很大,阅读性极差
	3. 对于数据的操作过程存在压力,没有【普适性】的操作方法
1.2 生活中数组概念
超市
	对于商品进行归类处理,同一个区域是同一类商品,同一个货架是一种商品。

图书馆
	书籍分类 T Technology
	5楼东
	1. <<电路>> 同一本书会存储于同一个书架位置上
	2. <<电路>> 这本书会有一个唯一编号 T-150
	3. <<电路>> 这本书有10本,每一本都有一个独立的编号
    	T-150-01 ~ T-150-10
  
总结:
	1. 书籍存储统一,并且连续。
	2. 书籍有一个统一名字 ==> 统一编号 T-150
	3. 每一本书又是一个独立的个体,有一个唯一标记
		T-150-01 T-150-05
1.3 Java中定义数组的格式【重点】
格式:
	数据类型[] 数组名 = new 数据类型[容量];

赋值号左侧
	数据类型:
		告知编译器,当前数组中能够保存的数据类型有且只能是哪一个数据类型,其他类
		型一概不允许,这里是为了保存【数据类型一致化】
	[]:
		1. 这里定义的是一个数组类型
		2. 告知你数组名是一个【引用数据类型】【指向性】
	数组名:
		1. 操作数组非常重要的内容
		2. 数组名是一个【引用数据类型】【变量】

赋值号右侧
	new:
		1. new关键字是向内存的【堆区】申请一块内存空间。
			内存就是一个仓库,申请内存就是相当于找仓库管理员申请一块区域,用于保
			存货物
		2. 清空整个申请内存空间中的所有数据。
	数据类型:
		前后呼应,明确告知编译器当前数组中有且只能保存的数据类型是哪一个。
	[容量]:
		Capacity
		告知编译器当前数组中能够保存的指定数组类型个数是多少个。
		并且一旦确定当前容量数据,该容量不可以改变。
1.4 数组定义案例
/*
数据类型[] 数组名 = new 数据类型[容量];
这里定义了一个可以保存10个int类型的数组,
数组名arr
*/
int[] arr = new int[10];
1.5 数组下标
数组下标是当前数组中存储元素的唯一索引标记
比如说一个int类型数组,容量为10,这里就可以使用下标来区分数组中的每一个元素。

数组下标从 0 开始 到 数组容量 - 1
	int[] arr = new int[10];
	有效下标范围:
		0 ~ 9

这里需要操作数组中指定下标元素
	数组名[有效下标]; 可以赋值,可以取值
class Demo2 {
	public static void main(String[] args) {
		/*
		数据类型[] 数组名 = new 数据类型[容量];
		这里定义了一个可以保存10个int类型的数组,
		数组名arr
		*/
		int[] arr = new int[10];  
		
		// 赋值数组中下标为0以及下标为5的元素
		arr[0] = 10;
		arr[5] = 20;
		
		// 赋值数组中下标为10的元素
		// arr[10] = 10;
		/*
		Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
			at Demo2.main(Demo2.java:15)
		ArrayIndexOutOfBoundsException 
			数组 下标 超出范围 异常 ==> 数组下标越界异常
		*/
		
		// 赋值数组中下标为-1的元素
		arr[-1] = 10;
		/*
		Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
			at Demo2.main(Demo2.java:24)
		ArrayIndexOutOfBoundsException 
			数组 下标 超出范围 异常 ==> 数组下标越界异常
		注意:
			-1是非法下标,在涉及到数组操作的代码中,会使用-1作为一定的错误标记。
		*/
		
		// 打印展示数组中下标为0以及下标为5的元素
		System.out.println("arr[0] : " + arr[0]);
		System.out.println("arr[5] : " + arr[5]);
	}
}
1.6 数组内存分析图

在这里插入图片描述

1.7 数组和循环不得不说的秘密
	数组算法中大量的使用到循环,尤其是for循环!!!因为数组存在有效下标操作的方式,并且下标操作有一定的范围和等差数列内容。
/* for循环和数组联用 */
class Demo3 {
	public static void main(String[] args) {
		/*
		这里定义了一个int类型数组,容量为10
		数组名是arr
		*/
		int[] arr = new int[10];
		
		/*
		arr.length 获取数组的容量属性
		利用循环给数组中的每一个元素进行赋值操作
		*/
		for (int i = 0; i < arr.length; i++) {
			arr[i] = i + 1;
		}
		
		// 利用循环展示数组中的所有元素内容
		for (int i = 0; i < arr.length; i++) {
			System.out.println("arr[" + i + "] = " + arr[i]);
		}
	}
}
1.8 数组地址转移分析图

在这里插入图片描述

2. 数组和方法关系
2.1 方法参数使用数组
public static void main(String[] args) {
    
}
/*
main方法所需参数就是一个数组类型,该数组类型是String字符串

数组作为方法的参数:
	public static returnType methodName(arugmentType[] arrayName)
*/
需求
	给予int类型数组赋值操作

方法分析:
	public static 
		不要问,固定格式
	返回值类型:
		void
	方法名:
		【见名知意,动宾结构,小驼峰命名法】
		assignIntArray 
	形式参数列表:
		这里所需的参数是int数据类型数组
		(int[] arr);

方法声明:
	public static void assignIntArray(int[] arr);
class Demo5 {
	public static void main(String[] args) {
		int[] array = new int[10];
		
		// 这里需要调用一个int类型数组作为参数的方法
		assignIntArray(array);
		printIntArray(array);
	}
	
	/**
	* 赋值用户指定的int类型数组
	*
	* @param arr 用户指定的int类型数组
	*/
	public static void assignIntArray(int[] arr) {
		for (int i = 0; i < arr.length; i++) {
			arr[i] = i + 1;
		}
	}	
	
	/**
	* 展示用户指定的int类型数组
	*
	* @param arr 用户指定的int类型数组
	*/
	public static void printIntArray(int[] arr) {
		for (int i = 0; i < arr.length; i++) {
			System.out.println("arr[" + i + "] = " + arr[i]);
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值