7.javase_数组1

news2024/10/7 20:24:49

一. 数组定义格式

格式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.格式:数组名.length
		        System.out.println(arr.length);
				for (int i=0; i<arr.length; i++) {
					System.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; i<arr.length; i++) {
				if(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]); }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/66080.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ARFoundation系列讲解 - 89 适配华为机型

一、简介 使用 ARCore 开发安卓应用的时候,由于谷歌的制裁和鸿蒙系统的不兼容,导致华为大部分机型无法使用,而国内使用华为设备的群体占比较大的比例所以兼容华为设备是一个绕不过的坎。这个章节我们将学习使用 HuaweiAREngine 结合 ARFoundation 兼容使用来解决这个问题。 …

职业教育数字化成行业发展新方向

2022年,职业教育正迎来新的风口。随着与普通教育同等重要的地位得到确认,职业教育将肩负起建设与我国经济结构转型需求相匹配的人才供给的重任,在社会服务业、战略新兴行业等各大领域中大放异彩。 一、职业教育是什么? 1、职业教育定义 联合国教科文组织认为职业教育(Vocat…

PID控制器的远程设定点功能及其应用

摘要&#xff1a;远程设定点功能是超高精度PID控制器的重要拓展功能之一&#xff0c;其在实际自动控制中有着广泛的应用。本文详细介绍了远程设定点的功能和操作设置过程&#xff0c;同时还介绍了远程设定点功能在跟踪控制、串级控制和比值控制中的具体应用。 原文阅读&#x…

争议不断的AI绘画,靠啥成为了顶流?

今年以来&#xff0c;AIGC迅速崛起。所谓AIGC&#xff0c;即AI-Generated Content&#xff0c;指的是利用人工智能来生成内容&#xff0c;被认为是继专业产出内容&#xff08;PGC&#xff09;、用户产出内容&#xff08;UGC&#xff09;后的新型内容创作方式。不久前掀起热议的…

品牌化、跨境电商、专注细分赛道,平台助力品牌快速出海

国内国外产品都面临着日趋激烈的竞争&#xff0c;卖家越来越意识品牌的效应的重要作用。在竞争激烈的大环境之下&#xff0c;卖家必须采取有效的产品品牌营销策略来提高自身产品的市场竞争力。品牌营销在一定程度上可以增强产品在激烈的市场竞争的影响力。同时&#xff0c;口碑…

【DL】Windiws10系统下安装CUDA和CUDNN实践教程

Windiws10系统下安装CUDA和CUDNN实践教程(手把手系列,不错过任何一个环节): 一、查看需要的CUDA版本 点击开始菜单栏右侧的放大镜,输入NVIDIA 然后点击NVIDIA Control Panel,进入NVIDIA控制面板 点击管理3D设置->系统信息 弹出以下界面框 点击组件,就可以看到驱动对…

工业CT检测技术及工业CT基本组成

工业CT基本组成 由重建CT图像的基本过程出发&#xff0c;我们可以想象一下组成一台工业CT设备的基本要求&#xff1a;它应该能够量 X射线穿透被检物体以后射线的强度&#xff0c;同时能够完成X射线机-探测器系统与被检测物体之间的扫描运动&#xff0c;从而获得重建CT图像所需的…

如何将u盘两个分区合并?u盘怎么合并一个区

U盘是我们日常工作中应用得很广泛的便携式存储设备&#xff0c;具有体积小、便携易带、容量大、随插随拔等优势。为了方便存储数据&#xff0c;不少的用户都会对U盘分区&#xff0c;那么&#xff0c;如何将u盘两个分区合并&#xff1f; 一、合并U盘分区的应用与说明 合并U盘分…

Java高效率复习-MySQL下篇

前言 本文章的语言描述会比上篇多一些 数据库的创建修改与删除 标识符命名规则 数据库名、表名不得超过30个字符&#xff0c;变量限制为29个必须只能包含A-Z&#xff0c;a-z&#xff0c;0-9&#xff0c;_等63个字符数据库名、表名、字段名等对象名中间不要包含空格同一个My…

【Unity编辑器扩展】GF_HybridCLR自定义Toolbar, 一键出包/打热更扩展工具

GF_HybridCLR是基于GameFramework HybridCLR的一款工具链完善&#xff0c;工作流简洁的游戏框架。拥有标准高效的开发工作流&#xff0c;开箱即用&#xff0c;适用于快速研发。 出包时经常遇到忘记刷新配置表、忘记重新打AB包等等&#xff0c;接入HybridCLR每次打热更包也需要…

Android Span进阶之路——ClickableSpan

一、前言 在Android中&#xff0c;可以使用强大的标记&#xff08;Span&#xff09;对象来实现富文本展示&#xff0c;相比 HTML 而言更高效实用。关于 Android Span 的入门篇可以阅读 Android中强大的标记对象-Span。本文将对 ClickableSpan &#xff08;可点击的Span&#xf…

WebDAV之葫芦儿·派盘 + Koder

Koder 支持WebDAV方式连接葫芦儿派盘。 一款可以让你在iPhone、iPad上写各种编程语言代码的app,码农不要错过。 Koder是iPad和iPhone的代码编辑器。它确实具有许多功能,包括语法突出显示,代码段管理器,选项卡式编辑,查找和替换代码,编辑器主题,远程和本地文件连接等等…

OpenCV入门(C++/Python)- 使用OpenCV标注图像(六)

使用OpenCV标注图像用颜色线标注图像绘制圆绘制实心圆绘制矩阵绘制椭圆绘制带轮廓和填充半椭圆使用文本注释图像为图像和视频添加标注的目的不止一个&#xff0c;包含&#xff1a;向视频中添加信息在对象检测的情况下&#xff0c;在对象周围绘制边界框&#xff0c;用不同颜色的…

并查集介绍

文章目录&#xff1a;并查集原理并查集实现并查集的类结构并查集的合并统计集合数量并查集原理 在一些应用问题中&#xff0c;需要将 n 个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元素集合&#xff0c;然后按照一定的规律将归于同一组元素的集…

《找对英语学习方法的第一本书》

简 述: 此书写于二十年前&#xff0c;结合我自身情况参照&#xff0c;有了一种理论指导&#xff0c;可在众多学习方法中有效抉择&#xff0c;亦能在不同阶段更换不同策略。本文为读后的一个简要归纳和札记。 文章目录第一章&#xff1a;爱之愈深、误之愈切第二章&#xff1a;我…

李宏毅2022《机器学习/深度学习》——学习笔记(5)

文章目录优化方法CNNCNN和全连接神经网络的区别感受野共享参数CNN和全连接神经网络的总结PoolingCNN流程自注意力机制自注意力机制解决的问题输入是一组向量的例子输入是一组向量时输出的可能自注意力机制核心思想自注意力机制具体细节Self-attention和CNN的关系参考资料优化方…

网络安全之从原理看懂XSS

01、XSS的原理和分类 跨站脚本攻击XSS(Cross Site Scripting)&#xff0c;为了不和层叠样式表(Cascading Style Sheets&#xff0c;CSS)的缩写混淆 故将跨站脚本攻击缩写为XSS&#xff0c;恶意攻击者往Web页面里插入恶意Script代码&#xff0c;当用户浏览该页面时&#xff0c…

七周成为数据分析师 | 业务

为什么业务重要&#xff1f; 唯有理解业务&#xff0c;才能建立业务数据模型 一.经典业务分析指标 模型未动&#xff0c;指标先行 如果你不能衡量它&#xff0c;你就无法增长它 指标建立的要点 ①核心指标 ②好的指标应该是比率 ③好的指标应该能带来显著效果 ④好的指…

民办二本程序员阿里、百度、平安等五厂面经,5 份 offer(含真题)

昨天小休&#xff0c;一位高中同学联系了我&#xff0c;说是要请我吃饭&#xff0c;有这种好事&#xff0c;我当然是毫不犹豫的答应了啦&#xff01; 等等...会不会是找我借钱的&#xff1f; 好慌&#xff0c;怎么办&#xff1f;已经答应过去了。 在后面的交谈中&#xff0c;…

Word控件Spire.Doc 【图像形状】教程(12) 如何在C#中旋转word文档上的形状

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…