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
//        引用数据类型:默认初始化值null
        int[] arr2 = new int[3];
        System.out.println(arr2[0]);//0
        System.out.println(arr2[1]);//0
        System.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-1
        int 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,60
        for(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();
    }

}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字乡村发展:推动农村现代化进程

随着信息技术的迅猛发展和数字化浪潮的深入推进&#xff0c;数字乡村发展已成为推动农村现代化进程的重要力量。数字乡村不仅是乡村振兴战略的重要组成部分&#xff0c;也是实现农村经济社会全面发展的重要途径。本文将从数字乡村的内涵、发展现状、面临的挑战以及发展策略等方…

聚类算法的先验基础知识

聚类算法的先验基础知识 1. 瑞利商2. 谱定理3. 联合概率4. 条件概率分布5. 边缘分布6. 贝叶斯定理7. 有向图8. 拉格朗日乘子定理 下一篇将介绍整理各种聚类算法&#xff0c;包括k-means&#xff0c;GMM(Guassian Mixture Models, 高斯混合)&#xff0c;EM(Expectation Maximiza…

Docker速成:新手变专家!

Docker介绍 容器历史 1、Chroot Jail 就是常见的chroot命令的用法。它在1979年的时候就出现了&#xff0c;被认为是最早的容器化技术之一。它可以把一个进程的文件系统隔离起来。 2、The FreeBSD Jail &#xff08;监狱&#xff09;实现了操作系统级别的虚拟化&#xff0c;他…

java中使用雪花算法(Snowflake)为分布式系统生成全局唯一ID

&#xff08;全局唯一ID的解决方案有很多种&#xff0c;这里主要是介绍和学习Snowflake算法&#xff09; 什么是雪花算法&#xff08;Snowflake&#xff09; 雪花算法&#xff08;Snowflake Algorithm&#xff09;是由Twitter公司在2010年左右提出的一种分布式ID生成算法&…

一起学习python——基础篇(10)

前言&#xff0c;Python 是一种面向对象的编程语言。以前大学读书的时候经常开玩笑说的一句话“如果没有对象&#xff0c;就new一个”。起因就是编程老师上课时经常说一句“首先&#xff0c;我们new一个对象”。 今天讲一下python的类和对象。 类是什么&#xff1f;它是一种用…

应用商店备案登记流程解析

引言&#xff1a; 随着智能手机的普及和移动互联网的发展&#xff0c;移动应用程序&#xff08;App&#xff09;已成为人们日常生活中不可或缺的一部分。在开发一个App之后&#xff0c;开发者需要将其上传到应用商店进行审核和上架。然而&#xff0c;在上架之前&#xff0c;开…

项目管理-Jiar Software

文章目录 前言Jira 中的关键词或术语功能应用场景优势 总结 前言 Jira Software 是由澳大利亚公司 Atlassian 开发的一款领先的敏捷项目管理工具&#xff0c;广泛应用于软件开发团队&#xff0c;以支持复杂的项目管理需求。以下是关于 Jira Software 的详细介绍&#xff0c;包…

银行内部控制管理系统应用架构最全介绍

内部控制管理系统 实物资产管理系统 依据《企业内部控制应用指引第 8 号——资产管理》&#xff0c;金融企业应当建立实物资产管理的岗位责任制度&#xff0c;对实物资产的验收入库、领用、发出、盘点、保管及处置等关键环节进行控制&#xff0c;防止各种实物资产被盗、毁损和…

mac中创建的证书提示是无效或者是证书不受信任的解决办法

mac中创建的证书提示是无效或者是证书不受信任的解决办法 原因&#xff1a; &#xff08;1&#xff09;可能是由于自己的误删除将Apple worldwide Developer Relatioans Certification Authority删除掉了 (2) 由于签发的认证的证书到期了 &#xff08;3&#xff09;其它未知原…

【趣味学算法】14_梅森素数

注&#xff1a; 本系列仅为个人学习笔记&#xff0c;学习内容为《算法小讲堂》&#xff08;视频传送门&#xff09;&#xff0c;通俗易懂适合编程入门小白&#xff0c;需要具备python语言基础&#xff0c;本人小白&#xff0c;如内容有误感谢您的批评指正 梅森数&#xff08;Me…

ML Kit:通过Mendix 集成人脸识别算法

预训练模型是一种已经使用训练数据集进行训练并包含执行模型所需所有参数的机器学习模型。这类模型常用于计算机视觉领域&#xff0c;比如可以在Mendix Studio Pro中导入ONNX模型后&#xff0c;可以在微流程中执行该模型。 本文讲述如何在Mendix应用程序中集成特定的人脸检测模…

短视频培训要多少钱?

在互联网时代&#xff0c;短视频已经成为一种流行的传播方式&#xff0c;不仅可以记录生活的美好瞬间&#xff0c;还可以作为一种职业技能&#xff0c;帮助个人或企业实现品牌推广和商业变现。因此&#xff0c;越来越多的人开始关注短视频制作培训&#xff0c;希望通过专业的学…

SQL语言自用(持续更新)(带例子)

目录 基础知识数据定义数据查询单表查询连接查询嵌套查询集合运算 实验例子数据定义数据查询单表查询查询的目标表达式为所有列、指定的列或指定的列的运算三种不同。使用DISTINCT保留字消除重复行。对查询结果排序和分组。集合分组使用集函数进行各项统计。 连接查询笛卡儿连接…

【QT入门】 Qt自定义控件与样式设计之QComboBox样式表介绍

往期回顾 【QT入门】 Qt自定义控件与样式设计之QLineEdit的qss使用-CSDN博客 【QT入门】Qt自定义控件与样式设计之QPushButton常用qss-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QPushButton实现鼠标悬浮按钮弹出对话框-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QComb…

LabVIEW和2D激光扫描的受电弓滑板磨耗精确测量

LabVIEW和2D激光扫描的受电弓滑板磨耗精确测量 在电气化铁路运输中&#xff0c;受电弓滑板的健康状况对于保障列车安全行驶至关重要。受电弓滑板作为连接电网与列车的直接介质&#xff0c;其磨损情况直接影响到电能的有效传输及列车的稳定运行。精确、快速测量受电弓滑板磨损情…

天池医疗AI大赛[第一季] Rank5解决方案

一、赛题说明 数据格式 本次大赛数据集包含数千份高危患者的低剂量肺部CT影像&#xff08;mhd格式&#xff09;数据&#xff0c;每个影像包含一系列胸腔的多个轴向切片。每个影像包含的切片数量会随着扫描机器、扫描层厚和患者的不同而有差异。原始图像为三维图像。这个三维图…

力扣经典150题(1)

文章目录 6.Z字形变换82.删除排序链表中的重复元素||61.旋转链表100.相同的树 6.Z字形变换 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时&#xff0c;排列如下&#xff1…

【讲解如何OpenCV入门】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

数据库之DQL操作(数据查询语言)

DQL英文全称是Data Query Language(数据查询语言)&#xff0c;数据查询语言&#xff0c;用来查询数据库中表的记录。查询关键字: SELECT。 本节介绍以下表为例&#xff1a; create table emp(id int comment 编号&#xff0c;workno varchar(10) comment 工号&#xff0c;nam…

基于SpringBoot+MyBatis-Plus的代码生成器

一、功能说明 数据源管理&#xff1a;实现多个数据库的表代码生成表管理&#xff1a;从数据源导入表&#xff0c;配置表和字段默认配置&#xff1a;配置项目默认信息&#xff0c;配置字段数据类型映射操作日志 功能截图 二、代码实现 基于velocity-engine模板代码生成 pack…