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]); }

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...