- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.10数组 (重点)
之前在讲解数据类型的时候,java的数据类型分为基本数据类型和引用数据类型,那么实际上数组就属于数据类型,所以,在这里就首先观察一下什么叫做引用。
3.10.1基本概念
例如,要定义100个整形变量,按照原始的方式是:i1,i2,i3 ...i100,这样做不好管理,所以,这样就可以使用数组来完成操作了,数组是一组相关的变量集合。
在java中可以使用如下的语法格式定义数组:
数据类型 数组名称 [] = new 数据类型 [长度]; 其中,也可以将以上的语法,变为以下的形式:
数据类型 [] 数组名称 = new 数据类型 [长度]; 只是,个人已经习惯与第一种写法,所以采用那种方式由个人自行决定。
范例:定义一个整形数组。
此时,数组已经声明完毕,那么下面就可以使用数组,使用的形式如下,
通过“数组名称[小标]”的形式进行访问。
在进行访问的时候一定要注意的是,下标从0开始,10个大小的数组,小标是0~9
范例:访问数组中的一个、第三个元素。
编译运行后:
因为现在的都是整形数据,默认的都是0,但是在进行数组操作的时候,一定要注意,数组的下标一定绝对不能超过数组的界限,如果超过规定的界限之后,将会出现以下错误:
编译运行后:
出现了数组越界异常“ArraylndexxoutofBoundsException”。
另外,在数组的操作中,为了方便起见,可以通过“数组.length”,取得一个数组的长度。
编译运行:
以上所进行的数组操作中,因为使用到了关键字“new”,所以在数组使用的时候已经为其开辟好了新的空间。
数组的使用分为两个部分:
声明数组:声明数组的时候一般都栈内存中声明的。
为数组开辟空间,使用关键词new进行空间的开辟,在堆内存中声明。
将以上的操作化成图形,如下所示:
所以有时候,如果为了更好的观察清楚以上的图形,就可以将数组的使用分为两个步骤:
声明一个数组:数据类型 数组名称[] = null; //因为数组是引用的数据类型,引用的数据类型默认值都是null。
开辟数组:数组名称 = new 数据类型[长度]; //使用关键字new完成。
编译运行:
数组声明的时候,所有的内容都是默认值0,下面想可以声明一个3个元素的数组,之后为数组里的每一个元素设置的内容都是是奇数,并通过此程序,观察内存的分配操作。
编译运行:
以下是定义数组的步骤:
虽然现在操作的是数组名称,但是实际上是改变的都是堆内存中的内容。所以这样的操作在java中就称为引用数据类型。
如果现在假设把栈内存空间保存的内容当作一个人的名字,那么堆内存实际上就表示具体的一个人,也就是说实际上在栈中存放的只是一个标记而已。
所以此时,可以为一个堆内存空间同时设置多个栈的引用。
之后,由数组y修改堆空间的内容。
编译运行后:
输出的时候发现,现在输出的是x,但是x[2]的内容已经改变了。因为x和y指向了同一个空间。那么这样的操作就表示引用数据类型的操作,也可以成为引用传递。
重点回顾
数组属于引用数据类型,使用的时候需要开辟内存空间。
数组的定义格式:
声明时直接开辟内存空间:
数据类型 数组名称[] = new 数据类型 [长度]; 数据类型 [] 数组名称 = new 数据类型 [长度]; 分部声明:
声明数组:数据类型 数组名称[] = null; 实例化数组:数组名称 = new 数据类型[]; 关键字new只要一出现,则肯定表示数据类型是引用数据类型,要进行堆栈空间开辟。
范例:声明一个数组。
编译运行:
开辟的内容都使用默认值表示,如果要想为数组的元素赋值,则需要通过下标的方式访问。
编译运行后:
开辟栈内存空间:
int score [] = null; 开辟栈内存空间的意义在于,就相当于表示一个人的名字。
开辟堆内存:
score = new int[3]; 数组只有开辟了堆内存空间以后才可以使用。
之前的代码,数组的操作属于动态初始化,因为在开辟数组的时候并不知道数组中的具体内容是多少,而只是使用了默认值表示,所以,此时可以按照如下的格式进行静态初始化操作。
数据类型 数组名称[] = {若干取值........}; 范例:使用静态初始化操作。
编译运行:
之前的数组都属于一维数组,在数组中使用二维数组。
动态初始化:
数据类型 数组名称[] = new 数据类型[长度]; 静态初始化:
数据类型 数组名称[] = {{11,2,3},{24,54,45},};
范例:二维数组
编译运行:
Arrays(理解)
Arrays是一个与数组操操作相关的类,可以使用此类进行数组的排序操作。
编译运行后:
一维数组
1
文档评论(0)