java源码-数组

背景

上传图片,需要对图片格式进行校验,这是就可以使用数组

1、什么是数组?

Java 语言中提供的数组是用来存储固定大小的同类型元素。
如:可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,…,number99。
注意事项:

1)数组中存放的元素其类型相同

2)数组的空间是连在一起的

3)每个空间有自己的编号,其实位置的编号为0,即数组的下标。

2、数组的创建及初始化

数组的创建

T[ ] 数组名 = new T[N];
T:表示数组中存放元素的类型 如:int 、double
T[ ]:表示数组的类型 如:int[ ] 整型数组、double[ ] 浮点型数组
N:表示数组的长度 如:5表示存放5个对应类型的元素
如:

int[] arr1 = new int [10]; //创建一个可以容纳10个int类型元素的数组
char[] arr2 = new char[10]; //创建一个可以容纳10个char类型元素的数组
double[] arr4 = new double[10]; //创建一个可以容纳10个double类型元素的数组
String[] array3 = new String[10]; //创建一个可以容纳10个字符串的数组
 

3、数组的初始化

数组的初始化主要分为动态初始化以及**静态初始化 **

3.1、静态初始化

静态初始化:在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定
如:

int[] arr1 = new int []{0,1,2,3,4,5,6,7,8,9};
char[] arr2 = new char[]{'a', 'b','c'};
double[] arr3 = new double[]{1.1,2.2,3.3,4.4,5.5};
String[] arr4 = new String[]{"abc","efg","hij"};

也可以将new T去掉,简写为:

int[] arr1 = {0,1,2,3,4,5,6,7,8,9};
char[] arr2 = {'a', 'b','c'};
double[] arr3 = {1.1,2.2,3.3,4.4,5.5};
String[] arr4 = {"abc","efg","hij"};

虽然省去了new T[ ], 但是编译器编译代码时还是会还原。
注意:

静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度。
静态初始化时, {}中数据类型必须与[]前数据类型一致。
静态初始化可以简写。

3.2、动态初始化


动态初始化:在创建数组时,直接指定数组中元素的个数
如:

int[] arr1 = new int [10]; //创建一个可以容纳10个int类型元素的数组
char[] arr2 = new char[10]; //创建一个可以容纳10个char类型元素的数组
double[] arr4 = new double[10]; //创建一个可以容纳10个double类型元素的数组
String[] array3 = new String[10]; //创建一个可以容纳10个字符串的数组

与静态初始化不同,动态初始化后续可以添加数组的内容,以int[ ] arr=new int [5]; 为例:

int[] arr = new int[5];
arr[0]=1;
arr[1]=2;
arr[2]=3;
arr[3]=4;
arr[4]=5;

静态和动态初始化也可以分为两步。

int[] array2;
array2 = new int[]{10, 20, 30}; //静态
int[] array1;
array1 = new int[10]; //动态

如果没有对数组进行初始化,数组中元素有其默认值:
如果数组中存储元素类型为引用类型,默认值为null

3.2、数组中元素访问

数组的下标

数组在内存中是一段连续的空间,空间的编号都是从0开始的,依次递增,该编号称为数组的下标,数组可以通过下标访问其任意位置的元素。


遍历数组

length 数组的长度:数组名.length
在数组中可以通过 数组对象.length 来获取数组的长度,举例使用:‘

public class Test1 {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6,7,8,9,10};
        int i=0;
        for(i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }
}

for each语法:

for(元素类型t 元素变量x : 遍历对象obj){ 
     引用了x的java语句; 

for-each 是for循环的另外一种使用方式,能够更方便的完成对数组的遍历. 可以避免循环条件和更新语句写错。
举例使用(打印数组内元素):

public class Test1 {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6,7,8,9,10};
        for(int x:arr){
            System.out.println(x);
        }
    }
}

4、jvm内存分布


内存是一段连续的存储空间,主要用来存储程序运行时数据的。 如果对内存中存储的数据不加区分的随意存储,那对内存管理起来将会非常麻烦,因此JVM(Java虚拟机)也对所使用的内存按照功能的不同进行了划分。

栈:一般存储局部变量等。 堆:一般存储对象等。
首先我们知道,Java中数据类型分为基本数据类型和引用数据类型,基本数据类型分为8种类型4大类,而引用数据类型中存放的是地址。

5、数组的内存分布

对于数组来说,其内存分布为:

那么问题来了,下面几道题打印arr2结果为什么?

int[] arr1 = {1,2,3,4,5};
int[] arr2 = arr1;
由上图可知,arr1中存放的是数组首元素的地址,将arr1赋给arr2,即arr2也指向{1,2,3,4,5},都与其建立了联系。打印arr2结果为1,2,3,4,5

如进行以下修改,打印arr2结果为什么?

int[] arr1 = {1,2,3,4,5};
int[] arr2 = arr1;
arr2[0] = 66;
因为arr2也与arr1所指向的内容建立了联系,因此不管谁进行修改,都会修改 {1,2,3,4,5},所以修改arr2[0]为66后,打印arr2结果为 66,2,3,4,5
若进行以下修改,打印arr1结果为什么?

int[] arr1 = {1,2,3,4,5};
int[] arr2 = {100,200,300};
arr1=arr2;

此时arr1中存放的地址是arr2所指向的元素的地址,与 {1,2,3,4,5} 的联系断开,因为没有人与 {1,2,3,4,5} 建立联系,所以其会被销毁。arr1打印结果为100,200,300

空 null

null 在 Java 中表示 “空引用” , 也就是一个不指向对象的引用

int[] arr = null; //arr数组不指向任何对象,以后若需要可以指向其它对象
System.out.println(arr[0]);//打印会报空指针异常
null 的作用类似于C语言中的 NULL (空指针), 都是表示一个无效的内存位置. 因此不能对这个内存进行任何读写操作. 一旦尝试读写, 就会报错 NullPointerException(空指针异常)。

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

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

相关文章

替代升级虚拟化 | ZStack Cloud云平台助力中节能镇江公司核心业务上云

数字经济正加速推动各行各业的高质量升级发展&#xff0c;云计算是数字经济的核心底层基础设施。作为云基础软件企业&#xff0c;云轴科技ZStack 坚持自主创新&#xff0c;自研架构&#xff0c;产品矩阵可全面覆盖数据中心云基础设施&#xff0c;针对虚拟化资源实现纳管、替代和…

用按层次顺序遍历二叉树的方法,设计算法统计树中度为1的结点数目

用按层次顺序遍历二叉树的方法&#xff0c;设计算法统计树中度为1的结点数目 代码思路&#xff1a; 层序遍历的实现需要借助一个辅助队列 首先将根结点入队&#xff0c;然后根出队&#xff0c;把根的两个子树入队 然后下面循环执行&#xff1a;队头元素出队&#xff0c;队头元…

如何通过降低设备六大损失帮助企业改善OEE

在各个行业中&#xff0c;改善设备综合效率OEE&#xff08;Overall Equipment Efficiency&#xff09;是企业实现高效生产和竞争优势的关键。然而&#xff0c;设备的六大损失常常影响着企业的OEE指标。本文将探讨如何通过降低这六大损失来帮助企业改善OEE&#xff0c;提高生产效…

2023年掌控安全学院CTF暖冬杯——数据流分析

前言&#xff1a;打工仔一枚&#xff0c;第一波上新的3题misc 做完了 再打ISCTF随便记录一下 PS&#xff1a;环境关了&#xff0c;题目描述忘记了&#xff0c;反正就是找flag。 筛选HTTP数据流 导出数据流慢慢看 ctrl F 搜flag 看到一条 有flag.txt 的数据 导出另存.zip 这里…

洗袜子的洗衣机哪款好?内衣洗衣机便宜好用的牌子

不得不说洗衣机的发明解放了我们的双手&#xff0c;而我们从小到大就有这个意识&#xff0c;贴身衣物不可以和普通的衣服一起丢进去洗衣机一起&#xff0c;而内衣裤上不仅有肉眼看见的污渍还有手上根本无法消灭的细菌&#xff0c;但是有一款专门可以将衣物上的细菌杀除的内衣洗…

java设计模式学习之【建造者模式】

文章目录 引言建造者模式简介定义与用途实现方式&#xff1a; 使用场景优势与劣势建造者模式在spring中的应用CD&#xff08;光盘&#xff09;的模拟示例UML 订单系统的模拟示例UML 代码地址 引言 建造者模式在创建复杂对象时展现出其强大的能力&#xff0c;特别是当这些对象需…

docker集群的详解以及超详细搭建

文章目录 一、问题引入1. 多容器位于同一主机2. 多容器位于不同主机 二、介绍三、特性四、概念1. 节点nodes2. 服务(service)和任务(task)3. 负载均衡 五、docker网络1. overlay网络 六、docker集群搭建1. 环境介绍2. 创建集群3. 集群网络4. 加入工作节点 七、部署可视化界面po…

数学建模-基于脑出血患者院前指标的多种机器学习预测模型构建及比较研究

基基于脑出血患者院前指标的多种机器学习预测模型构建及比较研究 整体求解过程概述(摘要) 卒中是全球致残率、致死率最高的疾病之一&#xff0c;其中脑出血&#xff08;Intracerebral hemorrhage&#xff0c;ICH&#xff09;患者仅占卒中患者的 20%&#xff0c;但致残、死亡人…

【Linux】ln命令使用

ln命令 ln是linux中又一个非常重要命令&#xff0c;请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同步的链接&#xff0c;这个命令最常用的参数是-s&#xff0c;具体用法是&#xff1a;ln –s 源文件 目标文件。 当我们需要在不同的目录&#xff0c;用到相…

CMIP6数据处理及在气候变化、水文、生态等领域中应用

气候变化对农业、生态系统、社会经济以及人类的生存与发展具有深远影响&#xff0c;是当前全球关注的核心议题之一。IPCC&#xff08;Intergovernmental Panel on Climate Change&#xff0c;政府间气候变化专门委员会&#xff09;的第六次评估报告明确&#xff1b;指出&#x…

西班牙Wallapop是什么?原来欧洲版闲鱼也很好用!

说到国内的闲鱼大家肯定不陌生&#xff0c;那国外的二手闲置平台大家知道吗&#xff1f;在西班牙&#xff0c;最受欢迎的移动购物APP是Wallapop和速卖通。Wallapop是西班牙第一大二手商品网站&#xff0c;网站上丰富的性价比高的商品正好满足了西班牙人的需求。今天龙哥就和大家…

Yolov8实现瓶盖正反面检测

一、模型介绍 模型基于 yolov8n数据集采用SKU-110k&#xff0c;这数据集太大了十几个 G&#xff0c;所以只训练了 10 轮左右就拿来微调了 基于原木数据微调&#xff1a;训练 200 轮的效果 10 轮SKU-110k 20 轮原木 200 轮瓶盖正反面 微调模型下载地址https://wwxd.lanzouu.co…

网站提示不安全?

随着互联网的普及和发展&#xff0c;网络安全问题日益严重。黑客攻击、数据泄露、恶意软件等问题层出不穷&#xff0c;给企业和个人带来了巨大的损失。在这个背景下&#xff0c;确保网站安全显得尤为重要&#xff0c;而使用SSL证书是解决这些问题的有效措施。 什么是SSL证书&am…

分享超实用的软文撰写步骤!建议收藏

一想到写软文就头大&#xff0c;根本不知道从哪里下手&#xff0c;这是很多写手在创作过程中会遇到的问题。 一篇软文写得好不好&#xff0c;关键就要看你的创作步骤到不到位&#xff0c;软文创作是有一套可执行的具体方式的&#xff0c;跟着步骤来&#xff0c;你也能轻轻松松…

提升性能测试效率:JMeter中的用户自定义变量!

前言 在测试过程中&#xff0c;我们经常会碰到测试服务地址有改动的情况&#xff0c;为了方便&#xff0c;我们会把访问地址参数化&#xff0c;当访问地址变化了&#xff0c;我们只需要把参数对应的值改动一下就可以了。 一&#xff1a;添加配置元件-用户定义的变量&#xff…

LeetCode 7 整数反转

题目描述 整数反转 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] &#xff0c;就返回 0。 假设环境不允许存储 64 位整数&#xff08;有符号或无符号&#xff09;。 示…

【Android】使用intent.putExtra()方法在启动Activity时传递数据

食用方法 在Android中&#xff0c;你可以使用Intent对象来在启动Activity时传递数据。以下是一个示例&#xff0c;展示了如何在startActivity时传递数据到被启动的Activity&#xff1a; 在启动Activity的地方&#xff0c;创建一个Intent对象&#xff0c;并使用putExtra()方法…

【PPT模板合集】关于自制内容的PPT模板合集,包括原创的PPT及改良内容的PPT,适合科研/比赛/工作

【PPT模板合集】关于自制内容的PPT模板合集&#xff0c;包括原创的PPT及改良内容的PPT&#xff0c;适合科研/比赛/工作 零、前言一、校园层面的PPT模板1.1 各种毕业答辩1.2 夏令营答辩1.3 奖学金答辩1.4 比赛/项目答辩 二、学术层面的PPT模板2.1 学术汇报2.2 会议海报类型 三、…

滚珠丝杆在各种自动化设备中的作用

滚珠丝杆因其具有高精度、高刚度和长寿命等特性&#xff0c;成为许多设备中的重要组成部分&#xff0c;在许多行业中都有广泛的应用&#xff0c;接下来我们看看滚珠丝杆的具体应用有哪些&#xff1f; 1、打孔机&#xff1a;提供精确的导向&#xff0c;使打孔机的滑块能够沿固定…

【算法每日一练]-图论(保姆级教程篇9 最小生成树 ,并查集篇)#道路修建 #兽径管理

目录 题目&#xff1a;道路修建 思路&#xff1a; 题目&#xff1a;兽径管理 思路&#xff1a; 题目&#xff1a;道路修建 思路&#xff1a; “让这些点全部连在一起的最小代价”很明显是最小生成树。绝对不能kruskal&#xff0c;存边一定会超内存。所以只能prim。 但是…