java基础_数组

容器:是将多个数据存储到一起,每个数据称为该容器的元素

Java中容器:
	数组
	集合

数组:存储同一种数据类型多个元素的容器

数组的特点:
	1.数组里面存储的元素数据类型是同一种
	2.数组里面要存储多个元素(数组里面其实也可以没有元素或者一个元素,但这样的数组没有任何意义)
	3.在程序运行过程中,数组是不可改变的(讲解内存图的时候再说)

数据类型 变量名 = 初始化值;

数组的定义
	数据类型[] 数组名;(推荐)
		例如: int[] arr : 定义一个int类型的数组,数组名为arr
	数据类型 数组名[];
		例如: int arr[] : 定义一个int类型的变量,变量名为arr数组

	数据类型:数组里面存储元素的数据类型
	[]:定义的是一个数组
	数组名:给数组起的名字,见名知意

数组的初始化
	动态初始化:进行初始化时,只初始化数组的大小,里面的元素不确定
		格式:
			数据类型[] 数组名 = new 数据类型[数组长度];

			new:向内存申请一块区域,用来成初始化数组
			数据类型:数组里面存储元素的数据类型
			[数组长度]:数组里面存储元素的个数
	静态初始化:进行初始化时,确定数组里面的具体元素,JVM可以间接获取数组的长度
		标准格式:
			数据类型[] 数组名 = new 数据类型[]{元素1,元素2,......,元素n};
		简化格式:
			数据类型[] 数组名 = {元素1,元素2,......,元素n};

面试题:
	动态初始化和静态初始化的区别?
	标准版的静态初始化和简化版的静态初始化有什么区别?

初始化的注意事项:
	在进行数组的初始化过程中,不允许动静结合的方式
	//数据类型[] 数组名;
		int[] arr01;
	//数据类型 数组名[];
	int arr02[];

	//数据类型[] 数组名 = new 数据类型[数组长度];
	int[] arr03 = new int[3];

	//数据类型[] 数组名 = new 数据类型[]{元素1,元素2,......,元素n}
	int[] arr04 = new int[]{11,22,33};

	//数据类型[] 数组名 = {元素1,元素2,......,元素n};
	int[] arr05 = {11,22,33};

数组的访问

数组的索引(角标,下标):
	针对数组里面的元素进行相应编号
	从0开始,数组最大索引值(数组的长度-1)

作用:
	可以针对数组的元素进行获取和重新赋值
格式:
	数组名[索引值]

数组的两个小问题

ArrayIndexOutOfBoundsException:数组索引越界异常
			产生原因:访问不存在或者错误的索引值
NullPointerException:空指针异常
			产生原因:通过null访问数组的元素或者对象中数据

数组的遍历:

​ 获取数组中的每个元素

动态获取数组的长度:
	数组名.length

需求:根据指定格式打印数组
	数组:[元素1,元素2,元素3,......元素n]

数组的运行:

	初级运算:不针对数组里面的数据做任何改动
			求数组的和,最值,平均值....
	中级运算:不针对数组里面的数据做任何改动,获取所需的数据存储到另外的一个数组
			数组的动态扩容,删除,插入....
	高级运算:改变数组里面元素的顺序
			反转,排序

数组的特点:

​ 在程序的运行过程中,数组的长度是不可以改变

数组的动态扩容
	往数组里面最后位置添加一个元素

冒泡排序:

​ 原理:比较两个相邻的元素,将值大的元素交换至右端。

结论:
	1.数组中含有n个元素,进行排序就要进行n-12.每一轮都要进行(n-当前轮数)的判断
	public static void main (String[] args) {
		int[] arr = {6,3,7,8,2,9,1};
	
		System.out.print("排序前:[");
		for (int i = 0; i < arr.length ; i++ ) {
			if (i == arr.length -1) {
				System.out.println(arr[i] + "]");
			} else {
				System.out.print(arr[i] + ", ");
			}
		}

		for (int count = 1; count < arr.length; count++) {		// 外层循环控制的就是求几次最大值
			for (int i = 0; i < arr.length - count; i++ ) {		// 内层循环控制的就是求一次最大值比较的次数
				if (arr[i] > arr[i + 1]) {
					int temp = arr[i];
					arr[i] = arr[i+1];
					arr[i+1] = temp;
				}
			}
		}
        System.out.print("排序后:[");
		for (int i = 0; i < arr.length ; i++ ) {
			if (i == arr.length -1) {
				System.out.println(arr[i] + "]");
			} else {
				System.out.print(arr[i] + ", ");
			}
		}
	}
}

二分查找法

使用二分查找法前提条件:
	1.数组的元素是有序的
	2.保证数组里面的元素比较多的
	
	
	public static void main (String[] args) {
		//1.定义初始化一个数组
		int[] arr = {2,5,7,8,10,15,18,20,22,25,28};//有序

		//2.定义所需的数据
		//定义并初始化指定元素
		int num = 18;
		//定义并初始化指定元素的索引值
		int index = -1;
		// 定义并初始化数组的范围
		int start = 0;
		int end = arr.length - 1;
		// 定义并初始化中间值
		int mid = (start + end)/2;

		//3.查找指定元素
		while (start <= end) {
			if (num < arr[mid]) {
				//修改查找范围
				end = mid - 1;
				//mid = (start + end) / 2;
			} else if (num > arr[mid]) {
				start = mid + 1;
				//mid = (start + end) / 2;
			} else {
				index = mid;
				break;
			}

			mid = (start + end) / 2;
		}
		
		System.out.println("index = " + index);
	}

多维数组:

​		一维数组:
​			数组中直接有具体的数据的数组,定义数组时有一个[]修饰
​		二维数组:
​			定义数组时有两个[][]进行修饰
​			二维数组里面的元素就是一个一维数组
​		......

```java
二维数组的定义
	数据类型[][] 数组名(推荐)
	数据类型 数组名[][]
	数组类型[] 数组名[]

二维数组的初始化
	动态初始化
		格式1: 
			数据类型[][] 数组名 = new 数据类型[x][y];
			x : 整数,二维数组里面存在几个一维数组
			y : 整数,每个一维数组里面存在几个元素
		格式2:
			数据类型[][] 数组名 = new 数据类型[x][];
			x : 整数,二维数组里面存在几个一维数组
	静态初始化
		标准版:
			数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2,...},{元素1,元素2,...},.....};
		简化版:
			数据类型[][] 数组名 ={{元素1,元素2,...},{元素1,元素2,...},.....};

可变参数:JDK1.5的新特性

​ 和方法定义格式中的形参列表有关

	参数的个数是可变

	可变参数其实就是一个数组

格式 
	数据类型... 数组名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值