数组
1. 数组的概述
概念:
用来存储一组相同数据类型的集合(或者叫容器)
注意事项:
1. 数组中的元素类型必须一致
2. 数组本身是引用数据类型,但是里面的元素既可以是基本数据类型,也可以是引用数据类型
3. 数组的长度一旦给定无法改变
2. 数组的初始化
2.1 动态初始化
概念:
给定数组的长度,由系统分配空间和初始值
格式:
数据类型[] 数组名 = new 数据类型[数组的长度];
数组的赋值和取值:
索引: 索引是从 0 开始的,索引的最大值是数组的长度减 1
赋值: 数组名[索引值] = 要赋的值
取值: 数组名[索引值];
public class Init { public static void main(String[] args) 自学java基础6{ int[] array = new int[4]; // 动态初始化 //数据类型[] 数组名 = new 数据类型[数组的长度]; array[0] = 10; // 赋值 array[1] = 20; // 赋值 array[2] = 30; // 赋值 array[3] = 40; // 赋值 for (int i = 0; i <= 3; i++) { System.out.println(array[i]); } } }
2.2 动态初始化
概念
给定数组中的元
素,由系统分配长度并赋值.
格式:
数据类型[ ] 数组名 = new 数据类型[]{元素 1,元素 2….};
简写格式:
数据类型[ ] 数组名 = {元素 1,元素 2….};
注意事项:
只有第一次定义的时候可以简写,重写赋值的时候不能简写
不能在定义数组的时候,又给定长度,有给定值
数组长度的获取: 数组名.length
public class InitPractice { // public static void main(String[] args) { // char [] arr_char = new char[] {'默','努','力','的','C'}; // int a = arr_char.length; // for (int i =0; i<a; i++) { // System.out.println(arr_char[i]); // } // } public static void main(String[] args) { boolean [] arr_bool = new boolean [] {false, false, true, true}; System.out.println(arr_bool[0]); } }
3. 数组的内存分析
栈(stack):局部变量和方法的执行,没有初始值
堆(heap): new出来的东西,有初始值--->基本数据类型:对应默认值
引用数据类型:null
4. 数组常见异常
空指针异常:
产生的原因: 使用 null 调用堆中的内容,要注意的是,如果一个变量的初始值是 null, 直接打印是不报错的,只有调用他里面的东西才会报空指针
例子:
int [] arr = null;//有初始值,初始值为 null
System.out.println(arr); //null
System.out.println(arr[0]);// java.lang.NullPointerException
数组角标越界异常:
产生的原因:数组的索引值超出的最大的范围,就会出现该异常
例子:
int[] arr = new int[3];// 索引值 0-2
System.out.println(arr[4]); // java.lang.ArrayIndexOutOfBoundsException
5. 数组应用
5.1 数组遍历
例子:定义一个数组{1,2,3,4,5}; 按如下格式打印数据:
[1,2,3,4,5]
public static void printArr(int[] arr) { for (int i = 0; i < arr.length; i++) { if (arr.length == 1) { System.out.println("[" + arr[i] + "]"); } else if (i == 0) { System.out.println("[" + arr[i] + ","); } else if (i == arr.length - 1) { System.out.println(arr[i] + "]"); } else { System.out.println(arr[i] + ","); } } }
可以单独封装成方法,public static 在同一个包下可以在不同的class文件中引用
引用方法格式:文件名.方法名(传入的参数)
和python封装类似
5.2 最值
求出一个数组中个最大值和最小值
思路:
1. 设置一个变量用来代表最值(数组中的第一个元素)
2. 用这个变量和数组中的每一个元素作比较
3. 如果数组中有元素比他大,就把他的值重新赋值
4. 比较结束后,打印最值
public static void printMaxandMin(int[] arr) { int max = arr[0]; int min = arr[0]; for (int i = 0; i < arr.length; i++) { if (max < arr[i]) { max = arr[i]; } if (min > arr[i]) { min = arr[i]; } } System.out.println("最大值为:" + max); System.out.println("最小值为:" + min); }
5.3 元素交换
将数组中两个元素做交换
思路:
1. 引入一个中间量
2. 中间量赋值为arr[i]
3. arr[i] = arr[j]
4. 然后 arr[j] = 中间量
/*
这是逆序,相当于头尾两两元素对应交换
*/
public static void reverse(int[] arr) { 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 j = 0; j<arr.length;j++) { System.out.print(arr[j]); } }
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/1725.html