Java数组Arrary基本概念,Arrays工具类,使用数组进行冒泡,快速排序

Java数组Arrary

基本概念:

​ 之前学过变量,可以用来存储数据,但是变量有一个缺点,一个变量在同一时间只能存储一个值,如果代码中需要同时存储很多数据的时候,使用变量就会变得相当麻烦,例如需要存储1000个学生的成绩,我们就需要定义100个变量来实现,那代码就会相当复杂,此时就可以使用数组解决这个问题

**数组:**可以实现同时存储多个数据。数组可以实现同时存储多个相同类型的数据,并且通过下标来操控里面的值

需要注意的是,数组的长度在第一次初始化的时候就已经指定了,不能更改

**元素:**是指数组中保存的数据,如果没有对数组里面的元素赋值的话,里面的元素都是类型的默认值

默认值:整型默认0,浮点型默认0.0,布尔默认是false,引用数据类型默认值是null

**长度:**是指数组中可以保存的元素个数。可以通过数组名.length属性获取到数组的长度

**下标:**是指数组中元素的位置,可以通过数组名[下标]来操控数组中的值,下标从0开始永远比长度小1

数组的创建分两步:

​ 1:声明 类型名 对象名[]; 例:int array[];

​ 2:初始化

​ 2.1:静态初始化 是指,在初始化数组的时候直接给数组里面的元素赋值

​ 2.2:动态初始化 是指,在初始化数组的时候只指定长度,不进行赋值

数组用起来并不复杂,我们可以向使用变量一样去使用数组,只是在名称后面多了一个下标的指定而已

int array[]={1,2,3,4,5,6,7};//静态初始化
int array2[]=new int[10];//指定长度,动态初始化
System.out.println(array.length);//打印长度

​ 由于数组可能会很长,所以我们一个一个通过下标去查看会很麻烦,此时可以通过学习的for循环来遍历数组,以及对数组赋值
​ 总结下数组的规律我们可以发现下标从0开始,永远比数组的length小,所以正好可以使用for循环的计数器充当下标操控数组

//使用增强for循环遍历数组:	增强for循环可以在每次循环的时候,都将数组的值取出来然后赋值给:前面的变量
//要求:前面声明的变量类型必须要与数组的类型一致
//需要注意的是:数组的赋值是通过下标操作的,而增强for循环中数组是没有下标的,所以我们不能通过增强for循环给数组赋值
//只能使用增强for循环读取数组的值 		 

for(int i: array2){
		System.out.print(i+"\t");
}

Arrays工具类

Arrays:是jre提供的一个工具类,专门用于操作数组的,里面提供了与数组有关的方法

Arrays.toString(array); 可以将数组转化成字符串

Arrays.sort(array); 可以将数组的元素进行升序排序

Arrays.binarySearch(array,8) 返回元素8在数组中的下标位置,如果是负数则代表不存在,二分查找,需要有序

Arrys.fill(array,555); 将数组内的元素都变成 555

Arrrs.copyOf(array,10) 复制一个新的数组,长度为10,并且在有效长度内与新数组的值与老数组相同

Arrays.copyOfRange(array,2,10) 复制数组,从下标2到9,左闭右开,长度不够用默认值

Arrays.equals(copyOfRange,copyOfRange) 对比数组中的值是否相等

int array[] = {54,8,21,45,8,9,88,99,77,222,44,66};
System.out.println(array);	//直接输出的话,是一个内存hash地址
System.out.println(Arrays.toString(array));	//打印输出
Arrays.sort(array);//升序
System.out.println(Arrays.toString(array));
System.out.println(Arrays.binarySearch(array,8));	//打印输出元素的地址
int[] copyOf = Arrays.copyOf(array,8);
System.out.println(Arrays.toString(copyOf));	//打印复制的数组
int[] copyOfRange = Arrays.copyOfRange(array,2,5); //复制指定下标的数组
int[] copyOfRange2 = Arrays.copyOfRange(array,2,5);
System.out.println(Arrays.toString(copyOfRange));	
System.out.println(copyOfRange == copyOfRange2);	//false
System.out.println(Arrays.equals(copyOfRange, copyOfRange));

Arraysort排序

冒泡排序:每次都是相邻的两个元素进行比较,如果大于或小于对方则互换位置

int array[] = {1,2,3,8,8,9,70,25,2};
for(int j =0;j<array.length-1;j++){
	for (int i =0;i<array.length-1-j;i++){
		if(array[i]<arraAy[i+1]){
			int k=array[i];
			array[i] = array[i+1];
			array[i+1]=k;
            }
		}
}
System.out.println(Arrays.toString(array));

选择排序:每次循环都选取出最大或最小值的下标,然后将其元素与起始的元素互换位置。简单理解就是,每次循环都找出最小值(或最大值)的下标,然后将其放入到数组的头部开始排序

int array[] = {1,2,3,90,8,9,70,25};
		for(int i =0;i<array.length-1;i++){
			int k=i;
			for(int j=i+1;j<array.length;j++){
					if(array[k]>array[j]){
						k=j;
					}
				}
			if(k!=i){
				int n=array[i];
				array[i]=array[k];
				array[k]=n;
			}
		}
System.out.println(Arrays.toString(array));
		
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值