java数组

数组

一、数组概述(*)

数组的定义

​ 数组是Java语言中常见的一种引用数据类型,它是具有相同数据类型的一组数据的集合。

存储在数组中的数据我们称之为数组元素,而数组元素是可以通过“数组名[下标]”这种方式来进行访问的。数组的下标也称为数组的索引,是从0开始。

二、数组都具有以下主要特征(*)

 *		存储在数组中的数据具有相同的数据类型
 *		数组的下标(索引)从0开始
 *		数组下标的最大值是数组的长度-1
 *		数组一旦创建长度不能改变

三、数组定义语法(*)

image-20211227120115716

/**
 * 	什么是数组?
 * 		数组是一种引用数据类型,它是一系列具有相同类型的数据的集合
 * 	语法:
 * 		方式一:
 * 			数据类型[] 数据名 = new 数据类型[数组长度];
 *		方式二:
 *			数据类型[] 数组名 = {值1,值2,值3.....};
 *	数组的特点:
 *		数组只能存储相同类型的数据
 *		数组的下标从0开始
 *		数组下标最大值等于数组长度减1
 *		数组一旦创建长度不可改变
 */
public class Lesson1 {

	public static void main(String[] args) {
		/**
		 * 	方式一:
		 */
//		//1.声明数组
//		int[] arr;
//		//2.分配空间
//		arr = new int[5];
		//上面的2行可以合并为一行
		int[] arr = new int[5];
		//向数组中存储数据
		arr[0] = 3;
		arr[1] = 5;
		arr[2] = 1;
		arr[3] = 7;
		arr[4] = 6;
		//查看数组中的数据
		System.out.println(arr[3]);
		
		/**
		 * 	方式二
		 */
		int[] arr2 = {2,3,4,5};
		
		
		double[] arr3 = {1.1,2.2};
		
		String[] arr4 = {"hello","woniuxy","world"};
	}

}

四、数组的使用(*)

int[] arr = new int[5];

查看数组的长度

		//1.查看数组长度
		int len = arr.length;
		System.out.println("数组的长度:"+len);

        //2.1增
        //因为数组一旦创建,长度不能改变,没有新增功能

        //2.2删
        //因为数组一旦创建,长度不能改变,没有删除功能

		//2.3修改
		arr[1] = 100;
		System.out.println(arr[1]);
		//修改
		arr[1] = 200;
		System.out.println(arr[1]);

		//2.4查
		int n = arr[1];
		System.out.println(n);

数组的遍历

使用for循环把数组中的元素都查询出来

int[] arr = {3,5,1,7,6};

正序遍历

		//3.1正序遍历
		for(int i=0;i<arr.length;i++) {
			System.out.println(arr[i]);
		}		

倒序遍历

		//3.2倒序
		for(int i=arr2.length-1;i>=0;i--) {
			System.out.println(arr2[i]);
		}

五、算法

1.求和及平均值(*)

		int[] arr = {3,5,1,7,6};
		
		//定义变量存储累加和
		double sum=0;
		//遍历数组
		for(int i=0;i<arr.length;i++) {
			sum = sum + arr[i];
		}
		
		//定义变量存储平均值
		double avg = sum/arr.length;
		//在循环外面输出结果
		System.out.println("和为:"+sum);
		System.out.println("平均值为"+avg);

2.数组的排序

int[] arr = {3,5,1,7,6};
		//使用java提供的排序方式对数组进行排序(只能做升序排序)
		Arrays.sort(arr);
		
		//遍历数组
		for(int i=0;i<arr.length;i++) {
			System.out.println(arr[i]);
		}
		System.out.println("------------------------");
		for(int i=arr.length-1;i>=0;i--) {
			System.out.println(arr[i]);
		}

3.求最值(*)

		int[] arr = {3,5,1,7,6};
		/**
		 * 	求最大值
		 */
		//定义变量
		int max = arr[0];
		//循环遍历数组,通过比较求最大值
		for(int i=0;i<arr.length;i++) {
			if(max < arr[i]) {
				max = arr[i];
			}
		}
		System.out.println("最大值为"+max);
		
		/**
		 *	 求最小值
		 */
		//定义变量
		int min = arr[0];
		for (int i = 0; i < arr.length; i++) {
			if(min > arr[i]) {
				min = arr[i];
			}
		}
		System.out.println("最小值为"+min);

4.数组的反转

		int[] arr = {3,5,1,7,6};
		int[] arr = {3,5,1,7,6};
		for(int i=0;i<arr.length/2;i++) {
			//创建中间变量,实现数组元素的反转
			int temp = arr[i];
			arr[i] = arr[arr.length-1-i]; 
			arr[arr.length-1-i] = temp;
		}
		
		
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}

5.冒泡排序

/**
 * 	冒泡排序
 * 		特点:数组中两个相邻的元素做比较
 *
 */
public class Lesson7 {

	public static void main(String[] args) {
		int[] arr = {3,5,1,7,6};
		//第一轮
		for(int i=0;i<arr.length-1;i++) {
			if(arr[i]>arr[i+1]) {
				int temp = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = temp;
			}
		}
		
		//第二轮
		for (int i = 0; i < arr.length-2; i++) {
			if(arr[i]>arr[i+1]) {
				int temp = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = temp;
			}
		}
		
		//第三轮
		for (int i = 0; i < arr.length-3; i++) {
			if(arr[i]>arr[i+1]) {
				int temp = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = temp;
			}
		}
		
		//第四轮
		for (int i = 0; i < arr.length-4; i++) {
			if(arr[i]>arr[i+1]) {
				int temp = arr[i];
				arr[i] = arr[i+1];
				arr[i+1] = temp;
			}
		}
		
		
		/**
		 *	 最后的代码
		 */
		for (int j = 0; j < arr.length-1; j++) {
			for (int i = 0; i < arr.length-1-j; i++) {
				if(arr[i]>arr[i+1]) {
					int temp = arr[i];
					arr[i] = arr[i+1];
					arr[i+1] = temp;
				}
			}
		}
		
		
		
		//遍历数组
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	
	}
}	

6.数组的本质

image-20220328164849331

public class Lesson8 {

	public static void main(String[] args) {
		int[] arr1 = {3,5,1,7,6};
		//直接输出数组,输出的是数组在内存中的地址
		System.out.println(arr1);
		
		//把变量arr1的值赋值给变量arr2
		int[] arr2 = arr1;
		
		System.out.println(arr1[0]);
		System.out.println(arr2[0]);
		
		
		//修改数组元素
		arr2[0] = 100;
		
		System.out.println(arr1[0]);
		System.out.println(arr2[0]);
	}
}

7.数组复制(扩容)

image-20220328165001434

		int[] arr1 = {3,5,1,7,6};
		//数组的复制(扩容)  被复制的数组,复制之后的数组长度
		arr1 = Arrays.copyOf(arr1, 6);
		for (int i = 0; i < arr1.length; i++) {
			System.out.println(arr1[i]);
		}

六、案例

创建一个int型的数组,循环接收8个学生的年龄存入数组,计算这8个学生的总年龄及平均年龄.
步骤
   1.定义一个长度为8的数组
   2.循环接收用户输入学生的年龄,并存入数组
   3.遍历数组,对数组元素求和,并求出平均年龄,最大年龄,最小年龄
		int[] arr = new int[8];
		//创建扫描器
		Scanner input = new Scanner(System.in);
		for(int i=0;i<arr.length;i++) {
			System.out.println("请输入第"+(i+1)+"个学生的年龄");
			int age = input.nextInt();
			//把用户输入的年龄存入数组
			arr[i] = age;
		}
		//求和
		double sum = 0;
		for (int i = 0; i < arr.length; i++) {
			sum = sum + arr[i];
		}
		
		/**
		 * 求最大年龄
		 */
		int max = arr[0];
		for(int i=0;i<arr.length;i++) {
			if(max < arr[i]) {
				max = arr[i];
			}
		}
		/**
		 *	 求最小年龄
		 */
		int min = arr[0];
		for(int i=0;i<arr.length;i++) {
			if(min > arr[i]) {
				min = arr[i];
			}
		}

		System.out.println("总年龄:"+sum);
		System.out.println("平均年龄"+sum/arr.length);
		System.out.println("最大年龄"+max);
		System.out.println("最小年龄"+min);

八.二维数组

image-20211115155930083

public class Exam3 {

	public static void main(String[] args) {
		//创建二维数组
		int[][] arr = new int[3][2];
		//向二维数组存储数据
		arr[0][0] = 1;
		arr[0][1] = 2;
		arr[1][0] = 3;
		arr[1][1] = 4;
		arr[2][0] = 5;
		arr[2][1] = 6;
		
		//查看二维数组的数据
		System.out.println(arr[1][0]);
		
		int[] minArr = arr[0];
		System.out.println(minArr[0]);
		System.out.println(minArr[1]);
		
		
		/**
		 * 二维数组的遍历
		 */
		for(int i=0;i<arr.length;i++) {
			for(int j=0;j<arr[i].length;j++) {
				System.out.println(arr[i][j]);
			}
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值