10.数组
数组可以看成是多个相同类型数据的组合,实现对这些数据的统一管理,例如:
{1,10,30,100}
{"apple","orange","banana"}
10.1 一维数组
10.1.1数组的定义和创建
在创建数组的同时就为数组元素分配空间并赋值,
数组元素:数组中的每一个数据,称为数组的一个元素(element)
数组中的元素可以是任何数据类型,包括基本数据类型和引用类型
数组中元素的个数,称为数组的长度(length)
10.1.2 数组的定义和创建
数组类型 数组名 [ ]
或
数组类型[ ] 数组名
指定数组长度,数组长度一经定义,固定不变。
数组的长度(length)必须>=0;
length为只读,不能被赋值。
数组名 = new 数据元素类型[ 元素个数 ]
数组是存储多个相同类型变量的对象。数组的所有元素保存在堆内存中。 创建一个数组就是在堆中创建一个数组对象。 数组创建后立即拥有默认值。 1、整数类型数组的默认值是0 2、String类型定义的数组,默认值是null 3、char类型定义的数组,默认值是0对应的字符 4、浮点类型定义的数组,默认值是0.0 5、boolean类型数组的默认值是false 索引从0开始。 连续分配
10.1.3 数组的初始化
在创建数组的同时就为数组元素分配空间并赋值
数组类型 数组名[ ] = {元素1,元素2,…}
数组类型 数组名[ ] = new 数据类型[ ]{元素1,元素2,…}
int ages1[] = {10,20,30};
int ages2[] = new int[]{10,20,30};
10.1.4 数组赋值
Java中,数组元素的下标从0开始;
元素的下标可以是整型常量或整型表达式;
数组的查询效率高,可以通过下标进行对数组的定位检索。
ages1[1] = 200; //通过赋值语句修改数组的内容
System.out.println("ages1[0]\t"+ages1[0]);
System.out.println("ages1[1]\t"+ages1[1]);
System.out.println("ages1[2]\t"+ages1[2]);
10.1.5 数组的遍历,
通过下标和数组的length(长度)遍历数组。小标【0,length-1】
int ages[] = {10,20,30};
for (int i = 0; i <ages.length ; i++) {
System.out.println("ages["+i+"]:\t"+ages[i]);
}
增强for
for(迭代的数据类型 变量名:数组(可迭代的对象)){}
int ages[] = {10,20,30};
for ( int age : ages) {
System.out.println(age);
}
10.1.6 数组的异常
当访问数组是下标小于0 或者大于等于数组的长度则会出现如下异常
10.2多维数组
10.2.1 数组的声明、创建
数组类型 数组名 [ ] [ ]
数组类型[ ] [ ] 数组名
数组类型[ ] 数组名 [ ]
ages = new int[][]{
{10,20},
{10,20,30}, };
int[][] ages2 = {
{10,20,30},
{11,21,31},
};
int[][] ages3 = {
{10,20,30},
{11,21,31,41},
};
10.2.2 二维数组的遍历
//二维数组遍历
for (int i = 0; i < ages3.length; i++) {
// int[] classAges = ages3[i];
for (int j = 0; j <ages3[i].length ; j++) {
System.out.print("ages3[i][j]:"+ages3[i][j]+"\t");
}
System.out.println();
}
10.3 数组练习
已知两个一维数组:{1,2,3,4,5}和{6,7,8},将这两个一维数组合并成一个一维数组{1,2,3,4,5,6,7,8}。
生成一个4*6的二维整型数组,使用随机数填充,遍历输出该数组的所有值,并且找出最大值。
import java.util.Random;
import java.util.Scanner;
/**
* 项目: java1112
* 创建时间:2020/11/14 11:31
* 作者 :jshand
* 描述 :数组的练习
*/
public class Test4 {
public static void main(String[] args) {
// 1 已知两个一维数组:{1,2,3,4,5}和{6,7,8},将这两个一维数组合并成一个一维数组{1,2,3,4,5,6,7,8}。
int[] arr1 = {1,2,3,4,5};
int[] arr2 = {6,7,8};
int[] newArr = new int[arr1.length + arr2.length ];
for (int i = 0; i < arr1.length; i++) {
newArr[i] = arr1[i];
}
for (int i = 0; i < arr2.length; i++) {
newArr[arr1.length+i] = arr2[i];
}
for (int i = 0; i < newArr.length; i++) {
System.out.println("newArr[i]\t"+newArr[i]);
}
//生成一个4*6的二维整型数组,使用随机数填充,遍历输出该数组的所有值,并且找出最大值
Random random = new Random();
int[][] rndNums = new int[4][6];
for (int i = 0; i < rndNums.length ; i++) {
for (int j = 0; j <rndNums[i].length ; j++) {
rndNums[i][j] = random.nextInt(100);
}
}
int max = 0;
for (int i = 0; i < rndNums.length ; i++) {
for (int j = 0; j <rndNums[i].length ; j++) {
if(rndNums[i][j]>max){
max = rndNums[i][j];
}
}
}
System.out.println("随机最大值max:"+max);
}
}
10.4 数组的排序
