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

news2024/11/26 13:33:49

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

一、数组的定义

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

二、语法(格式)

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

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

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

数组名 = 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();
    }

}

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

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

相关文章

第八讲 Sort Aggregate 算法

我们现在将讨论如何使用迄今为止讨论过的 DBMS 组件来执行查询。 1 查询计划【Query Plan】 我们首先来看当一个查询【Query】被解析【Parsed】后会发生什么&#xff1f; 当 SQL 查询被提供给数据库执行引擎&#xff0c;它将通过语法解析器进行检查&#xff0c;然后它会被转换…

新增长100人研讨会:20+上海医疗企业共探数字驱动下的目标管理与业绩增长策略

近日&#xff0c;纷享销客新增长100人系列活动之上海医疗专场&#xff0c;我们有幸邀请百趣生物一起&#xff0c;共同探讨医疗器械行业数字化增长的新理念、新方法和新实践。 活动聚集了百趣生物、汉维生物、松佰牙科器械、多宁生物、松佰医疗、瑞丰达医疗等20余位标杆医疗健康…

蓝桥杯简单模板

目录 最大公约数 两个数的最大公约数 多个数的最大公约数 最小公倍数 两个数的最小公倍数 多个数的最小公倍数 素数 ​编辑 位数分离 正写 ​编辑 反写 闰年 最大公约数 两个数的最大公约数 之前看见的是辗转相除法&#xff0c;例如现在让算一个49&#xff0c;21…

数码相框-LCD显示多行文字

显示几行文字: 从左显示&#xff1a;先描边再算出边框。居中显示&#xff1a;先算出边框&#xff0c;再确定坐标描画。 从左显示 第一行数据的起始位置是从(0,24)开始的。 要知道第二行数据从哪里开始&#xff0c;我们得知道画出来的矢量字体的边框是多少&#xff1a; 这个…

【C++】 详解 lower_bound 和 upper_bound 函数(看不懂来捶我!!!)

目录 一、前言 二、函数详解 &#x1f95d; lower_bound &#x1f34d;upper_bound 三、常考面试题 四、共勉 一、前言 这两个函数是我在 LeetCode 上做题见到&#xff0c;看到不熟悉的函数 lower_bound 和 upper_bound让我感觉很难受&#xff0c;于是在 C 官网去学习&…

2024HW --->反序列化漏洞!

对于反序列化&#xff0c;这个漏洞也是常用的&#xff0c;不过涉及到的方面非常非常广&#xff0c;比其他漏洞也难很多 于是本篇文章就分成PHP和JAVA的反序列化来讲讲 1.反序列化 想要理解反序列化&#xff0c;首先就要理解序列化 序列化&#xff1a;把对象转换为字节序列的过…

默克尔(Merkle)树 - 原理及用途

默克尔&#xff08;Merkle&#xff09;树的原理以及用途 引言 在当今数字化时代&#xff0c;确保数据的完整性是至关重要的。默克尔树作为一种高效的数据结构&#xff0c;被广泛应用于网络安全、分布式系统以及加密货币等领域&#xff0c;用于验证大量数据的完整性和一致性 数…

代码随想录算法训练营Day48|LC198 打家劫舍LC213 打家劫舍IILC337 打家劫舍III

一句话总结&#xff1a;前两题白给&#xff0c;第三题树形DP有点难。 原题链接&#xff1a;198 打家劫舍 滚动数组直接秒了。 class Solution {public int rob(int[] nums) {int n nums.length;int first 0, second nums[0];for (int i 2; i < n; i) {int tmp Math.m…

mega2560读取sick位移传感器

本次的项目中&#xff0c;需要使用到mega2560来读取sick位移传感器的模拟量&#xff0c;再把模拟量进行转换&#xff0c;从而使得到的数据为位移传感器的示数。 下面是位移传感器的接线图&#xff1a;棕色线接&#xff0b;24v&#xff0c;蓝色线接0v&#xff0c;白色线为模拟量…

JS 表单验证

点击注册的时候&#xff0c;渲染出来&#xff0c;验证码是自动获取出来的 html&#xff1a; <div class"div1">用户名<input type"text" id"yhm"><span id"span1"></span><br>密码<input type"…

mysql 查询变量@i:=@i+1

学习完mysql的查询&#xff1a;基本查询&#xff0c;连接查询和子查询和mysql 正则表达式查询&#xff0c;接下来先学习下变量查询。 mysql中没有oracle序列号那一列。mysql可以使用查询变量的方式去处理。我们先了解下查询变量&#xff0c;后面应用起来就更清晰。 1&#xff0…

【科东软件】鸿道Intewell-Lin_V2.2.0 软件版本发布

鸿道操作系统 Intewell-Lin_V2.2.0 软件版本发布 Intewell-Lin_V2.2.0 版本号&#xff1a;V2.2.0 版本或修改说明 增加功能&#xff1a; 1、增加T3板级支持 支持硬件列表

深入探索实时音视频技术:RTC程序设计权威指南

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

2024年32款数据分析工具分五大类总览

数据分析工具在现代商业和科学中扮演着不可或缺的角色&#xff0c;为组织和个人提供了深入洞察和明智决策的能力。这些工具不仅能够处理大规模的数据集&#xff0c;还能通过强大的分析和可视化功能揭示隐藏在数据背后的模式和趋势。数据分析工具软件主要可以划分为以下五个类别…

网络与通信-路由协议及基础配置

网络协议之路由协议 静态路由&#xff1a; 明细静态 默认静态 动态路由&#xff1a;&#xff08;可以自动去环&#xff09; RIP 十几台或几十台 &#xff08;维护上一代人搭建的网络&#xff09; OSPF 300台 &#xff08;最短路径算法&#xff09; ISIS 1200台 BGP…

深度学习500问——Chapter06: 循环神经网络(RNN)(2)

文章目录 6.4 CNN和RNN的区别 6.5 RNNs与FNNs有什么区别 6.6 RNNs训练和传统ANN训练异同点 6.7 为什么RNN训练的时候Loss波动很大 6.8 标准RNN前向输出流程 6.9 BPTT算法推导 6.9 RNN中为什么会出现梯度消失 6.10 如何解决RNN中的梯度消失问题 6.4 CNN和RNN的区别 类别特点描述…

主流三种驱动器方案特点简介

三种执行器原理相似&#xff0c;但在结构和部件上略有区别&#xff0c;因此在精度、响应速度等指标上 呈现不同效果&#xff1a; &#xff08;1&#xff09;TSA&#xff08;刚性驱动器&#xff09;&#xff1a;常规高速电机高传动比减速机高刚度力矩传感器&#xff0c;减 速机…

【Spring Cloud】服务容错中间件Sentinel入门

文章目录 什么是 SentinelSentinel 具有以下特征&#xff1a;Sentinel分为两个部分: 安装 Sentinel 控制台下载jar包&#xff0c;解压到文件夹启动控制台访问了解控制台的使用原理 微服务集成 Sentinel添加依赖增加配置测试用例编写启动程序 实现接口限流总结 欢迎来到阿Q社区 …

【QingHub】QingHub Studio企业级应用开发管理

QingHub Studio企业级应用开发设计器是QingHub Studio的一个核心模块&#xff0c;它可以实现应用搭建、团队管理&#xff0c;共享开发&#xff0c;可以快速接入API接口&#xff0c;复杂功能可以通过自定义脚本快速实现业务逻辑。打通前端开发与后台业务逻辑一体化。通过可视化的…

Vue - 2( 10000 字 Vue 入门级教程)

一&#xff1a;初识 Vue 1.1 绑定样式 1.1.1 绑定 class 样式 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>绑定样式</title><style>......</style><script type"text/javascript"…