当前位置: 首页 > 编程日记 > 正文

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的长度。

public class ArrayTest{ public static void main(String args[]){ int i; int a[]=new int[5]; for(i=0;i<5;i++) a[i]=i; for(i=a.length-1;i>=0;i--) System.out.println("a["+i+"]="+a[i]); } }

执行结果例如以下:

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的数组,并对每一个元素赋值。

相关文章:

英特尔公布新技术路线图,将为 AWS、高通代工芯片

编译|刘春霖出品|AI科技大本营(ID:rgznai100)图源|IC photo今天英特尔宣布其旗下的工厂将开始制造高通芯片,并公布了公司有史以来最详细的制程工艺和封装技术路线图,希望在 2025 年前赶上台积电、三星电子。除了公布其近十多年来首个全新晶体管架构 Ribb…

epoll相关资料整理

http://www.cppblog.com/converse/archive/2008/10/13/63928.htmlepoll相关资料整理 学习epoll有一段时间了,最近终于有一个服务器采用了epoll模型,从中积累了一些epoll的资料.个人感觉目前可以找到的epoll相关的资料太少了,因为epoll仅被linux 2.6以上版本内核所支持,它的应用…

18.绝对路径和相对路径

什么是绝对路径(Absolute Pathname)? 1.绝对路径必定由“/”开头 2.绝对路径是为档案/文件的所在位置做指向 3.在任何时候,都可以用绝对路径来找到我们想要的文件 PS:绝对路径只对当前所在目录有效。 什么是相对路径&a…

IE的box模型显示bug

原作者charlee、原始链接http://tech.idv2.com/2007/01/02/ie-box-model-bug/以及本声明。 box模型即由<div>等块元素的 margin、padding、border、width、height 等属性构成的显示模型&#xff0c;它是CSS布局的基础。通过设置<div>的各种属性&#xff0c;可以得到…

AI 能匹敌程序员了吗?OpenAI 新研究展​示 NLP 大模型的局限性

作者&#xff1a;Ben Dickson来源&#xff1a;数据实战派Codex在一篇新论文中&#xff0c;OpenAI 的研究人员展示了 Codex 的详细信息&#xff0c;它是一种生成软件源代码的深度学习模型。Codex 可以为 OpenAI 和 GitHub 联合开发的 “AI 配对程序员” 工具 Copilot 提供支持。…

MSLicensing​中断远程桌面连接

---------------------------中断远程桌面连接---------------------------客户端无法建立跟远程计算机的连接。导致这个错误的可能的原因是:1) 远程计算机上的远程连接可能没有启用。2) 已超出远程计算机上的连接最大数。3) 建立连接时出现了一个网络错误。------------------…

如何恢复,迁移,添加, 删除 Voting Disks

如何恢复&#xff0c;迁移&#xff0c;添加, 删除 Voting Disks 恢复流程 在11gR2 之前&#xff0c;我们可以直接直接使用dd命令对voting disk进行备份。 DD示例 备份votedisk盘&#xff1a; [rootraw1 bin]# dd if/dev/raw/raw2 of/home/oracle/voting_disk.bak 恢复votedisk盘…

跨站脚本攻击(XSS)FAQ

原作者charlee、原始链接http://tech.idv2.com/2006/08/30/xss-faq/以及本声明。 该文章简单地介绍了XSS的基础知识及其危害和预防方法。Web开发人员的必读。译自 http://www.cgisecurity.com/articles/xss-faq.shtml。 简介 现在的网站包含大量的动态内容以提高用户体验&…

linux中的for命令

bash shell提供了for命令&#xff0c;用于创建通过一系列值重复的循环。每次重复使用系列中的一个值执行一个定义的命令集。for命令基本格式为&#xff1a;for var in listdo commandsdone1.读取列表中的值 #!/bin/bash #basic for command for test in a b c d e f doecho The…

终于有人把计算机视觉讲明白了 。。。

机器学习是目前比较热门的技术&#xff0c;包含深度学习、强化学习、对抗学习、对偶学习、迁移学习、分布式学习、以及元学习等内容。得益于大数据、大模型、大计算的发展&#xff0c;深度学习在计算机视觉、语音处理、自然语言方面相继取得了突破&#xff0c;达到甚至超过了人…

mysql启动与关闭(手动与自动)

手动管理mysql的启动与关闭 [rootmysql ~]# service mysql start --手动启动mysql Starting MySQL. SUCCESS! [rootmysql ~]# service mysql stop --手动关闭mysql Shutting down MySQL.. SUCCESS! [rootmysql ~]# mysqld --verbose --help --查看MySQL的默认参数的具体值 如果…

C#中抽象类和接口的区别

一、抽象类&#xff1a;抽象类是特殊的类&#xff0c;只是不能被实例化&#xff1b;除此以外&#xff0c;具有类的其他特性&#xff1b;重要的是抽象类可以包括抽象方法&#xff0c;这是普通类所不能的。抽象方法只能声明于抽象类中&#xff0c;且不包含任何实现&#xff0c;派…

echo向文件中写入

echo命令向一个文件写入内容的方法详解&#xff0c;感兴趣的朋友可以参考下。 覆盖型写法 (文件里原来的内容被覆盖)echo "aaa" > a.txtecho aaa > a.txt 添加型写法 (新内容添加在原来内容的后面&#xff09;echo "aaa" >> a.txtecho aaa >…

火山引擎向企业客户开放上万款抖音同款特效

你喜爱的抖音特效&#xff0c;在其他平台上也能使用了。 7月28日&#xff0c;抖音联合火山引擎举办特效技术开放日&#xff0c;首次披露抖音特效的生产流程和技术原理。活动中&#xff0c;火山引擎宣布已向企业客户开放了上万款抖音同款特效&#xff0c;包括猴哥、漫画惊讶脸…

5.1 python的缩进

python 并不像其他语言一样要求以大括号来分辨逻辑&#xff0c;仅仅使用 tab 键&#xff08;默认的四个空格&#xff09;来区分代码。比如 ainput(Please input a num: ) b0 if int(a)>b: print(a>0) else: print(a<0) 返回结果&#xff1a;当输入小于0时&#xff0c;…

centOS 自动安装php

centos下安装php#yum install -y php这个只安装PHP建议安装运行库及MySQL的支持#yum install -y php php-devel php-mysql如果你的系统是CentOS 5.6那么上面这条命令安装的是PHP 5.1,要安装 PHP 5.3则执行下面的命令:#yum install -y php53 php53-devel php53-mysql自动安装启动…

strcpy_s与strcpy的比較

strcpy_s和strcpy()函数的功能差点儿是一样的。strcpy函数&#xff0c;就象gets函数一样&#xff0c;它没有方法来保证有效的缓冲区尺寸&#xff0c;所以它仅仅能假定缓冲足够大来容纳要拷贝的字符串。在程序执行时&#xff0c;这将导致不可预料的行为。用strcpy_s就能够避免这…

抖音发布特效数据报告:每五个投稿有一个使用特效

7月28日&#xff0c;抖音与火山引擎联合举办特效技术开放日&#xff0c;首次发布了《抖音特效数据报告》。报告显示&#xff0c;2021上半年 &#xff0c;抖音平台平均每天上线超过100个新款特效&#xff1b;平均每五个投稿里&#xff0c;就有一个使用特效&#xff0c;特效已经成…

11G RAC 进程启动顺序

本文转自 张冲andy 博客园博客&#xff0c;原文链接&#xff1a;http://www.cnblogs.com/andy6/p/6041171.html &#xff0c;如需转载请自行联系原作者

使用 jQuery 简化 Ajax 开发

JSON 入门指南 <script languageJavaScript typetext/javascript> </script> <script languageJavaScript typetext/javascript> </script> 级别&#xff1a; 初级 廖 雪峰, 撰稿人 2008 年 8 月 22 日 JSON 即 JavaScript Object Natation&#xf…

AI一眼识别这是什么鸟 “我们来找茬”十级选手诞生

话说&#xff0c;你能看出这三只鹦鹉有什么不一样吗&#xff1f;脸盲如我&#xff0c;要使出玩“我们来找茬”的十级能力。AWSL&#xff0c;鹦鹉鹦鹉&#xff0c;傻傻分不清楚。结果&#xff0c;AI一顿操作猛如虎&#xff0c;进行了判断&#xff1a;左边的是桃面牡丹鹦鹉&#…

stm32时钟树讲解

1.管理好时钟&#xff0c;功耗才能更低

安全攻防实战:使用winlogonhack获取系统密码

安全攻防实战&#xff1a;使用winlogonhack获取系统密码S.S.F simeon摘要 在网络安全事件频发的今天&#xff0c;很多人都在抱怨&#xff0c;为什么我的系统被入侵了&#xff0c;我的主页被修改了&#xff0c;在入侵后&#xff0c;我采取了一些安全加固措施&#xff0c;可是没…

HTTP长连接服务器端推技术

服务器推送(Server Push) 推送技术的基础思想是将浏览器主动查询信息改为服务器主动发送信息。服务器发送一批数据&#xff0c;浏览器显示这些数据&#xff0c;同时保证与服务器的连接。当服务器需要再次发送一批数据时&#xff0c;浏览器显示数据并保持连接。以后&#xff0c;…

从AI、加密货币到火星任务,一种更强大、更稳定的存储设备

作者&#xff1a;贺佳来源&#xff1a;数据实战派所研究器件之一的显微镜图像&#xff0c;由两个尺寸相同的十字架组成&#xff0c;其中一个具有 IrMn3 柱&#xff0c;第二个仅由 Pt 组成。&#xff08;来源&#xff1a;西北大学和墨西拿大学&#xff09;美国西北大学和意大利墨…

CSDN - 进程结束后new出的内存会回收吗?

http://blog.csdn.net/stanjiang2010/article/details/5386647 关键词&#xff1a;内存回收

服务器ldap认证配置

1、yum -y install openldap-clients nss-pam-ldapd openldap 2、vim /etc/openldap/ldap.conf进入此配置文件添加如下2行 URI ldap://ldap.shuyun.com:389 BASE dcshuyun,dccom 3、配置自动创建家目录 authconfig --enableldap --enableldapauth --enablemkhomedir --…

使用 .NET 实现 Ajax 长连接

作者&#xff1a;http://www.cnblogs.com/cathsfz/Ajax的长连接&#xff0c;或者有些人所说的Comet&#xff0c;就是指以XMLHttpRequest的方式连接服务器&#xff0c;连接后服务器并非即时写入相应并返回。服务器会保持连接并等待一个需要通知客户端的事件&#xff0c;该事件发…

全员编程时代,人类高质量程序员应具备哪三大特质?

在美国公布的《新兴科技趋势报告》里&#xff0c;2045年&#xff0c;最保守预测也认为将会有超过1千亿的设备连接在互联网上&#xff0c;这些设备包括了移动设备、可穿戴设备、家用电器、医疗设备、工业探测器、监控摄像头、汽车&#xff0c;以及服装等。不久的将来&#xff0c…

[Linux] ubuntu 格式化u盘

$sudo fdisks -l 基本功&#xff0c;格式化命令&#xff0c;以格式化 /dev/sdb4 分区为例&#xff1a; $ sudo umount /dev/sdb4 # 必须先卸载该分区 # 格式化为 FAT 分区 $ sudo mkfs.vfat -F 32 /dev/sdb4 # -F 参数必须大写&#xff0c;参数有 12&#xff0c;16 和…