数组--数组的基本学习
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];
}
上一篇: guzz1.2.8 beta2发布--支持动态加载在线调试SQL
下一篇: 数组---数组的基本操作