第6章 数组

本文详细介绍了Java中数组的声明、创建、初始化、赋值及使用,包括数组的默认值、长度获取、元素复制、匿名数组、变长参数、内存存储(堆)以及数组的查找、排序等操作。此外,还提到了foreach循环在遍历数组中的应用,以及二维数组的处理方法。最后讨论了数组的复制方法,如循环复制、System.arraycopy和clone方法。
摘要由CSDN通过智能技术生成

1.声明数组:dataType[ ] arrayRefVar;(数据类型[] 数组名;)
dataType arrayRefVar[];(数据类型 数组名[ ];//这种类型是正确的,但不推荐)

2.说明一个数组变量时并不在内存中给数组分配任何空间,仅创建一个引用数组的存储地址。如果变量没指向任何数组,则变量的值为null。除非数组已经创建,否则不能给它分配任何元素。声明数组变量之后,可以通过下面的语法用new操作符创建它:

arrayRefVar = n e w dataType[arraySize]; (数组名 = new数据类型[数组大小];)

这条语句做了两件事情:(1) 使用new dataType[arraySize];创建了一个数组。(2) 把新创建的数组引用赋值给arrayRefVar表示的变量。

3.声明一个数组变量、创建数组、将数组引用赋值给变量三件事可以合并在一个语句里,如下所示:

 dataType[] arrayRefVar = n e w dataType[arraySize];
 (数据类型[] 数组名=new数据类型[数组大小];

 dataType arrayRefVar[] = n e w dataType[arraySize];
 (数据类型 数组名[]=new数据类型[数组大小];

4.一个数组变量似乎存储了一个数组,实际上它只存储着数组的引用

5.给数组分配空间时,必须通过指定存储元素的个数来约定数组的大小。数组创建之后就不能再修改它的大小。可以使用arrayRefVar.length方法求得数组的大小。

6.数组创建后,它的元素赋予默认值,数值型基本数据类型默认值为0,char型为’\u0000’,boolean型为false。

7.Java有一个简洁的记法,叫做数组初始化(array initializer),可以将声明数组、创建数组和初始化
数组结合到一个语句中,其语法如下:

dataType[] arrayRefVar = {value0,value1,...,valuek};
 (数据类型[] 数组变量={直接量0, 直接量1,..., 直接量k};

8.数组初始化语句中不使用运算符new。使用数组初始化时,必须将声明、创建、初始化数组都放在一个语句中。将其分开会产生语法错误

9.处理数组:

  • 用随机数初始化数组
  • 输出数组
  • 对所有元素求和
  • 查找最大元素
  • 查找最大元素的最小下标值

10.JDK 1.5引进了一个新的for循环,称为foreach循环或增强的for循环,它不用下标变量就可以顺序地访问整个数组。

11.在Java中,可以使用赋值语句复制基本数据类型的变量,但不能复制数组。将一个数组变量赋值给另一个数组变量,实际上是将一个数组的引用复制给另一个变量,使两个变量指向同样的内存地址。

12.复制数组有三种方法:

  • 用循环语句逐个复制数组的元素。
  • 使用System类中的静态方法arraycopy。
  • 使用clone方法复制数组。

13.arraycopy的语法如下:

arraycopy(sourceArray, srcPos, targetArray, tarPos, length);

参数srcPos和tarPos分别指在源数组sourceArray和目标数组targetArray中的起始位置。从sourceArray复制到targetArray中的元素个数由参数length指定。

14.前面的语句使用下述语法创建数组:

new dataType[]{value0,value1,...,valuek};new数据类型[]{直接量0, 直接量1,..., 直接量k};

该数组没有显式的引用变量,这样的数组称为匿名数组(anonymous array)。

15.DJK 1.5 允许把类型相同但个数不定的参数传递给方法,方法中参数的声明如下:

typeName... parameterName

在方法声明中,如果发现类型后紧跟省略号(…),那么只能给方法指定变长参数,并且该参数必须是最后一个参数,任何常规参数必须在它之前
Java把变长参数当成数组,所以,可以把数组或个数不定的参数传递给变长参数。当用个数不定的参数引用方法时,Java创建一个数组并把参数传给它。

16.JVM将数组存储在一个叫做(heap)的内存区域中,堆用于动态内存分配,在堆中内存块可以按任意的顺序分配和释放

17.数组的查找
常见的算法:线性查找、二分查找

18.数组的排序
两种简单、直观的排序方法:选择排序和插入排序

19.Arrays类

20.二维数组中每一行本身是一个数组,因而各行就可以有不同的长度,这样的数组称为锯齿数组(ragged array)。
使用语法new int[5][]创建数组时,第一个下标必须给定。

21.声明二维数组的语法:

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

数据类型 数组名[][]; / /这种方式是正确的,但不推荐

22.求二位数组的长度
二维数组实际上是每个元素是一个一维数组的数组。数组x的长度是数组中元素的个数,可以用x.length 求得。元素 x[0],x[1], … ,x[x.length-1] 也是数组,它们的长度可以利用x[0].length,x[1].length,…,x[x.length-1].length求得。

23.处理二维数组

  • 用随机数初始化数组
  • 输出数组
  • 求所有元素的和
  • 对数组按列求和
  • 求哪一行和最大

24.在Java中,对任意的整数n都可以创建n维数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值