Java入门基础知识第七课(超基础,超详细)——数组

2024-04-09 17:36

本文主要是介绍Java入门基础知识第七课(超基础,超详细)——数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前面二白讲了选择结构和循环结构,动手的同学会发现已经有了一定的难度,后面二白会专门收集一些经典的题目,训练多了才能让记忆更加深刻,这次咱们讲一下数组。

一、数组的定义

        什么是数组呢,我们都知道变量是存储数据的空间(装数据的容器),变量中只能存储一个数据,数组也是存储数据的空间(装数据的容器),但是与变量不同的是在数组中可以存储多个数据,但是多个数据的类型要相同。

二、语法(格式)

第一步:声明数组:准备一个可以存储多个数据的容器

数据类型[]  数组名; 或者  数据类型 数组名[];

第二步:分配空间:告诉数组中可以存储多少个数据

数组名 = new 数据类型[数据的个数];

第三步:赋值:将数据存储到数组中指定下标的位置

数组名[下标] = 数据;

注意:如果你没有给数组指定下标赋值,系统默认给数组元素赋值,整型(byte、short、int、long)默认值为0,浮点数(float、double)默认值为0.0,char类型数组元素默认值' ',boolean类型数组元素默认值为false,引用数据类型数组元素默认值为null。

第四步:操作数组中的元素

数组名[下标]

注意:数组的长度一旦声明好了之后就固定不变,不能修改,数组元素下标的范围是0~数组长度-1,下标值不能超出这个范围,超出这个范围会报ArrayIndexOutOfBoundsException(数组下标越界异常)

总结:

完整格式:

数据类型 [] 数组名 = new 数据类型 []{元素1,元素2……};

简化格式:

数据类型 [] 数组名 = {元素1,元素2……};

扩展:地址值

如下:

double [] arr1 = {1.1,2.1};System.out.println("arr1 = " + arr1);

解释一下地址值的格式含义 :[D@6d311334

[ 表示当前是一个数组

D:表示当前数组里面的元素都是double类型的

@:表示一个间隔符号(固定格式)

6d311334:才是真正的地址值(十六进制)

平时我们习惯性的会把这个整体叫做数组的地址值

三、输出数组内容

简单写法

 1.定义数组

        int [] arr = {1,2,3,4,5};

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

利用循环改进代码

开始条件:0

结束条件:数组的长度-1(最大索引)

for (int i =1;i<5;i++){System.out.println( arr[i]);}

注意:在Java中,关于数组的一个长度属性,length
调用方式:数组名.length

 System.out.println(arr.length);for (int i =1;i<arr.length;i++){System.out.println( arr[i]);}

扩展:

自动的快速生成数组的遍历方式

idea提供的

数组名.fori

for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}

四、简单练习

定义一个数组,用来存储班级中50个学生的姓名,姓名未知,等学生报道之后,再进行添加

String[] arr = new String[50];
//        添加学生arr[0] = "张三";arr[1] = "李四";
//        获取System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);//打印出来的是默认初始化值null//        数组默认初始化值的规律
//        整数类型:默认初始化值0
//        小数类型:默认初始化值0.0
//        字符类型:默认初始化值'\u0000'——空格
//        布尔类型:默认初始化值false
//        引用数据类型:默认初始化值nullint[] arr2 = new int[3];System.out.println(arr2[0]);//0System.out.println(arr2[1]);//0System.out.println(arr2[2]);//0

五、略微复杂练习

有一组学员的成绩{99,85,82,63,60},将它们按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序

思路:

向一个已经排序好的数组中插入一个数据的思想:
1)新建一个长度比原来数组长度大1的新数组
2)将原来数组中的元素按照对应下标的关系存储到新的数组中
3)获取你要插入的值,通过Scanner对象来实现
4)获取插入元素要插入的位置(下标):通过循环的方式,将你要插入的元素与数组的元素值比较,一旦插入值比数组的某个值大,这个值的位置就是要插入的位置,后续就不需要再比较了
5)移动元素:从插入位置开始的元素以及之后的元素依次往后移动一位,注意:从倒数第二个元素开始往后移动
6)将要插入的元素赋值到插入位置处

package cn.kgc.se;import java.util.Scanner;/*** @JdkVersion: 17* @Author: 二白程序员* @Date 2024/4/8 14:20* QQ:1512015112* VX:18056394367*/public class Demo10 {public static void main(String[] args) {/** 有一组学员的成绩{99,85,82,63,60},将它们按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序* */Scanner scanner = new Scanner(System.in);int[] scores = {99,85,82,63,60};//1):新建一个长度比原来数组长度大1的新数组int[] newScores = new int[scores.length+1];//2)将原来数组中的元素按照对应下标的关系存储到新的数组中
//        newScores[0]=scores[0];
//        newScores[1]=scores[1];
//        newScores[2]=scores[2];
//        newScores[3]=scores[3];
//        newScores[4]=scores[4];//上述操作可以通过循环的方式来实现for(int i =0;i< scores.length;i++){newScores[i]=scores[i];}//新数组元素:99 85 82 63 60 0//遍历输出新数组中的所有元素for(int a :newScores){System.out.print(a+" ");}System.out.println();//3)获取你要插入的值,通过Scanner对象来实现System.out.println("请输入你要插入的值:");int insertNum = scanner.nextInt();//4)获取插入元素要插入的位置(下标)//假设插入元素要插入的位置是数组最后一个位置(数组最后一个元素是默认值,不是我们赋予的值),下标为newScores.length-1int index = newScores.length-1;for(int i =0;i<newScores.length;i++){//比较要入的元素与数组中的元素if(insertNum>newScores[i]){index=i;break;//一旦得到插入元素比数组某个元素大,就结束循环后续所有操作,不再比较}}System.out.println("插入元素要插入的位置:"+index);// 5)移动元素:从插入位置开始的元素以及之后的元素依次往后移动一位,注意:从倒数第二个元素开始往后移动//99,85,82,63,60for(int i =newScores.length-1;i>index;i--){newScores[i]=newScores[i-1];}System.out.println("------------------------");//6)将要插入的元素赋值到插入位置处newScores[index]=insertNum;//遍历输出新数组中的所有元素for(int a :newScores){System.out.print(a+" ");}System.out.println();}}

这篇关于Java入门基础知识第七课(超基础,超详细)——数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/888794

相关文章

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

java中long的一些常见用法

《java中long的一些常见用法》在Java中,long是一种基本数据类型,用于表示长整型数值,接下来通过本文给大家介绍java中long的一些常见用法,感兴趣的朋友一起看看吧... 在Java中,long是一种基本数据类型,用于表示长整型数值。它的取值范围比int更大,从-922337203685477