Java数组概念与常用算法

这次是2021年01月12日的学习成果,总结于此,以便于之后的学习查漏补缺

一、数组是什么?

数组:数组就是一种用于存储数据的典型数据源结构,是将类型相同的若干数据有序的形式组织起来的一种形式。
数组知识点:
1.数组有一个名字,称为数组名。
2.数组中存放的数据叫做元素(element)
3.每个元素在数组中都有确切的位置,这个位置用下标或者索引(index)来表示。请注意:下标是从0开始的。
4.数组个数=元素最大index+ 1
5.数组中存放的元素是有序的
6.数组中元素的个数,常被称为数组的长度(length);
请注意:数组的长度一旦确定就不能修改。

二、一维数组

定义:
type[] arrayName type可以使基本对象和数据类型

创建数组(静态/动态)

获取数组下标及常见错误类型

public static void main(String[] args) {
		//type[] arrayName = {x,x,x,x,x};
		//静态创建
		int[] array1 = {1,6,8,9,7};
		float[] array2 = {5.6F,6.2F,9.7F,7.8F,6.5F,6.5F};
		//动态创建
		int[] array3 = new int[3];
		array3[0] = 2;
		array3[1] = 5;
		array3[2] = 6;
		System.out.println(array1.length);
		System.out.println(array2.length);
		int len = array1.length;
		//获取数组元素 数组名[下标]
		System.out.println(array1[2]);
		//java.lang.ArrayIndexOutOfBoundsException
		//错误类型:数组下标范围越界
		//System.out.println(array2[-1]);
		System.out.println("----------------");
		int a1 = array1[2];
		System.out.println("数组array1第3个元素:"+a1);
		System.out.println("数组array1最后一个元素:"+array1[len-1]);
		System.out.println("----------------");
		int index = -1;
		if(index >=0 && index<len) {
			System.out.println(array1[index]);
		}else {
			System.out.println("输入下标有误");
		}
	}

获取数组长度及每个元素的长度

public static void main(String[] args) {
		String[] strArray = {"asd","fsgsf","yrng","nbnc"};
		//输出数组的总长度
		System.out.println(strArray.length);
		//输出数组中每一个元素的长度
		int sum = 0;
		for(int i =0;i<strArray.length;i++) {
			String temp = strArray[i];
			int len = temp.length();
			sum  = sum + strArray[i].length();
			System.out.println("元素为:"+temp+"它的长度为:"+len);
		}
		System.out.println("数组中元素总长度为:"+sum);
	}
}

一维数组中某个元素出现了几次

public static void main(String[] args) {
		//一维数组中某个元素出现了几次
		String[] strArray = {"asd","asd","yng","nbc"};
		int counter = 0;
		for(int i=0;i<strArray.length;i++) {
			String string = strArray[i];
			if(string.equals("asd")) {
				counter++;
			}
		}
		System.out.println(counter);
	}

求数组中最大/最小值

public static void main(String[] args) {
		//求一维数组的最大、最小值
		double[] array = {2.2,3.3,4.4,6.6,-7.7,8.8,9.9};
		double max = array[0];
		double min = array[0];
		int length = array.length;
		for(int i = 0;i<length;i++) {
			if(array[i]>max) {
				max = array[i];
			}
			if(array[i]<min) {
				min = array[i];
			}
		}
		System.out.println("当前数组最大值为:"+max);
		System.out.println("当前数组最小值为:"+min);
		System.out.println("最大值和最小值差为:"+ (max-min) );
	}

数组的遍历与逆置

public static void main(String[] args) {
		//遍历与逆置
		int[] array = {1,2,3,4};
		int len = array.length;
		for(int i =0;i<len;i++) {
			System.out.print(array[i]+ " ");
		}
		System.out.println("这是逆置前的遍历");
		System.out.println("---------------------");
		for(int i=0;i<len/2;i++) {
			int temp = array[i];
			array[i] = array[len-1-i];
			array[len-1-i] = temp;
		}
		System.out.println("逆置后的遍历");
		for(int i =0;i<len;i++) {
			System.out.print(array[i]+" ");
		}
	}

利用增强for循环遍历数组

public static void main(String[] args) {
		// 学习简便的for循环,也可以叫增强for循环
		int[] array1 = {1,2,3,4,5};
		for(int i : array1) {
			System.out.println(i+" ");
		}
		
		String[] strArray = {"ab","cd"};
		for(String str : strArray) {
			System.out.println(str);
		}
	}

复制数组

public static void main(String[] args) {
		//复制数组
		int[] array1 = {1,2,1,3,8};
		int len = array1.length;
		int[] array2 = new int[len];
		for(int i : array1) {
			System.out.println(i);
		}
	}

将两个数组组合成一个新的数组

public static void main(String[] args) {
		int[] array1 = {5,6,7,9};
		int[] array2 = {6,4,8,7};
		int len1 = array1.length;
		int len2 = array2.length;
		int len3 = len1 + len2;
		int[] array3 = new int[len3];
		for(int i =0;i<len3;i++) {
			if(i<len1) {
				array3[i] = array1[i];
			}else {
				array3[i] = array2[i-len1];
			}
		}
		for(int i : array3) {
			System.out.print(i+" ");
		}
	}

三、多维数组

一般使用二维数组,三维及以上数组通常不会使用,二维数组可以方便地表示表格类数据

二维数组

public static void main(String[] args) {
		//int类型的二维数组
		int[][] array = {{1,2},{3,4},{5,6}};
		int len = array.length;
		System.out.println(len);
		System.out.println("---------------------");
		//二维数组的每个元素是一个一维数组
		int[] element1 = array[0];
		for(int i : element1) {
			System.out.println(i);
		}
		System.out.println("---------------------");
		//从二维数组中取单个数据元素
		int temp = array[0][1];
		System.out.println(temp);
	}

遍历二维数组

public static void main(String[] args) {
		//遍历二维数组
		int[][] array = {{1,2},{3,4},{5,6}};
		int len = array.length;
		for(int i=0;i<len;i++) {
			int[] arr = array[i];
			for(int k =0;k<arr.length;k++) {
				System.out.println(arr[k]);
			}
		}
	}

利用数组做出随机点名系统

import java.util.Random;

public class Work07 {

	public static void main(String[] args) {
		Random random = new Random();
		String[] str = {"小明","小强","小红"};
		int len = str.length;
		int index = random.nextInt(len);
		System.out.println("点到名的答到:"+str[index]);
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值