7.javase_数组1
创始人
2024-03-21 20:00:43
0

一. 数组定义格式

格式1:数据类型[] 变量名;
范例:int[] arr;
格式2:数据类型 变量名[];
范例:	int arr[];

二. 数组初始化方式

	1.1静态初始化:【初始化时指定每个数组元素的初始值,由系统决定数组长度】格式:数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3,…};范例:int[] arr = new int[]{1,2,3};   int[] arr = {1,2,3};1.2动态初始化:【初始化时只指定数组长度,由系统为数组分配初始值】格式:数据类型[] 变量名 = new 数据类型[数组长度];范例:int[] arr = new int[3];代码案例://格式:数据类型[] 变量名 = new 数据类型[数组长度];int[] arr = new int[3];//修改数组中的元素arr[0] = 10;arr[1] = 20;arr[2] = 30;1.3使用场景:静态初始化:开始就存入元素值,适合一开始就能确定元素值的业务场景动态初始化:指定数组长度,后期赋值,适合开始知道数据的数量,但是不确定具体元素值的业务场景1.4注意:两种初始化的方式是独立的,不可以混用如错误使用:int[] arr = new int[3]{30,40,50};

三.数组元素访问

(1)数组变量访问方式格式:数组名(2)数组内部保存的数据的访问方式格式:数组名[索引](3)数组元素访问代码案例
 public class ArrayDemo {public static void main(String[] args) {//1.定义一个数组,并进行初始化int[] scores = new int[]{93,96,99}; //int[] scores = {93,96,99};//2.输出数组名System.out.println(scores); //[I@776ec8df//3.输出数组中的元素System.out.println(scores[0]);System.out.println(scores[1]);System.out.println(scores[2]);System.out.println("-----------");//4.修改数组中的元素scores[0] = 100;scores[1] = 98;scores[2] = 95;//5.再次输出数组中的元素System.out.println(scores[0]);System.out.println(scores[1]);System.out.println(scores[2]);}}

四.数组常见操作
(1)数组遍历

public class ArrayTest01 {public static void main(String[] args) {//1.定义数组并初始化int[] arr = {77, 88, 99, 66, 55, 44};//2.获取数组中的元素System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);System.out.println(arr[3]);System.out.println(arr[4]);//3.用循环改进for (int i=0; i<5; i++) {System.out.println(arr[i]);}//4.格式:数组名.lengthSystem.out.println(arr.length);for (int i=0; iSystem.out.println(arr[i]);}}}

(2)获取数组最大值

public class ArrayTest02 {public static void main(String[] args) {//1.定义数组int[] arr = {12, 45, 98, 73, 60};//2.定义变量max存储最大值,取第一个数据为变量的初始值int max = arr[0];//3.与数组中剩余数据逐个比对,每次比对将最大值保存到变量max中for (int i=1; iif(arr[i] > max) {max = arr[i];}}//4.循环结束后输出变量max的值System.out.println("max:" + max);}}

(3)数组元素打乱
1.1涉及到的操作
获取数组中元素的随机索引
Random r = new Random();
int index = r.nextInt(arr.length);
数组中元素交换
int a = 10;
int b = 20;
int temp = a;
a = b;
b = temp;
1.2数组元素打乱代码实现

public class ArrayTest03 {public static void main(String[] args) {//1.定义数组int[] arr = {12, 45, 98, 73, 60};//2.生成随机交换的索引Random r = new Random();int index = r.nextInt(arr.length);//3.第一次交换int temp = arr[0];arr[0] = arr[index];arr[index] = temp;//4.第二次交换index = r.nextInt(arr.length);temp = arr[1];arr[1] = arr[index];arr[index] = temp;//5.遍历交换Random r = new Random();for (int i = 0; i < arr.length; i++) {int index = r.nextInt(arr.length);int temp = arr[i];arr[i] = arr[index];arr[index] = temp;}//6.遍历输出数组[idea快捷方式:arr.fori]for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}}

四.数组案例练习
(1)需求:
定义一个可以存储5个元素的int数组,数据来自于键盘录入,
最后遍历数组,把元素输出在控制台

 public class ArrayTest {public static void main(String[] args) {//1.定义一个数组,并进行动态初始化int[] arr = new int[5];//2.创建键盘录入对象Scanner sc = new Scanner(System.in);//3.循环录入数据并赋值给数组元素for (int i = 0; i < arr.length; i++) {System.out.println("请输入第" + (i + 1) + "个元素:");arr[i] = sc.nextInt();}//4.调用方法遍历数组printArray(arr);}/* *定义一个循环遍历数组方法,并优化输出数组显示。 */public static void printArray(int[] arr) {System.out.print("["); //输出内容不换行for (int i = 0; i < arr.length; i++) {if(i==arr.length-1) {System.out.print(arr[i]); //输出内容不换行}else {System.out.print(arr[i] + ", "); //输出内容不换行}}System.out.println("]");  //输出内容并换行}}

五.数组内存图
在这里插入图片描述

六.数组访问和使用问题
(1)索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
int[] arr = new int[3];
System.out.println(arr[3]);

(2)空指针异常:对象不再指向堆内存,还想继续访问数据,访问失败
Exception in thread “main” java.lang.NullPointerException: Cannot load from int array because “arr” is null
int[] arr = new int[3];
arr = null;
System.out.println(arr[0]);
//解决空指针异常
if(arr != null) { System.out.println(arr[0]); }

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...