Java.数组

生活中都是数组

超市
物品是分门别类同样的物品会存放于同一个货架之上
图书馆
<<世界因你而不同>> 10本
存在于图书馆中

  1. 在同一个书架上
  2. 是连续存储的
  3. 每一本书都是有独立的编号,整个编号是有规律可循
    A-100-5-2-01 ~ 10
开发中的数据存储问题

在开发中可能会存在很多情况下,相同数据类型都是数据大量使用的情况,按照目前来说,在代码中可能就会出现很多行的变量定义,会导致以下问题:

  1. 代码过于臃肿!!!
  2. 代码阅读性极差!!!
  3. 数据维护性极差!!!
  4. 数据没有任何的复用度可言,操作非常繁琐!!!可以参考图书馆存放图书的方式来使用数组完成操作
  5. 同样的数据类型
  6. 数据的存储是连续的,同一个空间的
  7. 每一个数据都有一个独立编号,但是有统一的名字

Java中如何定义数组【重点】

数据类型[] 数组名 = new 数据类型[容量];

/*
赋值左侧

数据类型:
告知编译器,当前数组中能够保存的数据类型到底是什么?并且在确定数据类型之后,整个数组中保存的数据类型无法修改!!!
[]:
1. 告知编译器这里定义的是一个数组类型数据。
2. 明确告知编译器,数组名是一个【引用数据类型】
数组名:
3. 操作数据非常重要的数据!!!
4. 数组名是一个【引用数据类型】
5. 
小拓展: int(*) (void *, void *)
赋值号右侧:
new:
申请【XX】内存空间,并且清空整个内存空间中所有二进制位,所有的二进制
位都是0
数据类型:
前后呼应,告知编译器这里支持存储的数据类型到底是什么?
[容量]:
容量==> Capacity
告知编译器,当前数组中能够存放的对应数据类型的数据,最大存储多少个!!
【注意】
一旦确定容量,针对于当前数组,后期容量无法修改
*/

数组的下标

规定数组中的下标是从0开始,到数组的容量 - 1
例如:
数组容量为10
有效下标范围: 0 ~ 9
超出有效下标范围,都是无效下标,后期考虑数组处理异常问题,负数使用问题
操作会出现的问题:

  1. 数组下标越界
    ArrayIndexOutOfBoundsException

数组

class Demo3 {

	public static void main(String[] args) {

		int[] arr1 = new int[10];//定义一个数组类型为int,数组名为arr1,数组空间为10的数组; 
		int[] arr2 = new int[10];
		arr1[5] = 100;//给数组中元素赋值,数组中元素位置是从0开始的,[5]就是数组中第六个元素
		arr2[5] = 500;
		System.out.println(arr1[5]);//打印出来
		System.out.println(arr2[5]);
		arr1 = arr2;//把arr2的地址指向arr1
		arr1[5] = 2000;
		System.out.println(arr1[5]);
		System.out.println(arr2[5]);
	}
}
接下来就准备几个数组的实战例子,看数组是怎么应用的

找出数组中最小值的下标位置

public class Demo1 {

	public static void main(String[] args) {
	
		int[] arr = {1, 3, 5, 7, 9, 0, 4, 6,8, 10};
		// Ctrl + 1 Assign statement to new local variable
		int min = minIndexOf(arr);
		System.out.println("min index : " +min);
	}
/*
* 1.1 找出数组中最小值的下标位置
*
* 方法分析:
* public static 不要问
* 返回值类型:
* 这里需要返回数据是数组的下标
* int类型
* 方法名:
* minIndexOf
* 形式参数列表:
* 这里需要一个int类型数组
* (int[] arr)
* 方法声明:
* public static int minIndexOf(int[] arr)
*/

/**
* 当前方法是找出指定int类型数组中最小值所在的下标位置
*
* @param arr int类型数组
* @return 最小值所在的下标位置
*/
	public static int minIndexOf(int[] arr) {
		// 假设最小值下标位置是下标为0的元素
		int min = 0;
		for (int i = 1; i < arr.length; i++){
			if (arr[min] > arr[i]) {
				min = i;
			}
		}
	return min;
	}
}

找出数组中指定元素的最后一次出现的下标位置

public class Demo2 {

	public static void main(String[] args) {
	
		int[] arr = {1, 3, 5, 7, 9, 1, 3, 5,7, 9};
		int index = lastIndexOf(arr, 7);
		
		System.out.println("last Index Of : "+ index);
	}
	/*
* 1.2 找出数组中指定元素的最后一次出现的下标位置
* 方法分析:
* public static 不要问
* 返回值类型:
* int 返回值是一个下标
* 方法名:
* indexOf 第一次出现的位置
* lastIndexOf 最后一次出现的位置
* 形式参数列表:
* 1. 源数据数组,int类型
* 2. 查询的指定元素 int类型
* (int[] arr, int find)
* 方法声明:
* public static int lastIndexOf(int[] arr, int find)
*/

/**
* 找出数组中指定元素最后一次出现的位置
*
* @param arr 指定的int类型源数据数组
* @param find 指定需要查询的数据
* @return 返回值大于等于0表示找到数据,否则返回-1
*/
public static int lastIndexOf(int[] arr, int find) {
// 假设我们找不到对应的数据
	int index = -1;
	for (int i = arr.length - 1; i >= 0;i--) {
	// 找到对应元素,保存index,终止循环
		if (find == arr[i]) {
			index = i;
			break;
		}
	}
	return index;
}
}

Arrays数组工具类使用

数组的工具类:

提供了数组操作的基本方法

sort(int[] arr);

经过XXX,XXX,XXX三个大牛优化的利用XXX技术完成的快速排序算法

binarySearch(int[] arr, int find);

二分法查询,要求数组是有序的。

toString(任何类型数组);

把数组内容作出一个String类型字符串返回值{1, 3, 5, 7, 9} ==> [1, 3, 5, 7, 9]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值