《Java黑皮书基础篇第10版》 第7章【笔记】

第七章

7.1引言
7.2 数组的基础知识

声明数组变量

elementType[] arrayRefVar

创建数组

elementType[] arrayRefVar = new elementType[arraySize];

给数组元素赋值

arrayRefVar[index] = value;

数组初始化(1行代码完成以上3条内容)

elementType[] arrayRefVar = {value0, value1, ..., valuek};

访问数组元素

arrayRefVar[index];

获取数组大小

arrayRefVar.length

一个数组变量看起来是储存了一个数组,但它实际上储存的是指向该数组的引用:一个含有index个元素数组的引用变量

创建数组以后的元素会被赋予默认值,数值型基本数据类型默认值0,char默认\u0000,boolean默认false

数组经常和for循环用在一起,因为数组中每个元素的类型都是一样的,而且我们明确的知道数组的个数

foreach循环顺序遍历数组,以下代码可以读做,对数组arrayRefVar中的每个元素element进行如下操作

for (elementType element: arrayRefVar) {
  //process the element
}
7.3 示例学习 分析数字
7.4 示例学习 一副牌
7.5 数组的复制

赋值语句可以复制基本数据类型的变量,但是不能复制数组,赋值语句只改变数组变量的指向,无法被指向的数组会被JVM垃圾回收

赋值数组目前有2种办法

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

System.arraycopy(sourceArray, srcPos, targetArray, tarPos, length)
7.6 将数组传递给方法

当将一个数组传递给方法时,数组的引用被传给方法。

将数组传递给方法,虽然数组和方法在栈中拥有不同的储存地址,但是他们所储存的都是数组的引用,真正的数组在堆中(数组在 Java 中是对象,JVM 将对象存储在一个叫堆的内存区域中,用于动态内存分配),改变了堆中的数组,那么数组的引用也就都会变化

7.7 从方法中返回数组

当从方法中返回一个数组时,数组的引用被返回。

可以使用reverse方法反转数组

int[] list1 = {1,2,3,4,5,6}; 
int[] list2 = reverse(list1);
7.8 示例学习:统计每个字母出现的次数
7.9 可变长参数列表

在方法的参数列表中,可以使用typeName… paraterName来表示数量可变的参数数组,一个方法只能有一个可变参数,且常规参数必须在可变参数之前。

7.10 数组的查找

线性查找法:相当于遍历数组

二分查找法:在有序数组中使用二分法进行查找

7.11 数组的排序

选择排序:不断找到数列中最小的数字,把它交换到数列的第1,2,3,n位

7.12 Arrays类

排序

sort(arrayName)
sort(arrayName, searchStartIndex, searchEndIndex)
parallelSort(arrayName)
parallelSort(arrayName, searchStartIndex, searchEndIndex)

查找

binarySearch(arrayName, key)

相等

equals(array1, array2)

填充

fill(arrayName, fillContent)
fill(arrayName, fillStartIndex, fillEndIndex, fillContent)

打印

toString(arrayName)
7.13命令行参数

可以向main方法的args数组传递参数

给main方法传递参数时,解释器会创建一个如下的数组(如果运行程序时没有传递字符串 ,那么使用new String[0] 创建数组。在这种情况下,该数组是长度为0的空教组。args是对这个空数组的引用。因此,args不是null, 但是args.length是0。)

args = new String[n];

注:在命令行中,除含有空格外,字符串不需要使用双引号标注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值