小工具      在线工具  汉语词典  css  js  c++  java

笔记04-数组

Java基础,java,数组 额外说明

收录于:200天前

1.数组

1.1什么是数组【理解】

​数组是存储固定长度数据的容器。存储多个数据的数据类型必须一致。

1.2数组定义格式【记忆】

1.2.1第一种

​ 数据类型[]数组名

​示例:

int[] arr;        
double[] arr;      
char[] arr;
1.2.2第二种

​ 数据类型数组名[]

​示例:

int arr[];
double arr[];
char arr[];

1.3数组动态初始化【应用】

1.3.1什么是动态初始化

​ 数组的动态初始化是指只给出数组的长度,系统给出默认的初始化值。

1.3.2动态初始化格式
数据类型[] 数组名 = new 数据类型[数组长度];
int[] arr = new int[3];
1.3.3动态初始化格式详解
  • 等号左边:

    • int:数组的数据类型

    • []:表示这是一个数组

    • arr:代表数组的名称

  • 等号右边:

    • new:为数组开辟内存空间

    • int:数组的数据类型

    • []:表示这是一个数组

    • 5:表示数组的长度

1.4数组元素访问【应用】

1.4.1什么是索引

​数组中存储的每个元素都会自动有一个编号,从0开始。

​ 这个自动编号称为数组索引(index),通过数组索引可以访问数组中的元素。

1.4.2访问数组元素格式
数组名[索引];
1.4.3示例代码
public class ArrayDemo {
    
    public static void main(String[] args) {
    
        int[] arr = new int[3];

        //输出数组名
        System.out.println(arr); //[I@880ec60

        //输出数组中的元素
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

1.5内存分配【理解】

1.5.1内存概述

​ 内存是计算机中的重要组成部分,是临时存储区域,其作用是运行程序。

我们编写的程序都存储在硬盘中,硬盘上的程序不会运行。

​ 必须放到内存中才能运行。操作完成后,内存将被清除。

为了运行程序,Java虚拟机必须分配和管理内存空间。

1.5.2java中的内存分配
  • 目前我们只需要记住两种内存:栈内存和堆内存。
地区名称 影响
登记 它是CPU使用的,与我们开发无关。
本地方法栈 JVM是在使用操作系统功能时使用的,与我们的开发无关。
方法区 存放可以运行的类文件。
堆内存 用new创建的存储对象或数组存储在堆内存中。
方法栈 方法运行时使用的内存,例如main方法运行时,进入方法栈执行。

1.6单个数组的内存图【理解】

在这里插入图片描述

1.7多个数组的内存图【理解】

在这里插入图片描述

1.8多个数组指向相同内存图【理解】

在这里插入图片描述

1.9数组静态初始化【应用】

1.9.1什么是静态初始化

创建数组时,直接确定元素

1.9.2静态初始化格式
  • 完整版格式

    数据类型[] 数组名 = new 数据类型[]{
          元素1,元素2,...};
    
  • 简化版本格式

    数据类型[] 数组名 = {
          元素1,元素2,...};
    
1.9.3示例代码
public class ArrayDemo {
    
    public static void main(String[] args) {
    
        //定义数组
        int[] arr = {
    1, 2, 3};

        //输出数组名
        System.out.println(arr);

        //输出数组中的元素
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

1.10数组操作的两个常见小问题【应用】

1.10.1索引越界异常
  • 发生原因

    public class ArrayDemo {
          
        public static void main(String[] args) {
          
            int[] arr = new int[3];
            System.out.println(arr[3]);
        }
    }
    

    数组长度为3,索引范围为0~2,但我们访问的索引为3。

    程序运行后,会抛出ArrayIndexOutOfBoundsException数组越界异常。开发中不会出现数组越界异常。一旦发生,我们编写的代码就必须修改。

  • 解决方案

    只需将错误的索引修改为正确的索引范围即可!

1.10.2空指针异常
  • 发生原因

    public class ArrayDemo {
          
        public static void main(String[] args) {
          
            int[] arr = new int[3];
    
            //把null赋值给数组
            arr = null;
            System.out.println(arr[0]);
        }
    }
    

    arr = null 这行代码意味着变量arr不会保存数组的内存地址,并且不再允许对数组进行操作,因此运行时会抛出NullPointerException。开发中不会出现数组越界异常。一旦发生,我们编写的代码就必须修改。

  • 解决方案

    只要给数组一个真正的堆内存空间引用就可以了!

1.11数组遍历【应用】

  • 数组遍历:就是分别获取数组中的每个元素,这就是遍历。遍历也是数组操作的基石。

    public class ArrayTest01 {
          
    	public static void main(String[] args) {
          
    		int[] arr = {
           1, 2, 3, 4, 5 };
    		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 到 lenght-1,并且可以作为循环条件出现。

    public class ArrayTest01 {
          
        public static void main(String[] args) {
          
            //定义数组
            int[] arr = {
          11, 22, 33, 44, 55};
    
            //使用通用的遍历格式
            for(int x=0; x<arr.length; x++) {
          
                System.out.println(arr[x]);
            }
        }
    }
    

1.12数组最值【应用】

  • 最大值获取:从数组的所有元素中查找最大值。

  • 实现思路:

    • 定义一个变量来保存数组索引0处的元素
    • 遍历数组并获取数组中的每个元素
    • 将遍历的元素与保存数组索引 0 处的值的变量进行比较
    • 如果数组元素的值大于变量的值,则变量记录新值
    • 数组循环遍历结束,变量存储数组中的最大值。
  • 代码:

    public class ArrayTest02 {
          
        public static void main(String[] args) {
          
            //定义数组
            int[] arr = {
          12, 45, 98, 73, 60};
    
            //定义一个变量,用于保存最大值
            //取数组中第一个数据作为变量的初始值
            int max = arr[0];
    
            //与数组中剩余的数据逐个比对,每次比对将最大值保存到变量中
            for(int x=1; x<arr.length; x++) {
          
                if(arr[x] > max) {
          
                    max = arr[x];
                }
            }
    
            //循环结束后打印变量的值
            System.out.println("max:" + max);
    
        }
    }
    
. . .

相关推荐

额外说明

记录http请求暂停、TCP ZeroWindow、连接未断开、setReadTimeout超时不抛异常等解析过程。

背景:本地有一台windows7系统的台式机,每天定时向服务器上传文件,后台是个http接口(为什么不用ftp呢,因为这个接口原来是一个html页面用form表单来实现的文件上传,改成ftp就需要改后台处理逻辑)。 问题:由于上传文件很大,最大有20MB

额外说明

微信小程序——浅谈微信授权登录

一、开发前的准备 现在的小程序要求很严,否则无法通过正常的审核和发布流程。 今天特意做了微信授权登录。 做流程开发前,需要先阅读微信小程序开发文档。 正常流程,只需要关注前面的授权操作流程即可。 二、接口解释 由于公司要求使用 手机账号+密码的方式实现登

额外说明

模型模拟使用

打开modulesim,关闭命令是quit -sim;第一步以窗口的方式建立工程,后面使用脚本的方式建立工程。 1.1 打开modulesim后手动鼠标右键add to project->Existing-File,添加设计文件和激励文件(tb), 1.

额外说明

从 Microsoft 网站下载官方 Windows 10 ISO 映像

https://www.microsoft.com/zh-cn/software-download/windows10 下载完成 双击“MediaCreationTool1909.exe” 可以选择不同版本、体系结构 修改要保存的文件名,如“Window

额外说明

朋友入职字节跳动,测开岗,分享面试经验,大厂版测试笔记分享

就在前几天,一个学妹入职了字节跳动,测开岗,还特意给我发来了信息表示感谢,因为我之前给了他蛮多帮助。 大家都知道,字节跳动的面试还是挺难的,毕竟字节在国内的互联网已经属于头部,所以我还是非常替我的这位学弟感到骄傲。私下里,我们也聊了很多,所以借这个机会,

额外说明

leetcode(3)——697. 数组的度(C++版本注释)(map容器),448. 找到所有数组中消失的数字(取余操作,C++中的auto类型)

文章目录 前言 697 程序 思路 收获 map容器 448 程序 收获 取模操作的思考 auto 前言 大佬的程序,边刷边总结边学语言。 题目697 697 程序 class Solution { public: int findShorte

额外说明

在Android Studio 2021.2.1里查看安卓应用资源标识类R$id

文章目录 一、显示当前Android Studio版本 二、布局文件里控件定义的标识 三、在代码里通过资源标识获取控件实例 四、寻找安卓应用资源标识文本文件R.txt (一)切换到Project视图 (二)点开build/intermediates/ru

额外说明

nhibernate初步掌握连载: one-to-one映射

  nh中的one-to-one(一对一)映射有两种情况, 一种是主键(PrimaryKey)关联, 一种是外健(ForeignKey)关联. 在主键关联的情况下, 显然必须有一个主键是根据别一个主键而来的, nh通过一个特殊的方式来处理这种情况, 要注

额外说明

【Go】defer与panic的执行规则

总结: 如果没有recover(), panic打印错误信息之前会,执行已经注册的defer,执行顺序是跟注册顺序相反,直到main函数的defer执行完之后,才会打印错误信息。 如果有recover(),并且注册recover()的defer在pani

额外说明

Greenplum【部署 06】GPSS扩展(Greenplum Streaming Server)安装启用配置启动(不断更新ing)

GPSS 官网 下载地址 说明文档地址 。云盘链接: 链接:https://pan.baidu.com/s/1MO-qL0Pxe6PojfZKsw3_qA 提取码:o7fl 包含文件: Greenplum Stream Server (GPSS)是一

ads via 小工具