JAVA数组的定义及用法

JAVA数组的定义及用法

数组是有序数据的集合,数组中的每一个元素具有同样的数组名和下标来唯一地确定数组中的元素。

 

1. 一维数组

 

1.1 一维数组的定义

 

type arrayName[];

type[] arrayName;

 

当中类型(type)能够为Java中随意的数据类型,包含简单类型组合类型,数组名arrayName为一个合法的标识符,[]指明该变量是一个数组类型变量。

 

另外一种形式对C++开发人员可能认为非常奇怪,只是对JAVA或C#这种开发语言来说,另外一种形式可能更直观,由于这里定义的仅仅是个变量而已,系统并未对事实上例化,仅仅需指明变量的类型就可以,也不需在[]指定数组大小。(第一种形式是不是仅仅是为了兼容曾经的习惯,毕竟C语言的影响太大了?)

 

比如:

int intArray[];

声明了一个整型数组,数组中的每一个元素为整型数据。与C、C++不同,Java在数组的定义中并不为数组元素分配内存,因此[]中不用指出数组中元素个数,即数组长度,并且对于如上定义的一个数组是不能訪问它的不论什么元素的。我们必须为它分配内存空间,这时要用到运算符new,其格式例如以下:

arrayName=new type[arraySize];

当中,arraySize指明数组的长度。如:

intArray=new int[3];

为一个整型数组分配3个int型整数所占领的内存空间。

 

通常,这两部分能够合在一起,格式例如以下:

type arrayName=new type[arraySize];

比如:

int intArray=new int[3];

 

1.2 一维数组元素的引用

定义了一个数组,并用运算符new为它分配了内存空间后,就能够引用数组中的每个元素了。数组元素的引用方式为:

 

arrayName[index]

当中:index为数组下标,它能够为整型常数或表达式。如a[3],b[i](i为整型),c[6*I]等。下标 从0開始,一直到数组的长度减1。对于上面样例中的in-tArray数来说,它有3个元素,分别为:

intArray[0],intArray[1],intArray[2]。注意:没有intArray[3]。

 

另外,与C、C++中不同,Java对数组元素要进行越界检查以保证安全性。同一时候,对于每一个数组都有一个属性length指明它的长度,比如:intArray.length指明数组intArray的长度。

 

 

 

执行结果例如以下:

C:/>java ArrayTest

a[4]=4
a[3]=3
a[2]=2
a[1]=1
a[0]=0

该程序对数组中的每一个元素赋值,然后按逆序输出。

 

1.3 一维数组的初始化

对数组元素能够依照上述的样例进行赋值。也能够在定义数组的同一时候进行初始化。

比如:

int a[]={1,2,3,4,5};

用逗号(,)分隔数组的各个元素,系统自己主动为数组分配一定空间。

 

与C中不同,这时Java不要求数组为静态(static),事实上这里的变量相似C中的指针,所以将其作为返回值给其他函数使用,仍然是有效的,在C中将局部变量返回给调用函数继续使用是刚開始学习的人非常easy犯的错误。

 

 

2. 多维数组

与C、C++一样,Java中多维数组被看作数组的数组。比如二维数组为一个特殊的一维数组,其每一个元素又是一个一维数组。以下我们主要以二维数为例来进行说明,高维的情况是相似的。

 

2.1 二维数组的定义

二维数组的定义方式为:

type arrayName[][];

 

比如:

int intArray[][];

 

与一维数组一样,这时对数组元素也没有分配内存空间,同要使用运算符new来分配内存,然后才干够訪问每一个元素。

对高维数组来说,分配内存空间有以下几种方法:

 

1. 直接为每一维分配空间,如:

int a[][]=new int[2][3];

 

2. 从最高维開始,分别为每一维分配空间,如:

int a[][]=new int[2][];
a[0]=new int[3];
a[1]=new int[3];

完毕1中同样的功能。这一点与C、C++是不同的,在C、C++中必须一次指明每一维的长度。

 

2.2 二维数组元素的引用

对二维数组中每一个元素,引用方式为:arrayName[index1][index2] 当中index1、index2为下标,可为整型常数或表达式,如a[2][3]等,相同,每一维的下标都从0開始。

 

2.3 二维数组的初始化

有两种方式:

1. 直接对每一个元素进行赋值。

2. 在定义数组的同一时候进行初始化。

 

如:int a[][]={{2,3},{1,5},{3,4}};

定义了一个3×2的数组,并对每一个元素赋值。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119163.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java——图书借阅系统「建议收藏」

    **项目需求:**为图书阅览室开发一个图书借阅系统,最多可存50本书,实现图书的管理。图书借阅系统具备以下功能:1.查看图书信息菜单选择查看功能,展示当前所有图书的相关信息,效果如下。case2: System.out.println(“—>查看图书”); System.out.println(“序号\t状态\t名称\t\t借出日期”); for(…

    2022年4月18日
    113
  • java 常量池和运行时常量池_java运行时常量池

    java 常量池和运行时常量池_java运行时常量池简介:这几天在看Java虚拟机方面的知识时,看到了有几种不同常量池的说法,然后我就去CSDN、博客园等上找资料,里面说的内容真是百花齐放,各自争艳,因此,我好好整理了一下,将我自认为对的理解写下来与大家共同探讨:在Java的内存分配中,总共3种常量池:1.字符串常量池(StringConstantPool):1.1:字符串常量池在Java内存区域的哪个位置?在JDK6.0及之前版本,字符串

    2025年10月16日
    4
  • 记忆化递归(记忆化搜索)

    记忆化递归(记忆化搜索)前言​ 前一篇博客写到入门的dp算法,后来又遇到一个奇怪的变种题目,同样也是可以用dp写的(至少标签是有动态规划)。我看了答案还是有些不能完全理解,于是又去b站翻了翻教程基础DP,其中提到记忆化的递归(也称记忆化搜索),相当于结合了dp和递归的优点(这时我又觉得比DP还厉害),然后就准备写写记忆化递归。目录​ 1.记忆化递归的解释与分析​ 2.记忆化递归的应用一、记忆化递归的解释与分析前面说道它结合了dp和递归的优点,分别是记忆化和逻辑清晰易懂。下面还是结合斐波那契数列的来理解:F(.

    2022年7月26日
    6
  • android换苹果,苹果换手机怎么转移数据?苹果、安卓都可以一键转移数据[通俗易懂]

    android换苹果,苹果换手机怎么转移数据?苹果、安卓都可以一键转移数据[通俗易懂]原标题:苹果换手机怎么转移数据?苹果、安卓都可以一键转移数据要更换手机的话,旧手机上的数据怎么办还真的是一个难题啊,毕竟手机用久了,上面的有各种重要的数据不是。那苹果手机换机的话,将数据进行转移,可以分成两种情况,一种吧,就是苹果转苹果,一种就是苹果转安卓了。一、苹果手机数据转移到新iPhone1、借助iCloud云备份手机自带的云备份功能,肯定是可以用上的。①手机连接上WiFi,然后在手机“设置…

    2022年5月26日
    75
  • IPV6 阿里DDNS

    IPV6 阿里DDNSIPV6阿里DDAS因为需要在家搭建一套环境,并且需要公网能访问。国内的ipv4的地址,各大运营商基本都不会分配ipv4地址(电信宽带好像有地方可以,但是听说很贵),而且是动态的,每过段时间就会改变。发现移动宽带的公网ipv6地址是可以获取到的,但是也会动态刷新。想稳定访问就加上阿里的ddns的域名访问。###1.准备工作因为宽带接入家里基本是都是需要通过光猫拨号后,再接入路由器。这样就拿不到真实的公网ipv6地址,需要先将光猫中的设置改为桥接模式,再让路由器输入宽带账户和密码拨号。这个过程我调

    2022年6月14日
    38
  • 【Android】Mac系统Android开发环境搭建

    【Android】Mac系统Android开发环境搭建第一步检查下自己的电脑上有没有安装JDK,通过在终端中输入”java-version”,可以得到检验。第二步如果没有安装JDK,请移步Oracle官网的下载中心进行下载(需要登录Oracle账号和同意协议才能下载)【https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html】(官网下载速度是真心慢,我后面从其他网站上下载了一个JDK,搜索“JDKforMac下载”,也可以到中文社区下载

    2022年7月23日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号