数组的操作

数组的操作也可以大概分为增删查改。
Arrays.toString**:**把数组内的内容输出。

获取长度

获得数组的元素数量。
格式:

数组名.length

注意,请不要写成 ** 数组名.length()**

存数据

如果使用了动态初始化或者我们需要新增些元素进入数组,该如何操作呢?
格式:

 数组名[索引] = 数据

注意一下我们新增元素的类型,也涉及到了索引超出(元素的个数超出了数组初始化的时候定义的长度)的问题。
我们甚至可以使用存数据来修改一下数组里的数据。
例子:

public class Demo02 {
    public static void main(String[] args) {

        int[] ages = new int[5];
        // 存放第一个学生的年龄
        ages[0] = 8;

        String[] names = {"张三", "李四"};
        // 张三有一个改了名字 张三三
        names[0]="张三三"
    }
}
public class Demo04 {
    public static void main(String[] args) {
        // 输入三个名字,放到数组中
        Scanner scanner = new Scanner(System.in);
        String[] strings = new String[3];

        System.out.println("输入第一个:");
        strings[0] = scanner.next();
        System.out.println("输入第二个:");
        strings[1] = scanner.next();
        System.out.println("输入第三个:");
        strings[2] = scanner.next();

        System.out.println(strings[0]);
        System.out.println(strings[1]);
        System.out.println(strings[2]);

    }
}
取数据

首先我们需要了解地址值这个名词,是指数组在内存中的唯一标识。
我们需要注意,取数据的几个点:

  • 直接打印数组变量是得不到值,得到是数组的地址值
  • 我们可以根据索引以及地址,找到其中的一项
  • 取没有赋值的数据
  • 取超出范围的数据

格式:

数组名[索引]

例子:

public class Demo06 {
    public static void main(String[] args) {
        // int[] arr = {1,2,3,4,5};
        // // System.out.println(Arrays.toString(arr));
        // // 输出的是数组的地址值
        // System.out.println(arr);
        // // 通过索引取内容:arr[0]
        // System.out.println(arr[0]);

        int[] arr1 = new int[5];
        System.out.println(arr1[0]); //  0

        double[] arr2 = new double[5];
        System.out.println(arr2[0]); // 0.0

        char[] arr3 = new char[5];
        System.out.println((int)arr3[0]); // 空白字符 对应的int是0

        boolean[] arr4 = new boolean[5];
        System.out.println(arr4[0]); // false

        String[] arr5 = new String[5];
        System.out.println(arr5[0]); // null


    }
}

这里有一个默认值问题:

  • 整数: 0
  • 小数: 0.0
  • 字符: ‘\u0000’ -> 空白字符 -> 对应的int值是0
  • 布尔: false
  • 引用: null
遍历数组

遍历数组很简单,就是按照顺序的访问每一项,一般用到三个命令:

  • fori(从头到尾)
  • foreach
  • forr(从尾到头)
public class Demo08 {
    public static void main(String[] args) {
        int[] ages = {1,2,3,4,2,5,7,3};

        // 顺序的打印
        System.out.println(Arrays.toString(ages));

        for (int item : ages) {
            System.out.println(item);
        }

        System.out.println("-----------");

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



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

        // 有啥问题,do...while会执行一次,所以可能出现索引超出的问题(数组的长度目前为0)
        // int[] ints = new int[0];
        // int j = 0;
        // do {
        //     System.out.println(ints[j]);
        //     j++;
        // } while (j < ages.length);
    }
}
操作过程可能的问题

作数组的时候,索引超出怎么办?

public class Demo07 {
    public static void main(String[] args) {
        // 一个长度为5的数组
        int[] ints = new int[5];
        ints[0] = 1;
        ints[1] = 1;
        ints[5] = 1;
    }
}

image.png
报错: ArrayIndexOutOfBoundsException
Array(数组) Index(索引) OutOf(超出) Bounds(边界) Exception(异常)

空指针异常

public class Demo07 {
    public static void main(String[] args) {
        // 一个长度为5的数组
        int[] ints = new int[5];
        ints[0] = 1;
        ints[1] = 1;
        ints[2] = 1;
        // NullPointerException
        ints = null;
        System.out.println(ints[0]);
    }
}

image.png
为什么?现在ints失去了地址的引用。

各位看官记得一键三连哦!!

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

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

相关文章

C++11 标准库头文件模拟实现

系列文章目录 文章目录 系列文章目录前言● 智能指针模板● Vector1. 简单版本2. X 总结 前言 暂不考虑支持多线程 常用STL的简单实现&#xff0c;主要内容百行左右完成&#xff0c;意在理解STL的原理 ● 智能指针模板 SharedPtr #include <assert.h> #include <ato…

c#使用自带库对字符串进行AES加密、解密

文章目录 1 代码1.1 定义Aes加密类块1.2 在主函数中调用 2 获取Key和IV2.1 基本方法2.2 自定义Key2.3 技术方面的原理 参考文章&#xff1a; C#软件加密实例&#xff1f; 。 参考官文&#xff1a; Aes 类。 在使用C#的自带的System.Security.Cryptography.Aes模块进行加密和解…

图的学习.

目录 一、图的基本概念 1.1图的种类 1.2顶点的度、入度和出度 1.3边的权和网 1.4路径、路径长度和回路 二、图的存储结构 2.1邻接矩阵法 2.2邻接表法 2.3十字链表 2.4邻接多重表 三、图的遍历 3.1广度优先搜索 3.2深度优先搜索 四、图的应用 4.1最小生成树 4.1.…

密码没有未来

无密码认证的好处 引领无密码未来之路万能钥匙 英国通过具体法律打击可预测密码 强密码是抵御网络威胁的第一道防线 如何破解价值百万美元的加密钱包密码 复制此链接到微信打开阅读全部以发布文章 新 GPU 在不到一小时内打开了网络上 59% 的密码。 现代计算机的能力不断增…

AGV机器人的调度开发分析(1)- 内核中的路线规划

准备开始写一个系列&#xff0c;介绍下AGV机器人的调度的开发和应用。 按照openTCS的核心内容&#xff0c;国内多家广泛应用于AGV的调度。那么架构图如下&#xff1a; Kernel中有一个是Routing&#xff0c;这是路由规划模块&#xff0c;需要实现的细节功能包括如下&#xff1a…

cesium 包络线

cesium 包络线 以下为源码直接复制可用 1、实现思路 通过turf.js中union方法来计算包络线官方地址:https://turfjs.fenxianglu.cn/ 闪烁线请查看cesium轨迹线(闪烁轨迹线) 2、示例代码 <!DOCTYPE html> <html lang="en"&g

Pwn刷题记录(不停更新)

1、CTFshow-pwn04&#xff08;基础canary&#xff09; ​ 好久没碰过pwn了&#xff0c;今天临时做一道吧&#xff0c;毕竟刚联合了WSL和VSCode&#xff0c;想着试着做一道题看看&#xff0c;结果随手一点&#xff0c;就是一个很少接触的&#xff0c;拿来刷刷&#xff1a; ​ …

计算机组成原理 —— 存储系统(DRAM和SRAM,ROM)

计算机组成原理 —— 存储系统&#xff08;DRAM和SRAM&#xff09; DRAM和SRAMDRAM的刷新DRAM地址复用ROM&#xff08;Read-Only Memory&#xff08;只读存储器&#xff09;&#xff09; 我们今天来看DRAM和SRAM&#xff1a; DRAM和SRAM DRAM&#xff08;动态随机存取存储器&…

springboot 酒庄内部管理系统(源码+sql+论文)

绪论 1.1 系统研究目的意义 随着信息技术的不断发展&#xff0c;我们现在已经步入了信息化的时代了&#xff0c;而信息时代的代表便是网络技术的日渐成熟&#xff0c;而现在网络已经和我们的生活紧密的联系起来了&#xff0c;我们不敢想象没有网络我们的生活会像怎么样&#…

六、资产安全—数据管理(CISSP)

目录 1.学习目标 2.数据管理最佳参考实践 3.数据质量维度:DAMA 4.数据生命周期控制 5.数据净化方式 6.生命周期安全控制 7.EOL、EOS、EOSL 1.学习目标 2.数据管理最佳参考实践 数据策略: 角色与责任: 数据所有权:

数据分析必备:一步步教你如何用matplotlib做数据可视化(10)

1、Matplotlib 二维箭头图 箭头图将速度矢量显示为箭头&#xff0c;其中分量(u&#xff0c;v)位于点(x&#xff0c;y)。 quiver(x,y,u,v)上述命令将矢量绘制为在x和y中每个对应元素对中指定的坐标处的箭头。 参数 下表列出了quiver()函数的参数 - x - 1D或2D阵列&#xff0c;…

C语言中的进制转换

基础概念 进制又称数制&#xff0c;是指用一组固定的符号和统一的规则来表示数值的方法&#xff0c;在C语言中&#xff0c;可以使用不同的前缀来表示不同的进制&#xff1a; 二进制&#xff1a;以0b或0B为前缀&#xff08;部分编译器可能不支持&#xff09;八进制&#xff1a…

Go日常分享 - error类型是指针类型吗?

背景 这个问题的产生来源于小泉在开发rpc接口时返回error遇到的问题&#xff0c;开发时想在defer里对err进行最终的统一处理赋值&#xff0c;发现外层接收一直都未生效。问题可以简化为成下面的小demo。 func returnError() error {var err errordefer func() {//err errors…

物联网系统运维——数据库部署

一.MySQL 1.概要 MySQL是一种关联数据库管理系统&#xff0c;关联数据:而不是将所有数据放在一个大仓库内&#xff0c;这样就增加了速度并提高了灵活性库将数据保存在不同的表中。性能高、成本低、可靠性好&#xff0c;已经成为最流行的开源数据库。 二.MySQL安装与配置 1. …

38.MessageToMessageCodec线程安全可被共享Handler

handler被注解@Sharable修饰的。 这样的handler,创建一个实例就够了。例如: ByteToMessageCodec的子类不能被@Sharable修饰 如果自定义类是MessageToMessageCodec的子类就是线程共享的,可以被@Sharable修饰的 package com.xkj.protocol;import com.xkj.message.Message; i…

浙大宁波理工学院2024年成人高等继续教育招生简章

浙大宁波理工学院&#xff0c;这所承载着深厚学术底蕴和卓越教育理念的学府&#xff0c;正热烈开启2024年成人高等继续教育的招生之门。这里&#xff0c;是知识的殿堂&#xff0c;是智慧的摇篮&#xff0c;更是您实现个人梦想、追求更高境界的起点。 ​浙大宁波理工学院始终坚…

[最全]设计模式实战(一)UML六大原则

UML类图 UML类图是学习设计模式的基础,学习设计模式,主要关注六种关系。即:继承、实现、组合、聚合、依赖和关联。 UML类图基本用法 继承关系用空心三角形+实线来表示。实现接口用空心三角形+虚线来表示。eg:大雁是最能飞的,它实现了飞翔接口。 关联关系用实线箭头来表示…

基础算法---滑动窗口

文章目录 什么是滑动窗口1.长度最小的子数组2.无重复字符的最长子串3.最大连续1的个数4.将x减到0的最小操作数5.最小覆盖子串总结 什么是滑动窗口 滑动窗口&#xff08;Sliding Window&#xff09;是一种在计算机科学中用于解决各种子数组或子字符串问题的技术。滑动窗口技术通…

在 Mac 上恢复已删除的文件夹

“嗨&#xff0c;我刚刚运行了重复文件查找器应用程序 Gemini 来扫描我的 Mac 以清除重复文件。它找到了很多重复的文件和文件夹&#xff0c;只需单击一下&#xff0c;它就可以帮助我删除重复的文件/文件夹。但我认为它可能会删除一些有用的重复文件。我打开垃圾箱&#xff0c;…

主数据驱动的数据治理:技术解析与实践探索

数字化转型行业小伙伴可以加入我的星球&#xff0c;初衷成为各位数字化转型参考库&#xff0c;星球内容每周更新 个人工作经验资料全部放在这里&#xff0c;包含数据治理、数据要素、数据质量、数据安全、元数据、主数据、企业架构、DCMM、DSMM、CDGA、CDGP等各种数据相关材料 …