🐰数组
2021-3-2
| 2023-8-3
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
 
定义一个数组类型的变量,使用数组类型“类型[]”,例如,int[]。和单个基本类型变量不同,数组变量初始化必须使用new int[5]表示创建一个可容纳5个int元素的数组。
Java的数组有几个特点:
  • 数组所有元素初始化为默认值,整型都是0,浮点型是0.0,布尔型是false
  • 数组一旦创建后,大小就不可改变。
要访问数组中的某一个元素,需要使用索引,数组索引从0开始
可以使用赋值语句修改数组中的某一个元素,例如ns[1] = 79;
可以用数组变量.length获取数组大小:
 
数组是引用类型,在使用索引访问数组元素时,如果索引超出范围,运行时将报错:
 
也可以在定义数组时直接指定初始化的元素,这样就不必写出数组大小,而是由编译器自动推算数组大小
还可以进一步简写为:
 
 
数组大小变了吗?看上去好像是变了,其实根本没变。
对于数组ns来说,执行ns = new int[] { 68, 79, 91, 85, 62 };时,它指向一个5个元素的数组:
notion image
执行ns = new int[] { 1, 2, 3 };时,它指向一个新的3个元素的数组:
notion image
 
 

字符串数组

如果数组元素不是基本类型,而是一个引用类型,那么,修改数组元素会有哪些不同?
对于String[]类型的数组变量names,它实际上包含3个元素,但每个元素都指向某个字符串对象:
notion image
names[1]进行赋值,例如names[1] = "cat";,效果如下:
notion image
这里注意到原来names[1]指向的字符串"XYZ"并没有改变,仅仅是将names[1]的引用从指向"XYZ"改成了指向"cat",其结果是字符串"XYZ"再也无法通过names[1]访问到了。
 
 
 

多维数组

ns在内存中的结构如下:
notion image
arr0指向的数组就是{ 1, 2, 3, 4 }
访问二维数组的某个元素需要使用array[row][col],例如:
二维数组的每个数组元素的长度并不要求相同:
notion image
 
要打印一个二维数组,可以使用两层嵌套的for循环:
或者使用Java标准库的Arrays.deepToString()
 
三维数组就是二维数组的数组。可以这么定义一个三维数组:
它在内存中的结构如下:
notion image
 
 
 
 

遍历数组

数组的每个元素都可以通过索引来访问,使用标准的for循环可以完成一个数组的遍历:
 
还可以使用for each循环,直接迭代数组的每个元素:
 

打印数组内容

直接打印数组变量,得到的是数组在JVM中的引用地址:
这并没有什么意义,因为希望打印的是数组的元素内容,因此使用for each循环来打印它:
使用for each循环打印也很麻烦,Java标准库提供了Arrays.toString(),可以快速打印数组内容:
 

数组排序

每一轮循环后,最大的一个数被交换到末尾,因此,下一轮循环就可以“刨除”最后的数,每一轮循环都比上一轮循环的结束位置靠前一位。
 
Java的标准库已经内置了排序功能,只需要调用JDK提供的Arrays.sort()就可以排序:
  • Java
  • 字符串命令行参数
    目录