【JAVA-模块五 数组】

news/2024/4/20 22:23:32/文章来源:https://blog.csdn.net/weixin_73833411/article/details/130352651

JAVA-模块五 数组

  • 一、数组(一维)
    • 1.1数组是什么?
    • 1.2java中数组静态初始化:(存)
      • 两种定义格式:
      • 数组初始化格式:
      • 静态初始化后,打印数组名:
    • 1.3 数组元素访问(取):
      • 静态数组访问格式:
      • 数组遍历,数组长度速算:数组名.length
    • 1.4数组的动态初始化:
    • 1.5数组内存图:
      • 两个数组指向相同的内存图:
      • 方法的传参传递问题(传值和传址):
        • 1 参数是基本数据类型:传递的是数据值
        • 2 参数是引用数据类型:传递的是地址值
    • 1.6 数组常见问题:
  • 二、二维数组:
    • 2.1二维数组的静态初始化:
    • 2.2二维数组的访问:
    • 2.3 二维数组遍历:
    • 2.4 二维数组动态初始化:
    • 2.5 二维数组内存图:
  • 三 、其他:

一、数组(一维)

1.1数组是什么?

数组是一种容器,用于存放同种数据类型的多个值

1.2java中数组静态初始化:(存)

初始化概念:在内存中为数组开辟空间,并且存放的过程

静态初始化:怎么体现出静态,

两种定义格式:

格式1:
在这里插入图片描述

格式2:(更推荐,跟C语言更接近)
在这里插入图片描述

这两种定义格式,只是定义了数组类型的变量,内存中并没有创建数组容器。

数组初始化格式:

完整格式:

数据类型[ ] 数组名 =new数据类型[ ]{ 元素1,元素2,元素3,…}

简化格式(实际使用):

数据类型[ ] 数组名 ={ 元素1,元素2,元素3,…}(省略了new和数据类型)

静态初始化后,打印数组名:

[I@4eec7777
[I@3b07d329

[ ---->表示当前空间是数组类型

@ ----->表示分隔符,没有实际意义

I ------>表示当前数组类型是int类型

后面的一串数字是16进制数,是数组的地址

1.3 数组元素访问(取):

静态数组访问格式:

数组名[索引],索引就是下标(从0开始)

数组遍历,数组长度速算:数组名.length

概念:将所有元素都取出,但是当数组比较长的时候,计数过于鸡肋

选择使用length动态获取数组的长度(元素的个数)

格式为 :数组名.length,返回值为数组长度

1.4数组的动态初始化:

动态初始化概念:指定数组的长度后,系统会自动为数组分配默认值(数组初始化),来存储相应的默认数据

格式:在这里插入图片描述
动态初始化默认值分类:

  • 整形类型(,short,int,long) :0

  • 小数类型(float,double):0.0

  • 布尔类型:false

  • 字符型:‘\u0000’---->U ni code字符,也是一种字符,常见的体现是空白体现

  • 引用数据类型:null

java中的引用数据:数组,类,接口

String:本质是一个类,因此字符串本质是类


动态初始化:手动指定数组的长度,系统给出默认初始化值(初始化了元素的个数)

静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组长度(初始化了具体的元素)

使用范围:
使用数组的动态初始化:只明确了元素个数,不清楚具体的数值
使用数组的静态初始化:需求给出明确要存储的数据—>静态初始化

1.5数组内存图:

java中的内存分配:

(1)栈(方法运行进入的内存)

(2)堆(new出来的就会在堆内存中开辟空间并产生地址,有new进堆)

(3)方法区(字节码文件会加载至方法区)

示例:

在这里插入图片描述
在这里插入图片描述
整个数组的地址赋给arr进行存储:
在这里插入图片描述

arr[0]=44:通过arr数组名在堆内存中找到这个数组,再根据索引值找到0号元素

两个数组指向相同的内存图:

数组名记录的是数组的地址:

通过赋值后,两打印结果一样(array1和array2指向的是同一个数组)
在这里插入图片描述

方法的传参传递问题(传值和传址):

java到底是值传递还是址传递?

1 参数是基本数据类型:传递的是数据值

2 参数是引用数据类型:传递的是地址值

在这里插入图片描述

方法调用之后,打印输出的值仍然是100(类比传值调用)

要想对数number进行修改,调用修改后需要有返回值:(传值调用要想对变量的值进行修改)
在这里插入图片描述

栈区执行过程:
在这里插入图片描述

传递的数组名存储的是数组的地址调用(传址调用):
在这里插入图片描述

第二次打印的值为66

栈区和堆区的执行过程:
在这里插入图片描述

1.6 数组常见问题:

问题1 数组的越界异常:越界访问数组

问题2 空指针异常:
在这里插入图片描述

当引用数据类型的变量被赋值为null(空)之后,表示和堆内存的连接被切断,这时候再访问堆内数据,空发生空指针异常。(被赋予null后找不到堆内存中的数据)

二、二维数组:

二维数组介绍:

二维数组也是一种容器,用于存储一维数组(容器的嵌套)

使用范围:操作数为多组

2.1二维数组的静态初始化:

完整格式:
在这里插入图片描述

简化格式:等号右边省略new 数据类型[ ] [ ]
在这里插入图片描述

public class ArrayDemo1 {public static void main(String[] args) {int[][] arr={{11,22,33},{44,55,66},{77,88,99},};System.out.println(arr);}
}

打印数组名的结果是一串地址:
在这里插入图片描述

两个[ [表示是二维数组

对二维数组进行打印:
在这里插入图片描述

二维数组存储一维数组时,存储的是一维数组的地址值

2.2二维数组的访问:

访问格式:

数组名[ m ] [ n ];

m索引指定访问一维数组的序号,n指定访问的一维数组中元素的序号
在这里插入图片描述

2.3 二维数组遍历:

arr[i表示的每一个一维数组(的地址)

可以将二维数组中存储的一维数组的地址存放在一个对应类型的一维数组中

整理思路:

步骤1 遍历二维数组,获取每一个一维数组

步骤2 继续遍历一维数组,获取具体的元素

public static void printArray(int[][] arr){for (int i = 0; i < arr.length; i++) {//arr[i]表示每一个一位数组int[] temp=arr[i];//抽出二维数组中的某个一维数组for (int j = 0; j < temp.length; j++) {System.out.println(temp[j]);}}
}

精进后->

public static void printArray(int[][] arr){for (int i = 0; i < arr.length; i++) {//arr[i]表示每一个一位数组int[] temp=arr[i];//抽出二维数组中的某个一维数组for (int j = 0; j < arr[i].length; j++) {System.out.println(arr[i][j]);}}
}

2.4 二维数组动态初始化:

格式:指定分配内存空间的大小,先不存数
在这里插入图片描述

也会有默认值(和一维数组动态初始化的默认值类型一样)

可以将提前初始化好的一维数组存放到二维数组中:

public static void main(String[] args) {int[] arr1={11,22,33};int[] arr2={44,55,66};int[][] arr=new int[2][3];arr[0]=arr1;//将arr1存放到二维数组中的0号索引位置arr[1]=arr2;//将arr2存放到二维数组中的1号索引位置for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {System.out.println(arr[i][j]);}}
}

2.5 二维数组内存图:

在这里插入图片描述
进行了地址的替换

栈中:
在这里插入图片描述
堆中:
在这里插入图片描述

三 、其他:

1 批量修改变量名:选中后,shift+F6

2 将主函数中部分内容独立为方法(抽调方法):选中后ctrl+Alt+m
3 IDEA 数组遍历的快捷键:-------->数组名.fori

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

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

相关文章

javaweb学生在线考试系统dzkf10程序

打分&#xff09;、系统管理&#xff08;数据备份&#xff09;等功能操作。 以学生的身份在登录页面输入账号和密码&#xff0c;经过数据库身份验证&#xff0c;验证成功后登录系统主页&#xff0c;可以使用个人资料管理、试卷查看、在线考试、在线答疑、个人考试成绩查询等功能…

Oracle的学习心得和知识总结(二十三)|Oracle数据库Real Application Testing之Database Replay相关视图

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

LVS负载均衡-DR

1.DR模式中每台主机都有一个VIP地址 虚拟网址放在lo网卡上&#xff08;回环网卡&#xff09; arp_ignore1 Arp_announce2 系统不使用IP包的源地址来设置ARP请求的源地址&#xff0c;而选择发送接口的IP地址 2.内核参数修改 3.vim /etc/rc.conf 开机自启动 Chmod x /etc/rc.d…

【翻译一下官方文档】之uniapp的导航条设置

目录 uni.setNavigationBarTitle(OBJECT) uni.setNavigationBarColor(OBJECT) uni.hideHomeButton(OBJECT) uni.setNavigationBarTitle(OBJECT) 动态设置当前页面的标题。 OBJECT参数说明 参数类型必填说明titleString是页面标题successFunction否接口调用成功的回调函数fai…

卷积神经网络总结

1、卷积核 进行互相关运算。 卷积核的大小一般是奇数。 卷积核的本质类似于提取局部特征&#xff08;过滤器&#xff09;&#xff0c;当层层卷积核叠加后&#xff0c;卷积核的感受野变大&#xff0c;卷积核的作用逐渐向提取全局抽象特征靠近。最后一层的神经元应该对整个输入…

SpringBoot中@EnableAsync和@Async注解的使用

目录 1.EnableAsync 注解1.1 配置类使用示例1.2 复制请求上下文 2.用法1&#xff1a;Async 注解2.1 测试Controller2.2 测试Service2.3 测试ServiceImpl2.4.测试 4.用法2&#xff1a;直接使用 taskExecutor 做异步4.1 重新实现&#xff1a;测试ServiceImpl4.2 测试 5.Async异步…

ArcGIS三体阴影(影像三维)显示马赛克?

我们经常基于ArcGIS通过DEM来做山体阴影 但是有时候你一放大就会出现很强的马赛克的效果 还有我们在利用ArcScene建三维场景 即使数据分辨率很高也会出现马赛克效果 那怎么来解决这个问题呢 让我们的山体阴影显示更加细腻 三维没有马赛克的效果呢&#xff1f; 右键图层选择如…

地铁站人流检测硬件部分

目录 一、概述 二、驱动程序 2.1debug串口 2.2体重传感器HX711 2.3滴答定时器 2.4ESP8266 2.5人体检测 2.6 IIC的GPIO 2.7 OLED的IIC 2.8 LED 三、应用 四、中断 一、概述 使用STM32C8T6作为主控 A9 ---> tx&#xff08;调试串口&#xff09; A10 ---> …

android framework-ActivityManagerService(AMS)下

一、ActivityThread \frameworks\base\core\java\android\app\ActivityThread.java 1.1、main public static void main(String[] args) {Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThreadMain");// Install selective syscall interceptionAnd…

Hudi数据湖技术之核心概念

目录 1 基本概念1.1 时间轴Timeline1.2 文件管理1.3 索引Index 2 存储类型2.1 计算模型2.1.1 批式模型&#xff08;Batch&#xff09;2.1.2 流式模型&#xff08;Stream&#xff09;2.1.3 增量模型&#xff08;Incremental&#xff09; 2.2 查询类型&#xff08;Query Type&…

4.3调整基类成员在派生类中的访问属性的方法

同名成员 在定义派生类的时候&#xff0c;C语言允许派生类与基类中的函数名相同。如果在派生类中定义了与基类中相同的成员&#xff0c;则称派生类成员覆盖了基类的同名成员&#xff0c;在派生类中使用这个名字意味着访问在派生类中重新说明的成员。为了在派生类中使用基类的同…

C++ -4- 类和对象(下)

文章目录 1.初始化列表什么是初始化列表&#xff1f;初始化列表的 意义及使用 2.explicit关键字单参数构造函数&#xff08;C98&#xff09;多参数的构造函数&#xff08;C11&#xff09;&#xff08;了解&#xff09; 3.static静态成员静态成员变量与静态成员函数静态成员变量…

前端02:CSS选择器等基础知识

CSS基础选择器、设置字体样式、文本样式、CSS的三种引入方式、能使用Chrome调试工具调试样式 HTML专注做结构呈现&#xff0c;样式交给CSS&#xff0c;即结构&#xff08;HTML&#xff09;和样式CSS相分离 CSS主要由量分布构成&#xff0c;选择器以及一条或多条声明 选择器&…

18.Java泛型

目录 1. Java基本介绍 2. JDK下载安装及其环境配置 3. 一个简单的java程序 4. Eclipse基本使用、数据类型、运算符 5. 控制语句&#xff08;if、switch、for、while、foreach&#xff09; 6. Java数组 7. Java字符串对象(String|StringBuffer|StringBuilder|StringJoiner…

OFDM-LS信道估计 MMSE信道估计公式推导

假设ofdmN个子载波之间是完全正交的&#xff0c;即不考虑ICI影响&#xff0c;通过发送训练序列来实现信道估计。 其中&#xff0c;在推导6.8的时候&#xff0c;需要将6.6先拆解一下。 X − 1 Y X − 1 ( X H Z ) X − 1 X H X − 1 Z H X − 1 Z X^{-1}Y X^{-1}(XHZ)…

LeetCode213 打家劫舍 II 动态规划法

题目地址 https://leetcode.cn/problems/house-robber-ii/ 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 &#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装…

【Hive实战】探索Hive 2.X以及更早版本的MetaStore

探索Hive 2.X以及更早版本的MetaStore 文章目录 探索Hive 2.X以及更早版本的MetaStore概述配置元数据服务和元数据存储库基础配置参数其他配置参数默认配置配置元服务数据库使用内嵌模式的Derby库使用远程数据存储库 配置元数据服务本地/内嵌服务配置远程服务配置 元数据服务配…

【KingSCADA】什么是精灵图以及如何创建精灵图

大家好&#xff0c;我是雷工&#xff01; 本篇学习精灵图的制作&#xff0c;以下为学习内容及相关笔记。 一、什么是精灵图 精灵图是一种在外观上类似组合图&#xff0c;但内部嵌入了比较丰富的动画链接与逻辑控制&#xff0c;工程开发人员只要将其从精灵图库中调出来放置在开…

MySQL基础练习——创建数据库、数据表,并进行修改

目录 题目&#xff1a; 创建库和表&#xff1a; 创建库&#xff1a; 创建表&#xff1a; 将 c_contact 字段插入到 c_birth 字段后面&#xff1a; 将 c_name 字段数据类型改为VARCHAR(70)&#xff1a; 将 c_contact 字段改名为 c_phone&#xff1a; 将表名修改为 customer…

AD9208调试经验分享

背景概述 FMC137 是一款基于 VITA57.4 标准规范的 JESD204B 接口FMC 子 卡 模 块 &#xff0c; 该 模 块 可 以 实 现 4 路 14-bit 、 2GSPS/2.6GSPS/3GSPSADC 采集功能。该板卡 ADC 器件采用 ADI 公司的 AD9208 芯片&#xff0c;&#xff0c;与 ADI 公司的 AD9689 可以实现 …