Java程序设计入门教程 -- 一维数组

news/2024/5/16 18:24:16/文章来源:https://blog.csdn.net/u010764893/article/details/130946351

目录

一维数组创建

1.声明数组

2.分配数组内存空间

 3.数组元素访问

数组初始化

1.静态初始化

2.动态初始化

一维数组的拷贝

1.数组元素的拷贝

2.数组名的拷贝


一维数组创建

1.声明数组

       声明一个一维数组的方法很简单,格式如下:

               数据类型名[ ]   数组名;   或    数据类型名  数组名[ ];

       若声明一个数组,即先声明数组的数据类型(可以是基本数据类型或者是引用类型),它决定了数组中的每个元素都是该数据类型,再声明数组的名字。

声明一个整型数组a

int[] a; 或 int a[];Student[] aStudent; 或 Student aStu;

2.分配数组内存空间

       声明一个一维数组之后,就可以通过new关键字为其申请分配内存空间,格式为:

                             new  数组类型[数组大小]

        其中[数组大小]是一个整型常量值,可以通过数组属性length来访问。

int[] intArray = new int[5];

        此处定义一个整型数组intArray,其中包含5个元素,每个元素为int类型,共向系统申请20个字节的内存空间。 

 3.数组元素访问

        对于一个已经定义好的大小为N的一维数组,包含了N个同类型的数组元素,对每个数组元素的访问可采用以下格式:

             数组名[元素下标]

其中,元素下标是元素在数组中的位置,为整型值,元素下标的取值范围是[0, N-1]

int[] a=new int[3];   int s1,s2;
a[1]=1;   a[2]=2;
s1=a[1]+a[2];  // s1值为3
s2=a[0]+a[2];  // s2值为2,a[0]虽然未有明确赋值,但具有默认值0
a[3]=3;  // error, 运行时错误,不存在a[3]元素

数组初始化

        一维数组初始化根据实现方式不同,可以分为静态初始化和动态初始化。数组所需的内存空间是在其初始化的时候由系统分配的。

1.静态初始化

        静态初始化,即在声明数组的时候,直接用数据为其赋值,此时数组的大小由初始化数据的个数决定。

int intArray[]={1,2,3,4}; // intArray数组大小为4
String stringArr[]={"abc", "How", "you"};//stringArr数组大小为3

2.动态初始化

        动态初始化,即通过new 关键字为数组申请内存空间并赋值,其中对于类类型数组需要明确数组结构,并为每个数组元素申请空间。

String stringArray[ ]= new String[2]; //确定数组有2个元素
stringArray[0]= new String("abc");//为第一个数组元素分配空间
stringArray[1]= new String("123");//为第二个数组元素分配空间


一维数组的拷贝

        一维数组拷贝这个问题可以分解为两个子问题:
               一是数组元素的拷贝;   二是数组名的拷贝。

        数组元素的拷贝属于值复制,即把数组元素的值作一个完全的复制。

1.数组元素的拷贝

int[] a={1,2,3};
int x=a[1];  // 变量x具有了数组元素 a[1]的完全备份

2.数组名的拷贝

       数组名的拷贝属于地址复制,即把数组首元素的地址复制过去,而数组的实体(各数组元素的值)没有复制过去,这样处理的结果是,两个数组名管理着同一个数组实体空间。

int[] a={1,2,3};
int[] b=a;  // 把数组a的首地址复制给数组b,结果 数组a和b//管理着同一个数组空间,a[i]即为b[i]
b[2]=5;     //等价于执行了a[2]=5


数组遍历

       数组遍历是数组应用中的最基本操作,指的是每一个数组元素至少被访问一次,每次访问的具体操作可以是读取或修改。

       遍历数组首先要知道数组大小,Java提供了length属性方便获取数组大小,格式:        

                 数组名.length

for循环遍历 

利用for循环与数组长度length属性的结合,可以高效地实现数组的遍历。

int[] a=new int[10];
for(int i=0; i< a.length; i++)    a[i]=i;//为每一个a[i]赋值

foreach循环遍历

        自JDK 1.5.0Java提供了增强型for的新特性,称为foreach循环,格式如下:    for (元素类型  临时变量x : 遍历对象obj)

                     {    访问x的语句;    }

foreach循环常用于数组遍历,简单而高效。

int arr[] = {2, 3, 1}; //数组元素arr[0]~arr[2]  
for (int x : arr)//每次循环读取arr[i]的值,并存入变量x且i自增1 System.out.print(x+“ ”); //依次输出数组元素的值:1 2 3

利用foreach输出数组:

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

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

相关文章

茅塞顿开的C#代码——通用型科学计算器

计算器是经常遇到的编程作业。 一般都是实现加、减、乘、除四则运算的普通计算器。 这里介绍用几十行C#代码实现的复杂的《科学计算器》&#xff0c;可以计算各种函数。 不知道其他语言实现同样的功能需要编写多少行代码&#xff1f;20000行&#xff1f; using System; usin…

Linux LNMP(Linux NGINX MySQL PHP)

NGINX处理静态页面性能出色&#xff0c;但是动态页面几乎没有处理能力&#xff0c;比Apache还差 所以涉及动态页面的场合一般由PHP Python Java&#xff08;后缀php&#xff0c;py&#xff0c;jsp&#xff09;等处理 静态页面请求 客户端 -> nginx动态页面请求 …

《水经注地图服务》下载与安装步骤

概述 《水经注地图服务》&#xff08;WeServer&#xff09;是一款可快速发布全国乃至全球海量卫星影像的地图发布服务产品&#xff0c;该产品完全遵循OGC相关协议标准&#xff0c;是一个基于若干项目成功经验总结的产品。它可以轻松发布100TB级海量卫星影像&#xff0c;从而使…

chatgpt赋能python:Python几次方介绍

Python几次方介绍 Python是一种通用编程语言&#xff0c;具有快速开发和易于阅读的优点。Python具有各种强大的功能&#xff0c;包括能够计算数值的能力。本文将介绍Python几次方的相关知识。 Python几次方的语法 要在Python中进行几次方运算&#xff0c;可以使用双星号&…

亚马逊云科技与涂鸦智能持续赋能开发者,推动全行业的数智化创新

近几年&#xff0c;智能产品已渗透至人们生活的方方面面&#xff0c;IoT技术市场规模也随之获得较快增长&#xff0c;据IoT Analytics的数据&#xff0c;2023年IoT市场规模将增长19%&#xff0c;或成为经济波动周期的一大黑马赛道&#xff0c;但下游应用场景与需求的高度碎片化…

chatgpt赋能python:Python利用数据可视化出图,为SEO拓展新思路

Python利用数据可视化出图&#xff0c;为SEO拓展新思路 数据可视化出图在SEO领域中是非常重要的&#xff0c;它不仅能丰富网站内容&#xff0c;还能提高用户体验。而Python语言在数据处理和可视化方面具有很大的优势&#xff0c;让我们一起来看看如何利用Python出图来拓展SEO应…

使用chartgtp写Android代码

<LinearLayout android:layout_width"match_parent" android:layout_height"match_parent" android:orientation"horizontal"> <TextView android:id"id/姓名" …

第三章 JVM内存概述

附录&#xff1a;精选面试题 Q&#xff1a;为什么虚拟机必须保证一个类的Clinit( )方法在多线程的情况下被同步加锁 &#xff1f; A: 因为虚拟机在加载完一个类之后直接把这个类放到本地内存的方法区&#xff08;也叫原空间&#xff09;中了&#xff0c;当其他程序再来调这个类…

线程池的工作原则揭秘:如何合理管理线程数量?

大家好&#xff0c;我是小米&#xff0c;一个热爱技术分享的小伙伴。在多线程编程中&#xff0c;线程池是一种非常实用的工具&#xff0c;可以帮助我们更好地管理线程&#xff0c;提高程序的性能和稳定性。今天&#xff0c;我将详细介绍线程池的概念、使用方法以及常用参数&…

VUE3中实现游戏摇杆效果

github地址 GitHub - yoannmoinet/nipplejs: A virtual joystick for touch capable interfaces. 演示地址 Nipplejs by yoannmoinet 1.安装nipple npm install nipplejs --save 下面是完整的VUE代码 <el-row> <el-col :span"5"><div id"jo…

15、Redis数据库

1、数据库相关知识简介 1、数据库分类 关系型数据库&#xff1a;Oracle,MySQL,SqlServer,DB2NoSql数据库&#xff1a;NoSQL最常见的解释是“non-relational”&#xff0c; “Not Only SQL”也被很多人接受。NoSQL仅仅是一个概念&#xff0c;泛指非关系型的数据库&#xff0c;…

Conditional, Ternary 运算符的使用

1. Conditional 条件运算符的使用 1.1 实现 /// 条件语句 struct ConditionalBootcamp: View {State var showCircle: Bool falseState var showRectangle: Bool falseState var isLoading: Bool falsevar body: some View {//conditionalView1conditionalView2}/// 方式二…

Qt6.5.1+WebRTC学习笔记(八)开发环境搭建(win10+vs2019)

一、准备 1.操作系统win10 64位 2.合理的上网方式&#xff0c;需要正常访问google,最好有20G以上流量 3.安装VS2019&#xff0c;笔者使用的是社区版&#xff0c;并选中C相关&#xff0c;笔者设置如下 注意&#xff0c;win10的sdk需要是10.0.20348.1&#xff0c;其他版本可能…

rt-thread汇总

finish和msh的区别&#xff1f; 这个问题我一直没搞懂&#xff0c;可能得看一下源码才能搞清楚了吧 通过Qemu运行RT-Thread 在windows上通过QEMU快速上手RT-thread smart RT-thread启动流程 rt-thread启动流程 Kconfig语法 Kconfig语法 关于终端的一些问题 终端的管脚配置…

NIO之Selector解读

目录 Selector 简介 为什么会出现Selector Selector 和 Channel 关系 可选择通道(SelectableChannel) Channel 注册到 Selector 选择键(SelectionKey) Selector 的使用方法 Selector 的创建 注册 Channel 到 Selector 轮询查询就绪操作 停止选择的方法 Selector 简…

11. 数据结构之二叉树

前言 上一节&#xff0c;简单概述了树这种数据结构&#xff0c;以及树结构向下&#xff0c;具有某些一些特征的树&#xff0c;比如二叉树&#xff0c;B树&#xff0c;B树&#xff0c;堆等。其中&#xff0c;二叉树是一个很重要的模块。也是在一些技术面试中&#xff0c;可能会…

【LeetCode】268. 丢失的数字

268. 丢失的数字&#xff08;简单&#xff09; 思路 其实这道题和 136.只出现一次的数字类似。我们可以将 nums 的所有数字和 [0, n] 组合&#xff0c;丢失的数字只会在 [0,n] 出现一次&#xff0c;其余数字都会出现两次&#xff0c;我们将它们两两异或&#xff0c;由于相同的…

自动驾驶赛道回暖?传统Tier1加速入场,真正赢家正在浮出水面

自动驾驶赛道&#xff0c;在经历过去三年的持续降温之后&#xff0c;正在迎来新一轮上升势头。整合、并购、协作&#xff0c;正在成为新一轮产业周期的关键词。 本周&#xff0c;滴滴自动驾驶与法雷奥签署战略合作及投资意向书&#xff0c;法雷奥将对滴滴自动驾驶进行战略投资…

技术帖——飞凌嵌入式RK3588开发板推理模型转换及测试

RKNN&#xff08;Rockchip Neural Network&#xff09;是一种用于嵌入式设备的深度学习推理框架&#xff0c;它提供了一个端到端的解决方案&#xff0c;用于将训练好的深度学习模型转换为在嵌入式设备上运行的可执行文件。使用RKNN框架可以在嵌入式设备上高效地运行深度学习模型…

【Python C扩展】零基础也能轻松掌握的学习路线与参考资料

Python C扩展是将Python语言与C语言相结合&#xff0c;最大限度地利用C语言的高性能和Python语言的灵活性&#xff0c;使Python程序获得更高的运行效率。Python C扩展的学习路线涵盖了C语言基础、Python语言、Python C API等多个方面。下面将详细介绍Python C扩展的学习路线&am…