Java基础教程(004):数组动态初始化、数组常见问题、数组练习

5.5 数组动态初始化

动态初始化:初始化时只是指定数组的长度,游系统为数组分配初始值。

格式:数据类型[] 数组名 = new 数据类型[数组长度]

范例:int[] arr = new int[3];

代码:

public class ArrayDemo4 {
    public static void main(String[] args) {
        // 定义一个数组,用来存储班级中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

数组动态初始化和静态初始化的区别:

  • 动态初始化:手动指定数组长度,由系统给出初始默认值。
    • 只明确元素个数,不明确具体的数值,推荐使用动态初始化
    • 举例:使用数组容器来存储键盘录入的5个整数。
  • 静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组长度。
    • 需求中已经明确了要操作的具体数据,直接静态初始化即可。

5.6 数组常见问题

当访问了数组中不存在的索引,就会引发索引越界异常

代码测试:

public class ArrayDemo5 {
    public static void main(String[] args) {
        // 定义一个数组
        int[] arr = {1, 2, 3, 4, 5};
        // 长度5
        // 最小索引0
        // 最大索引4(数组长度-1)
        System.out.println(arr[5]);
    }
}

报错异常:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
	at ArrayDemo.ArrayDemo5.main(ArrayDemo5.java:14)

ArrayIndexOutOfBoundsException:数组索引超出范围异常。

5.7 数组练习

数组练习一:求最值

需求:

已知数组元素为{33, 5, 22, 44, 55}

请找出数组中最大值并打印在控制台。

思路:

  1. 定义max变量准备记录最大值的变化。
    1. int max = arr[0];
  2. 遍历数组获取每一个元素。
  3. 让每一个元素和max进行比较,如果找到最大的,就让max记录该元素。

完整代码:

public class ArrayExercise1 {
    public static void main(String[] args) {
        // 定义数组
        int[] arr = {33, 5, 22, 44, 55};
        // 定义一个变量max用来存储最大值,默认数组第一个元素是最大的
        int max = arr[0];
        // 循环获取数组的每一个元素
        for (int j : arr) {
            if (j > max) {
                max = j;
            }
        }
        System.out.println(max);
    }
}

数组练习二:求和

需求:

生成10个1~100之间的随机数存入数组。

  1. 求出所有数据的和。
  2. 求出所有数据的平均数。
  3. 统计有多少个数据比平均值小。

完整代码:

public class ArrayExercise2 {
    public static void main(String[] args) {
        // 定义数组:动态初始化
        int[] arr = new int[10];
        // 把随机数存入数组中
        Random rand = new Random();
        for (int i = 0; i < arr.length; i++) {
            int number = rand.nextInt(100) + 1;
            arr[i] = number;
        }
        // 遍历数组
        for (int j : arr) {
            System.out.print(j + " ");
        }
        // 求出所有数据的和
        // 定义求和变量
        int sum = 0;
        for (int j : arr) {
            sum += j;
        }
        System.out.println("数组中所有数据的和为:" + sum);

        // 求所有数据的平均数
        int average = sum / arr.length;
        System.out.println("数组中的平均数为:"+ average);

        // 统计有多少个数据比平均数小
        int count = 0;
        for (int j : arr) {
            if (j < average) {
                count++;
            }
        }
        System.out.println("数组中比平均数小的数据有:"+ count + "个");
    }
}

数组练习三:交换数组中的数据

需求:

定义一个数组,存入1,2,3,4,5。按照要求交换索引对应的元素。

交换前:1,2,3,4,5

交换后:5,4,3,2,1

逐步分析:

①:如何交换两个变量的值:关键是定义第三个临时变量,用来记录a的值。

public class ArrayExercise3 {
    public static void main(String[] args) {
        /* 需求:定义两个变量,交换两个变量记录的值 */
        int a = 10;
        int b = 20;
        int temp = a;
        a = b;
        b = temp;
        System.out.println(a);
        System.out.println(b);
    }
}

完整代码:

public class ArrayExercise3 {
    public static void main(String[] args) {
        // 定义一个数组,存储数据
        int[] arr = {1, 2, 3, 4, 5};
        // 利用循环去交换数据
        for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        for (int j : arr) {
            System.out.print(j + " ");
        }
    }
}

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

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

相关文章

预编译SQL

预编译SQL 预编译SQL是指在数据库应用程序中&#xff0c;SQL语句在执行之前已经通过某种机制&#xff08;如预编译器&#xff09;进行了解析、优化和准备&#xff0c;使得实际执行时可以直接使用优化后的执行计划&#xff0c;而不需要每次都重新解析和编译。这么说可能有一些抽…

qemu搭建虚拟的aarch64环境开发ebpf

一、背景 需求在嵌入式环境下进行交叉编译&#xff0c;学习ebpf相关技术&#xff0c;所以想搭建一个不依赖硬件环境的学习环境。 本文使用的环境版本&#xff1a; 宿主机&#xff1a; Ubuntu24.02 libbpf-bootstrap源码&#xff1a; https://github.com/libbpf/libbpf-boots…

深度学习从入门到实战——卷积神经网络原理解析及其应用

卷积神经网络CNN 卷积神经网络前言卷积神经网络卷积的填充方式卷积原理展示卷积计算量公式卷积核输出的大小计算感受野池化自适应均值化空洞卷积经典卷积神经网络参考 卷积神经网络 前言 为什么要使用卷积神经网络呢&#xff1f; 首先传统的MLP的有什么问题呢&#xff1f; - …

2015年西部数学奥林匹克几何试题

2015/G1 圆 ω 1 \omega_1 ω1​ 与圆 ω 2 \omega_2 ω2​ 内切于点 T T T. M M M, N N N 是圆 ω 1 \omega_1 ω1​ 上不同于 T T T 的不同两点. 圆 ω 2 \omega_2 ω2​ 的两条弦 A B AB AB, C D CD CD 分别过 M M M, N N N. 证明: 若线段 A C AC AC, B D BD …

《Spring Framework实战》14:4.1.4.5.自动装配合作者

欢迎观看《Spring Framework实战》视频教程 自动装配合作者 Spring容器可以自动连接协作bean之间的关系。您可以通过检查ApplicationContext的内容&#xff0c;让Spring自动为您的bean解析协作者&#xff08;其他bean&#xff09;。自动装配具有以下优点&#xff1a; 自动装配…

JVM之垃圾回收器概述(续)的详细解析

ParNew(并行) Par 是 Parallel 并行的缩写&#xff0c;New 是只能处理的是新生代 并行垃圾收集器在串行垃圾收集器的基础之上做了改进&#xff0c;采用复制算法&#xff0c;将单线程改为了多线程进行垃圾回收&#xff0c;可以缩短垃圾回收的时间 对于其他的行为&#xff08;…

有一台服务器可以做哪些很酷的事情

有一台服务器可以做哪些很酷的事情 今天我也来简单分享一下&#xff0c;这几年来&#xff0c;我用云服务器做了哪些有趣的事情。 服务器推荐 1. 个人博客 拥有个人服务器&#xff0c;你可以完全掌控自己的网站或博客。 与使用第三方托管平台相比&#xff0c;你能自由选择网站…

灌区闸门自动化控制系统-精准渠道量测水-灌区现代化建设

项目背景 本项目聚焦于黑龙江某一灌区的现代化改造工程&#xff0c;该灌区覆盖广阔&#xff0c;灌溉面积高达7.5万亩&#xff0c;地域上跨越6个乡镇及涵盖17个村庄。项目核心在于通过全面的信息化建设&#xff0c;强力推动节水灌溉措施的实施&#xff0c;旨在显著提升农业用水的…

3.flask蓝图使用

构建一个目录结构 user_oper.py from flask import Blueprint, request, session, redirect, render_template import functools # 创建蓝图 user Blueprint(xkj, __name__)DATA_DICT {1: {"name": "张三", "age": 22, "gender": …

vue3学习日记1 - Pinia

最近发现职场前端用的框架大多为vue&#xff0c;所以最近也跟着黑马程序员vue3的课程进行学习&#xff0c;以下是我的学习记录 视频网址&#xff1a; Day2-02.Pinia-counter基础使用_哔哩哔哩_bilibili 学习日记&#xff1a; vue3学习日记1 - 环境搭建-CSDN博客 vue3学习日…

IP 地址与蜜罐技术

基于IP的地址的蜜罐技术是一种主动防御策略&#xff0c;它能够通过在网络上布置的一些看似正常没问题的IP地址来吸引恶意者的注意&#xff0c;将恶意者引导到预先布置好的伪装的目标之中。 如何实现蜜罐技术 当恶意攻击者在网络中四处扫描&#xff0c;寻找可入侵的目标时&…

Leetocde516. 最长回文子序列 动态规划

原题链接&#xff1a;Leetocde516. 最长回文子序列 class Solution { public:int longestPalindromeSubseq(string s) {int n s.size();vector<vector<int>> dp(n, vector<int>(n, 1));for (int i 0; i < n; i) {dp[i][i] 1;if (i 1 < n &&…

Linux物理地址到虚拟地址的映射

相关理论&#xff1a; Linux中用户空间是无法直操作寄存器的&#xff0c;需要先将寄存器对应的物理地址通过转换成虚拟地址然后在进行操作。 高性能处理器一般会提供一个内存管理单元&#xff08;MMU&#xff09;,该单元辅助操作系统进行内存管理&#xff0c;提供虚拟地址和物理…

openCvSharp 计算机视觉图片找茬

一、安装包 <PackageReference Include"OpenCvSharp4" Version"4.10.0.20241108" /> <PackageReference Include"OpenCvSharp4.runtime.win" Version"4.10.0.20241108" /> 二、准备两张图片 三、编写代码 using OpenCv…

数字孪生助力智慧机场全方位管理

智慧机场利用图扑可视化技术&#xff0c;实现航班动态、乘客流量和行李追踪的实时监控与分析&#xff0c;优化资源配置&#xff0c;提高运营效率&#xff0c;为旅客提供更加便捷的出行体验。

景联文科技提供高质量多模态数据处理服务,驱动AI新时代

在当今快速发展的AI时代&#xff0c;多模态数据标注成为推动人工智能技术进步的关键环节。景联文科技作为行业领先的AI数据服务提供商&#xff0c;专注于为客户提供高质量、高精度的多模态数据标注服务&#xff0c;涵盖图像、语音、文本、视频及3D点云等多种类型的数据。通过专…

【Docker】入门教程

目录 一、Docker的安装 二、Docker的命令 Docker命令实验 1.下载镜像 2.启动容器 3.修改页面 4.保存镜像 5.分享社区 三、Docker存储 1.目录挂载 2.卷映射 四、Docker网络 1.容器间相互访问 2.Redis主从同步集群 3.启动MySQL 五、Docker Compose 1.命令式安装 …

vscode使用Marscode编程助手

下载 vscode 在插件里下载Marscode编程助手 插件完成 在这里点击安装&#xff0c;点击后这里出现AI编程插件。

使用网页版Jupyter Notebook和VScode打开.ipynb文件

目录 正文 1、网页版Jupyter Notebook查看 2、VScode查看 因为总是忘记查看文件的网址&#xff0c;收藏了但分类众多每次都找不到……当个记录吧&#xff08;/捂脸哭&#xff09;&#xff01; 正文 此处以gitub中的某个仓库为例&#xff1a; https://github.com/INM-6/mu…

腾讯云AI代码助手编程挑战赛-知识百科AI

作品简介 知识百科AI这一编程主要用于对于小朋友的探索力的开发&#xff0c;让小朋友在一开始就对学习具有探索精神。在信息化时代下&#xff0c;会主动去学习自己认知以外的知识&#xff0c;同时丰富了眼界&#xff0c;开拓了新的知识。同时催生了在大数据时代下的信息共享化…