Java---数组


乐观学习,乐观生活,才能不断前进啊!!!

我的主页:optimistic_chen
我的专栏:c语言
欢迎大家访问~
创作不易,大佬们点赞鼓励下吧~

前言

无论c语言还是java数组都是重中之重,今天我们来学习java数组,看他与C语言中有几分不同。

文章目录

  • 前言
  • 数组的创建
  • 初始化
  • 数组的使用
  • 数组的本质
  • 数组应用
    • 参数传基本数据类型
    • 参数传输组类型(引用数据类型)
  • 引用变量
  • 完结

数组的创建

Type[ ] 数组名=new Type[N]

例如:

int[] array=new int[10];
double[] array2=new double[10];
String[] array3=new String[10];

初始化

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

int[] array=new int[10];

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

Type[] 数组名={data1,data2,...,datan};int[] array={1,2,3,4,6};

注意:
·静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度。
·静态初始化时, {}中数据类型必须与[]前数据类型一致。
·静态初始化可以简写,省去后面的new Type[ ]。
·如果没有对数组初始化,数组中元素为默认值。
·如果·数组中储存元素的类型为引用类型,默认值为NULL

类型默认值
byte0
short0
int0
long0
float0.0f
double0.0
char0
booleanfalse

数组的使用

因为在C语言中我们接触过数组,所以对于基本的数组访问和遍历我们不再说明,相信大家都了解过很多。我们直接从两者不同的地方开始说起。
C语言中求数组长度时使用sizeof关键词,但是在Java中数组长度可以通过数组对象.length来获取

int[]array = new int[]{10, 20, 30, 40, 50};
for(int i = 0; i < array.length; i++){System.out.println(array[i]);
}

当然,遍历数组也有一个新方式,for-each循环,语法格式如下:

for(数据类型 变量:集合名称){
代码块;
}

int[] array = { 100, 200, 300, 400, 500 };for (int x : array) {System.out.print(x+",");}

虽然foreach是for循环的增强版,简化了编程,提高了代码的可读性和安全性,避免了数组越界。而foreach一般是结合泛型使用,在需要使用数组或者集合索引时,for-each就不好用了。

数组的本质

之前博客初始Java中说过Java中的基本类型变量,指的是该变量空间中直接存放的是其所对应的值。而Java的数组是引用类型。指引用数据类型创建的变量,一般称为对象的引用,其空间中储存的是对象所在空间的地址

public static void func() {int a = 10;int b = 20;int[] array = new int[]{1,2,3};
}

array是数组类型的引用变量,其内部保存的内容可以简单理解成是数组在堆空间中的首地址(有点类似C语言中的指针)。
在这里插入图片描述

数组应用

参数传基本数据类型

public static void main(String[] args) {int num = 0;func(num);System.out.println("num = " + num);
}
public static void func(int x) {x = 10;System.out.println("x = " + x);
}

执行结果

在这里插入图片描述
发现在func方法中修改形参 x 的值, 不影响实参的 num 值.

参数传输组类型(引用数据类型)

public static void main(String[] args) {int[] arr = {1, 2, 3};func(arr);System.out.println("arr[0] = " + arr[0]);
}
public static void func(int[] a) {a[0] = 10;System.out.println("a[0] = " + a[0]);
}

执行结果

在这里插入图片描述
发现在func方法内部修改数组的内容, 方法外部的数组内容也发生改变.
因为数组是引用类型,按照引用类型来进行传递,是可以修改其中存放的内容的。

引用变量

public static void main(String[] args){int[] array={1,2,3,4};System.out.println(array);int a=10;
}

我们知道数组是引用类型,那么数组名应该为引用变量。既然是引用变量,那就说明存的是一个地址,那个地址的指向才是数组中真正存的东西。也就是说引用变量指向一个对象,即:array这个引用指向一个数组对象。

array[0]=1;//通过array这个引用,访问当前对象的0下标
array.length//通过array这个引用,访问当前对象的长度

示例:

public static void main(String[] args) {int[] array1=new int[3];array1[0]=10;array1[1]=20;array1[2]=30;int[] array2=new int[]{1,2,3,4,5};array2[0]=100;array2[1]=200;array1=array2;//array1这个引用指向array2这个引用指向的对象array1[2]=300;array1[3]=400;array2[4]=500;for (int i = 0; i < array2.length; i++) {System.out.println(array2[i]);}}

在这里插入图片描述
当两个引用同时指向一个对象的时候,通过任何一个引用都能修改这个对象的值,并且如果一个对象如果一直没有人引用,那么JVM自动回收。

注意:一个引用不可能同时指向两个对象

完结

好了,这期的分享到这里就结束了~
如果这篇博客对你有帮助的话,可以点一个免费的赞并收藏起来哟~
可以点点关注,避免找不到我~
我们下期不见不散~~

下期预告:java—类与对象

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

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

相关文章

LangChain 入门案例教程

LangChain 是一个基于 transformer 模型的语言链模型&#xff0c;它可以根据输入文本生成相应的回答。下面是一个简单的入门案例教程&#xff0c;旨在帮助您快速上手 LangChain。 1. 安装 LangChain 首先&#xff0c;您需要安装 LangChain。可以使用 pip 安装&#xff1a; p…

【简历】湖南某一本大学:JAVA实习简历指导,面试通过率比较低

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这个同学的学校是重点一本院校&#xff0c;这种学校背景我们建议大家尝试投一下大厂&#xff0c;然后投递主体在中厂。但是因为项目经历…

旷野之间12 - 内容创作用的最佳大模型评测

​​​​​​ 我正在做一个项目,需要我找出最适合内容创作的 LLM。我查看了 lmsys 排行榜上的顶级模型,阅读了其他人对这些模型的评价,查看了顶级 LLM 的模型卡,在没有明确答案后,我决定对所有这些 LLM 进行测试,以完成不同的内容创作任务。 评估模型 我想要评估的模型…

在iPhone / iPad上轻松模拟GPS位置 AnyGo for Mac

在iPhone / iPad上轻松模拟GPS位置 AnyGo for Mac AnyGo for Mac是一款专为Mac电脑用户设计的虚拟定位工具。它可以模拟你的GPS位置&#xff0c;让你的设备显示你在任何世界上的任何地方。无论你是想在游戏中虚拟移动&#xff0c;还是在社交媒体上分享虚拟的旅行照片&#xff0…

Flask+Layui开发案例教程

基于 Python 语言的敏捷开发框架_DjangoAdmin敏捷开发框架FlaskLayui版本_开发文档 软件产品基于 Python 语言&#xff0c;采用 Flask2.x、Layui、MySQL 等技术栈精心打造的一款集模块化、高性能、组件化于一体的企业级敏捷开发框架&#xff0c;本着简化开发、提升开发效率的初…

C 语言中如何实现字符串的拼接?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 【https://dwz.mosong.cc/cyyjc】通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&…

Objective-C 中的 isa 不再是简单的结构体指针

了解 Objective-C 中的 isa 指针内存结构 在 Objective-C 中&#xff0c;isa 指针是对象和类之间的重要桥梁。它不仅帮助运行时系统识别对象的类型&#xff0c;还参与了一些内存和性能优化。本文将深入讲解 isa 指针的内存结构&#xff0c;包括其在早期和现代实现中的演变。 …

Linux使用python调用串口<Ubuntu>

要在 Ubuntu 上使用 /dev/ttyUSB0 设备编写一个简单的串口收发程序&#xff0c;你可以使用 Python&#xff0c;结合 pyserial 库来实现。这种方法相对简单&#xff0c;适用于各种串行通信任务。以下是如何在 Python 中编写串口收发程序的步骤及代码示例&#xff1a; 步骤 1: 安…

JWT重放漏洞攻防策略

JWT重放漏洞概述 概念&#xff1a;JWT&#xff08;JSON Web Token&#xff09;是Web应用广泛使用的身份验证令牌。重放攻击&#xff1a;攻击者截获JWT后&#xff0c;利用其有效性冒充用户执行操作。 重放攻击的危害 权限滥用&#xff1a;攻击者可越权操作&#xff0c;如非法…

ffmpeg新旧函数对比

搬运博客园“kn-zheng”大佬博客 从FFmpeg 3.0 开始 &#xff0c; 使用了很多新接口&#xff0c;对不如下&#xff1a; 1、avcodec_decode_video2() 原本的解码函数被拆解为两个函数avcodec_send_packet()和avcodec_receive_frame() 具体用法如下&#xff1a; old: avcodec_d…

MySQL8之mysql-community-embedded-compat的作用

MySQL8中的mysql-community-embedded-compat包的作用主要是提供MySQL服务器作为嵌入式库时的兼容性支持&#xff0c;特别是对于那些使用库版本18的应用程序。嵌入式MySQL服务器允许开发者将MySQL数据库直接嵌入到他们的应用程序中&#xff0c;而无需运行独立的MySQL服务器进程。…

Transformer 论文通俗解读:FFN 的作用

在经过前面3节关于 Transformer 论文的解读之后&#xff0c;相信你对提出 Transformer 架构的这篇论文有了一定的了解了&#xff0c;你可以点击下面的链接复习一下前3节的内容。 《Attention is all you need》通俗解读&#xff0c;彻底理解版&#xff1a;part1 《Attention …

合合信息“大模型加速器”亮相2024世界人工智能大会

文章目录 &#x1f4d1;引言一、大模型发展的挑战数据稀缺问题 二、大模型“加速器”解决方案概述文档解析引擎的特征 三、文档解析引擎的优势3.1 高速处理能力3.2 智能理解文档结构3.3 多种数据类型支持3.4 高精度数据提取3.5 应用广泛&#xff0c;适应性强 四、复杂图表解析4…

Auslogics Disk Defrag Pro v11激活版下载、安装、使用教程 (磁盘碎片整理工具)

前言 Auslogics Disk Defrag Pro 是一款支持 FAT16 文件系统的磁盘碎片整理工具&#xff0c;它可以快速整理磁盘碎片&#xff0c;使磁盘空间更加整洁&#xff0c;显著提升电脑的运行速度。该软件无需任何分析阶段&#xff0c;并且速度比大多数其他碎片整理软件更快。它可以帮助…

stm32 开发板可以拿来做什么?

STM32开发板可以用来做许多不同的事情&#xff0c;具体取决于您的应用需求和编程能力。我收集归类了一份嵌入式学习包&#xff0c;对于新手而言简直不要太棒&#xff0c;里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕设800套和语言类教学&#xff0c;敲个22就可…

详解太阳能控制器PWM / MPPT极简方案其设计要点,台湾远翔FP7209升压24V,30V,36V,42V,48V

文章目录 前言 一、单节电池升压9V、12V、24V方案 二、单节电池升压30V&#xff0c;36V&#xff0c;42V&#xff0c;48V方案 三、芯片介绍 FP7209X与FP7209M的区别&#xff1a; 四、单节电池升压成为市面上太阳能控制器首选的原因&#xff1f; 总结 前言 太阳能是一种环保…

定时器TIM配置微妙延时函数

定时器TIM配置微妙延时函数 文章目录 定时器TIM配置微妙延时函数开胃小菜&#xff08;BOOT0、BOOT1&#xff09;Boot0Boot1&#xff08;如果有&#xff09; 三种定时器高级控制定时器&#xff08;TIM1&#xff0c;TIM8&#xff09;通用定时器&#xff08;TIM2, TIM3, TIM4, TIM…

linux命令: rsync的使用

使用rsync同步本地文件夹到远程目录 rsync -zvrt /localdir/ -e ssh -p 30000 rootip:/remotedir/rsync -zvrt /localdir/ /remotedir/ 远程备份 rsync -avlR --delete -e ssh -p 3231 tangboqi221.122.114.27:backup ~/backup/ R表示保留目录结构&#xff0c;如果不保留…

基于Intel Chainer 和姿势检测的动作识别(人体、面部、手部关键点识别动作识别)

项目概述 目标 开发一个能够实时或近实时识别特定动作的系统&#xff0c;如运动姿势、表情变化或手势控制。实现对人体关键点的精确追踪&#xff0c;以便于分析和理解人的动态行为。 技术栈 Intel硬件&#xff1a;可能使用Intel的高性能计算平台&#xff0c;如Xeon处理器或…

【国潮】国产化系统甲方问题总结

持续更新。。。。。。。。。。。。。。。 【国潮】国产化系统甲方问题总结 1. 安全性问题2. 可靠性和稳定性问题3. 性能问题4. 符合军事标准问题5. 兼容性和集成问题6. 维护和升级问题7. 项目管理问题8. 隐私和合规性问题9. 灾难恢复和备份问题10. 技术支持和培训问题 引言&am…