数组--数组的基本学习

1 数组基本定义

数组:同一类型数据的集合(也是一个容器,存储多个数据)
格式:

元素类型[] 数组名 = new 元素类型[元素个数或者数组长度];

补充:前面的[]放在数组名前面或后面都可以。
数组使用的核心思想:
1.可以存储多个相同类型的数据
2.可以对每个数据进行编号(索引或下标),从0开始
3.固定长度

// 创建一个长度为3,元素类型为int类型的数组
	// 格式一:
	int[] arr = new int[3];
	// 格式一:数组长度可以为变量
	int a = 3;
	int[] arr1 = new int[a];
	//格式二:创建数组并且进行赋值
	int[] arr2 = new int []{11,22,33};
	//对上述进行简化
	int[] arr3 ={11,22,33};
	//获取数组的长度
	System.out.println(arr3.length);
	//对数组进行遍历
	for(int i=0;i<arr3.length;i++){
		System.out.println(arr3[i]);
	}

输出数组要使用for循环遍历(获取数组中每一个元素)数组。

2 java中的内存区域

栈,堆,方法区,本地方法区,寄存器。
(1)栈:存储的都是局部变量(定义在方法中),自动释放资源
特点:
1)main方法会先压栈,先进后出。
2)一旦变量的生命周期结束,那么该变量就释放。
(2)堆:存储实体(对象)
特点:
1)凡是通过new创建的都是对象,堆内存中变量(引用型变量)有默认值。每new一次就会在堆中开辟一个区域,在内存中引用型变量(栈区)会指向数组(堆区)生成的地址值(二进制格式)。
2)由垃圾回收机制回收资源:当数组在对中生成的地址没有变量指向该地址值时,java就会启动垃圾回收机制,对数组对象进行回收。
int [] arr = new int[3];// 变量arr指向地址值0x0012;
如果不想让引用型变量指向任何内容,则可以赋值为null
arr = null;// 将arr指向null,不再指向任何地址值。此时0x0012没有被引用,java会启动垃圾回收机制回收堆中0x0012开辟的区域。int类型默认值为0,double(float)类型默认值为0.0,boolean类型默认为false,String的默认值为null。
在这里插入图片描述
上图输出arr[3]结果为0。
相同数据类型之间可以进行赋值,引用类型变量之间可以进行赋值,但是其将右边的地址值赋值给左边的变量。
arr = x;
System.out.println(arr[3]);//结果为90
上述arr = xx;就是将变量arr指向新的地址值0X0015。原来的旧地址值0x0012没有被引用,因此就会被java回收机制回收。

3 数组的两个异常

1)数组下标越界异常
2)空指针异常

 //异常1
	System.out.println(arr[3]);//ArrayIndexOutOfBoundsException:数组下标越界
//异常2
	arr = null;
	System.out.println(arr[0]);//NullPointerException:空指针异常

4 求最值

public class Maximum_value {
//	主方法调用
	public static void main(String[] args) {
		int[] arr = { 2322, 1234, 4, 53, -2, 65 };
		int MAX1 = getMax(arr);
		System.out.println("最大值 为" + MAX1);
		int MAX2 = getMax2(arr);
		System.out.println("最大值 为" + MAX2);
	}
	/*
	 * 功能:获取多个整数中最大值 思路:1.定义一个变量,先假设数组第一个元素记录为最大值
	 *  2.对数组进行遍历,让假设的第一个元素与第二个元素进行比较。
	 *				如果假设的最大值小于下一个元素,则将下一个元素赋值为最大值,依次对数组后面的元素比较。
	 * 				如果假设的最大值大于下一个元素,则最大值仍为当前元素,就继续对数组后面的元素比较 
	 * 3 方法一:通过元素的方式;方法二:通过下标赋值的方式
	 * 明确:1.返回最大值 2.参数列表:传入数组
	 */
	// 方法一:通过元素的方式
	public static int getMax(int[] arr) {
		// 1.定义变量,初始化数组中第一个元素
		int max = arr[0];
		// 遍历数组,为了减少一次和子级的比较,所以i初始化值为1
		for (int i = 1; i < arr.length; i++) {
			// 若获取到当前元素大于max,重新赋值。
			if (arr[i] > max) {
				max = arr[i];
			}
		}
		// 数组遍历完之后,得到的max就是最大值
		return max;
	}

	// 方法二:通过元素下标的方式
	public static int getMax2(int[] arr) {
		// 1.定义变量,初始化数组下标值
		int maxIndex = 0;
		// 2.遍历数组
		for (int i = 1; i < arr.length; i++) {
			//3.通过下标进行判断
			if (arr[maxIndex] < arr[i]) {
				maxIndex = i;
			}
		}
		return arr[maxIndex];
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值