数组(Java)
数组
数组是相同类型元素的集合。
数组的定义和使用
数组的创建
数组名又叫引用变量,简称引用
下面代码段中new表示创建新的对象
T[ ] 数组名 = new T[ N ];//数组名又叫引用变量,简称变量
//T:表示数组中存放元素的类型
//T[]:表示数组的类型
//N:表示数组的长度
与C语言不同的是,数组在创建时数组类型 T[ ] 写的清楚明了,
而不像C语言中的创建为 :T 数组名 [ ],数组类型为T [ ],难以分辨
二维数组创建
int[][] array2 = {{1,2,3},{4,5,6}};
System.out.println(Arrays.toString(array2[0]));//输出[1,2,3] 二维数组是特殊的一维数组
数组的初始化
数组的初始化主要分为动态初始化以及静态初始化。
- 动态初始化:在创建数组时,直接指定数组中元素的个数
int[] array = new int[10];//元素个数为10
- 静态初始化:在创建数组时不指定数据元素个数,直接将内容进行指定
静态初始化可以简写,省去后面的new T [ ] 。( 注意:虽然省去了new T [ ] , 但是编译器编译代码时还是会还原)
T[] 数组名称 = {data1, data2, data3, ..., datan};
数组也可以按照如下C语言个数创建,不推荐
该种定义方式不太友好,容易造成数组的类型就是int的误解 [ ] 如果在类型之后,就表示数组类型,因此int[]结合在一块写意思更清晰
int arr[] = {1, 2, 3};
静态和动态初始化也可以分为两步,但是省略格式(省去了 new T [ ] )不可以
int[] array1;
array1 = new int[10];
int[] array2;
array2 = new int[]{10, 20, 30};
// 注意省略格式不可以拆分, 否则编译失败,以下为省略格式
// int[] array3;
// array3 = {1, 2, 3};
如果没有对数组进行初始化,数组中元素有其默认值
- 如果数组中存储元素类型为基类类型,默认值为基类类型对应的默认值
- 如果数组中存储元素类型为引用类型,默认值为null
数组中元素访问
数组可以通过下标访问其任意位置的元素
数组越界异常
java.lang.ArrayIndexOutOfBoundsException
遍历数组
与C语言不同的是Java中在数组中可以通过 数组对象.length 来获取数组的长度
- for 遍历数组
for(int i = 0; i < array.length; i++){System.out.println(array[i]);
}
- for-each 遍历数组(可以避免循环条件和更新语句写错)
for (int x : array) {System.out.println(x);
}
数组是引用类型
初始JVM的内存分布

//# 程序计数器 (PC Register): 只是一个很小的空间, 保存下一条执行的指令的地址
//# 虚拟机栈(JVM Stack): 与方法调用相关的一些信息,每个方法在执行时,都会先创建一个栈帧,栈帧中包含有:局部变量表、操作数栈、动态链接、返回地址以及其他的一些信息,保存的都是与方法执行时相关的一些信息。比如:局部变量。当方法运行结束后,栈帧就被销毁了,即栈帧中保存的数据也被销毁了。
//# 本地方法栈(Native Method Stack): 本地方法栈与虚拟机栈的作用类似. 只不过保存的内容是Native方法的局部变量. 在有些版本的 JVM 实现中(例如HotSpot), 本地方法栈和虚拟机栈是一起的
//# 堆(Heap): JVM所管理的最大内存区域. 使用 new 创建的对象都是在堆上保存 (例如前面的 new int[]{1, 2,3} ),堆是随着程序开始运行时而创建,随着程序的退出而销毁,堆中的数据只要还有在使用,就不会被销毁。
//# 方法区(Method Area): 用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据. 方法编译出的的字节码就是保存在这个区域
基本类型变量与引用类型变量的区别
基本数据类型创建的变量,称为基本变量,存放的是其所对应的值;
而引用数据类型创建的变量,一般称为对象的引用,存储的是对象所在空间的地址。
引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。通过该地址,引用变量便可以去操作对象。(类似于C语言中的变量)
认识 null
null 在 Java 中表示 “空引用” , 没有指向对象的引用
null 的作用类似于 C 语言中的 NULL (空指针), 都是表示一个无效的内存位置. 因此不能对这个内存进行任何读写操
作.
一旦尝试读写, 就会抛出 NullPointerException 异常
注意: Java 中并没有约定 null 和 0 号地址的内存有任何关联
数组的应用场景
总结: 所谓的 “引用” 本质上只是存了一个地址. Java 将数组设定成引用类型, 这样的话后续进行数组参数传参, 其实
只是将数组的地址传入到函数形参中. 这样可以避免对整个数组的拷贝(数组可能比较长, 那么拷贝开销就会很大)
注意:数组当中存储的是基本类型数据时,不论怎么拷贝基本都不会出现什么问题,但如果存储的是引用数据类
型,拷贝时需要考虑深浅拷贝的问题
打印数组
用 Arrays.toString 输出的其实是字符串(把传入的参数array表示的数组以字符串方式进行输出)
相关文章:
数组(Java)
数组 数组是相同类型元素的集合。 数组的定义和使用 数组的创建 数组名又叫引用变量,简称引用 下面代码段中new表示创建新的对象 T[ ] 数组名 new T[ N ];//数组名又叫引用变量,简称变量 //T:表示数组中存放元素的类型 //T[]…...
接口自动化测试框架搭建
🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号:互联网杂货铺,回复1 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、原理及特点 参数放在XML文件中进行管理用httpClien…...
(四十二)第 6 章 树和二叉树(树的二叉链表(孩子-兄弟)存储)
1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? strrch…...
测试萌新Python学习(五)接口自动化测试requests
requests 接口自动化测试requests库基本实现请求-GET基本实现请求-POST基本实现请求-补充 sessionCookie和Session案例params 接口自动化测试 概念程序驱动代替人工驱动去实现接口测试 实现方式 测试工具(jmeter, postman, …)编码工具(python, java, …) 比较 工具 优点:…...
Python 机器学习 基础 之 监督学习 [朴素贝叶斯分类器] / [决策树] 算法 的简单说明 / [graphviz] 绘制决策树
Python 机器学习 基础 之 监督学习 [朴素贝叶斯分类器] / [决策树] 算法 的简单说明 / [graphviz] 绘制决策树 目录 Python 机器学习 基础 之 监督学习 [朴素贝叶斯分类器] / [决策树] 算法 的简单说明 / [graphviz] 绘制决策树 一、简单介绍 二、监督学习 算法 说明前的 数…...
QT日志类SimpleQtLogger的简单记录
在现代软件开发中,日志记录是必不可少的部分。它不仅帮助开发者在调试和维护软件时了解程序的运行状态,还能提供关键的错误信息。对于使用Qt框架开发应用程序的开发者来说,选择一个合适的日志库至关重要。本文将详细介绍Qt日志库SimpleQtLogg…...
设计模式:观察者模式
观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式通常被用来实现事件处理系统、实时数据更新、…...
ICode国际青少年编程竞赛- Python-5级训练场-带参数函数
ICode国际青少年编程竞赛- Python-5级训练场-带参数函数 1、 def get_item(a):Dev.step(a)Dev.step(-a) get_item(4) Spaceship.step(2) get_item(2) Spaceship.step(3) get_item(5) Spaceship.step(2) get_item(3) Spaceship.step(3) get_item(4)2、 def get_item(a): D…...
运维别卷系列 - 云原生监控平台 之 02.prometheus exporter 实践
文章目录 [toc]exporter 简介常用的 exporternode-exporter 实践创建 svc创建 daemonsetprometheus 配置服务发现 exporter 简介 随着 Prometheus 的流行,很多系统都已经自带了用于 Prometheus 监控的接口,例如 etcd、Kubernetes、CoreDNS 等,…...
OSPF基本配置
1.启动OSPF进程 [rijospf1 router-id 1.1.1.1 --- 手工配置RID [r1-ospf-1) 2,创建区域 [r1-ospf-1]area 0 [r1-ospf-1-area-0.0.0.0) 3,宣告 目的:1,只有被宣告网段中的接口才能被激活。 --- 激活接口 ---- 只有激活的接口才能收发OSPF的…...
HIVE大数据平台SQL优化分享
相信很多小伙伴在面试的时候,必然跳不过去的一个问题就是SQL脚本的优化,这是很多面试官爱问的问题,也是可以证明你实力进阶的一个重要的能力。 下面给大家分享一个重量级的大数据行业sql技能---hive大数据平台SQL优化。 此文章是大数据平台…...
JS算法-十大排序算法(上)
思想小剧场 如果我的相对论被证明是正确的,德国人就会说我是德国人,法国人会说我是一个世界公民;如果我的相对论被否定了,法国佬就会骂我是德国鬼子,而德国人就会把我归为犹太人。—爱因斯坦 以下案例都是升序 const a…...
c++编程(11)——string类的模拟实现
欢迎来到博主的专栏——c编程 博主ID:代码小豪 文章目录 前言string类的模拟实现string的成员对象构造、赋值、析构访问成员对象的接口访问字符串中的元素迭代器对字符序列的插入、删除元素操作mystring类的相关操作 mystring类的所有模拟实现以及测试案例 前言 本…...
Python从0到POC编写--函数
数学函数: 1. len len() 函数返回对象(字符、列表、元组等)长度或项目个数, 例如: str "python" len(str)2. range range() 函数返回的是一个可迭代对象(类型是对象),…...
【教程】Linux/Jetson 安装X11VNC同步屏幕内容
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,请不吝给个[点赞、收藏、关注]哦~ 目录 背景说明 实际效果 安装步骤 安装 x11vnc 配置 x11vnc 配置 x11vnc 作为系统服务 使用 VNC 客户端连接 背景说明 通常vnc-server是单…...
【LLM第五篇】名词解释:prompt
1.是什么 提示工程(Prompt Engineering)是一门较新的学科,关注提示词开发和优化,帮助用户将大语言模型(Large Language Model, LLM)用于各场景和研究领域。 掌握了提示工程相关技能将有助于用户更好地了解…...
k8s v1.20二进制部署 部署 CNI 网络组件 部署 Calico
一、部署 flannel 1.1.K8S 中 Pod 网络通信 ●Pod 内容器与容器之间的通信 在同一个 Pod 内的容器(Pod 内的容器是不会跨宿主机的)共享同一个网络命名空间,相当于它们在同一台机器上一样,可以用 localhost 地址访问彼此的端口。…...
在React中利用Postman测试代码获取数据
文章目录 概要名词解释1、Postman2、axios 使用Postman测试API在React中获取并展示数据小结 概要 在Web开发中,通过API获取数据是一项常见任务。Postman是一个功能强大的工具,可以帮助开发者测试API,并查看API的响应数据。在本篇博客中&…...
嵌入式学习-通用定时器
简介 框图介绍 时钟选择 计数器部分 输入捕获和输出比较框图 嵌入式学习全文参考(小向是个der)做笔记:https://blog.csdn.net/qq_41954556/article/details/129735708...
培训行业有哪些ai工具?
培训行业利用人工智能(AI)工具的方式多种多样,其中一些常见的工具包括: 1. **经AI深度学习的OCR软件**:OCR能给培训行业带来很大的便利,能大大提高工作效率和降低文字录入的成本,但一般的OCR工具…...
2026年企业APM应用性能观测工具选型指南:四大主流方案深度对比
2026年企业APM应用性能观测工具选型指南:四大主流方案深度对比 2026年,企业数字化转型进入云原生深水区,微服务、分布式架构已成为中大型企业IT系统的标配,同时AI Agent与大模型技术正在深度重构运维体系,可观测性已从…...
【深伪检测】论文整体调研与梳理方法
一、单篇论文精读:抓核心信息(先“拆”后“懂”) 每篇论文都要完成「标题→摘要→引言→方法→实验→相关工作」的递进式阅读,目的是精准捕捉“这篇论文在解决什么问题、用了什么方法、做出了什么贡献”。标题摘要(10分…...
C++ 动态内存管理深度解析:new/delete 完全指南
引言在 C 语言中,我们使用 malloc()、calloc()、realloc() 和 free() 来管理动态内存。而 C 引入了全新的动态内存管理方式——new 和 delete。这不仅带来了语法上的简化,更重要的是引入了类型安全和初始化的概念。在学习过程中,我对 new 的理…...
OpenClaw效率对比:人工vsQwen2.5-VL-7B处理100张图片耗时测试
OpenClaw效率对比:人工vsQwen2.5-VL-7B处理100张图片耗时测试 1. 测试背景与动机 最近在整理个人摄影作品集时,我遇到了一个典型问题:需要将100张混合了风景、人像、静物的照片按主题分类归档。手动操作不仅耗时,还容易因视觉疲…...
移动端ncnn部署YOLOv11:从官方转换到实战排错
1. 移动端部署YOLOv11的完整流程 在移动端部署YOLOv11模型,ncnn无疑是最佳选择之一。这个轻量级的高性能神经网络前向计算框架,专为移动端优化设计。我最近刚完成一个项目,需要把YOLOv11部署到安卓设备上,整个过程虽然踩了不少坑…...
openclaw添加本地大模型支持接受图片输入
这里写自定义目录标题1.故障现象2.背景3.解法4.排查1.故障现象 openclaw gateway的聊天处,上传图片报错 parseMessageWithAttachments: 1 attachment(s) dropped — model does not support images2.背景 qwen3.5的大模型原本就是多模态的(支持图片的…...
遇到一个口头机遇的答辩准备2(ai告诉的要点)
代码处理的过程,其实已经不是当时的过程了。算是事后的整理过程吧先来问下CAD二开要点,ai给出了以下十一点:一、核心原则一些操作必须包 Transaction (事务,音标:/trnˈzkʃn/)增删改图形必须用…...
每日一题 力扣 3418. 机器人可以获得的最大金币数 力扣 215. 数组中的第K个最大元素 动态规划 TopK问题 C++ 题解
文章目录力扣 3418. 机器人可以获得的最大金币数题目描述思路简介代码实现复杂度分析力扣 215. 数组中的第K个最大元素题目描述思路简介代码实现复杂度分析踩坑记录力扣 3418. 机器人可以获得的最大金币数 题目描述 力扣 3418. 机器人可以获得的最大金币数 示例 1࿱…...
Qwen3-32B部署全攻略:3步搞定,零基础也能快速上手
Qwen3-32B部署全攻略:3步搞定,零基础也能快速上手 1. 为什么选择Qwen3-32B? Qwen3-32B是当前开源大模型领域的佼佼者,拥有320亿参数的强大能力。与市面上其他模型相比,它有三个突出优势: 推理能力卓越&a…...
域名过期后会不会影响网站的SEO排名
域名过期后是否会影响网站的SEO排名:深入探讨与解决方案 在当今互联网时代,域名是网站的核心标识,它不仅代表了网站的身份,还在搜索引擎优化(SEO)中扮演着重要角色。有时我们可能会面临域名过期的情况&…...

