目录
数组
基本介绍
- 数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型
- 即:数(数据)组(一组)就是一组数据
public class Array01 {
//编写一个main函数
public static void main(String[] args) {
//一个养鸡场有 6 只鸡,它们的体重分别是 3kg,5kg,1kg,3.4kg,2kg,50kg 。
//请问这六只鸡的总体重是多少?平均体重是多少? 请你编一个程序
//
//思路分析
//1. 定义六个变量 double 求和
//2. 平均体重 = 总体重 / 6
//3. 分析传统实现的方式问题:6->600 - 麻烦
//4. 引出新的技术->数组
// double hen1 = 3;
// double hen2 = 5;
// double hen3 = 1;
// double hen4 = 3.4;
// double hen5 = 2;
// double hen6 = 50;
// double totalWeight = hen1 + hen2 + hen3 + hen4 + hen5 + hen6;
// double avgWeight = totalWeight / 6;
// System.out.println("总体重=" + totalWeight);
// System.out.println("平均体重=" + avgWeight);
//用数组来解决问题
//定义一个数组
//1. double[] 表示是 double类型的数组,数组名 hens
//2. {3, 5, 1, 3.4, 2, 50} 表示数组的值/元素,依次表示数组的第几个元素
//
double[] hens = {3, 5, 1, 3.4, 2, 50};
//遍历数组 得到数组的所有元素的和:使用for循环
//1. 我们可以通过 hens[下标] 来访问数组的元素,
// 下标从0开始编号的,比如第一个元素就是 hens[0]
// 第2个元素就是 hens[1] ,依此类推
//2. 通过for循环就可以循环的访问数组的元素/值
//3. 使用一个变量 totalWeight 将各个元素累积
System.out.println("===使用数组解决===");
//在java中,可以通过 数组名.length 得到数组的大小/长度
System.out.println("数组的长度=" + hens.length);
double totalWeight = 0;
for (int i = 0; i < hens.length; i++) {
//System.out.println("第" + (i+1) + "个元素的值=" + hens[i]);
totalWeight += hens[i];
}
System.out.println("总体重=" + totalWeight);
System.out.println("平均体重=" + (totalWeight / hens.length));
}
}
数组的使用
使用方式1-动态初始化
数组的定义:
数据类型 数组名[] = new 数据类型[大小] - 另外:[]可以写在数据类型后面,也可以写在数组名后面
int a[] = new int[5];//创建了一个数组,名字为a,存放5个int
- 说明:这是定义数组的一种方法
数组的引用(使用/访问/获取数组元素):
数组名[下标/索引/index] 比如:你要使用a数组的第3个数 - a[2]
注意:数组的下标从0开始
import java.util.Scanner;
public class Array02 {
//编写一个main函数
public static void main(String[] args) {
//演示 数据类型 数据名[] = new 数据类型[大小]
//要求:循环输入5个成绩,保存到double数组,并输出
//步骤
//1. 创建一个 double 数组,大小为5
//(1)第一种动态分配方式
double scores[] = new double[5];
//循环输入
//scores.length 表示数组的大小/长度
Scanner myScanner = new Scanner(System.in);
for (int i = 0; i < scores.length; i++) {
System.out.println("请输入第" + (i+1) + "个元素的值");
scores[i] = myScanner.nextDouble();
}
//输出,遍历数组
System.out.println("当前数组的元素/值的情况如下:");
for (int i = 0; i < scores.length; i++) {
System.out.println("第" + (i+1) + "个元素的值=" + scores[i]);
}
}
}
使用方式2-动态初始化
先声明数组:
语法:数据类型 数组名[]; 也可以 数据类型[] 数组名;
int a[]; 或者 int[] a;
创建数组:
语法:数组名 = new 数据类型[大小]
a = new int[10];
import java.util.Scanner;
public class Array02 {
//编写一个main函数
public static void main(String[] args) {
//演示 数据类型 数据名[] = new 数据类型[大小]
//要求:循环输入5个成绩,保存到double数组,并输出
//步骤
//1. 创建一个 double 数组,大小为5
//(2)第二种动态分配方式,先声明数据,再 new 分配空间
double scores[];//声明数组
scores = new double[5];//分配了内存空间,可以存放数据
//循环输入
//scores.length 表示数组的大小/长度
Scanner myScanner = new Scanner(System.in);
for (int i = 0; i < scores.length; i++) {
System.out.println("请输入第" + (i+1) + "个元素的值");
scores[i] = myScanner.nextDouble();
}
//输出,遍历数组
System.out.println("当前数组的元素/值的情况如下:");
for (int i = 0; i < scores.length; i++) {
System.out.println("第" + (i+1) + "个元素的值=" + scores[i]);
}
}
}
使用方式3-静态初始化
初始化数组:
语法:数据类型 数组名[] = {元素值1, 元素值2, …};
int a[] = {2, 5, 6, 7, 89, 90, 34, 56};//如果知道数组有多少元素,可以在[]内写上具体值
public class Array01 {
//编写一个main函数
public static void main(String[] args) {
//一个养鸡场有 6 只鸡,它们的体重分别是 3kg,5kg,1kg,3.4kg,2kg,50kg 。
//请问这六只鸡的总体重是多少?平均体重是多少? 请你编一个程序
//用数组来解决问题
//定义一个数组
//1. double[] 表示是 double类型的数组,数组名 hens
//2. {3, 5, 1, 3.4, 2, 50} 表示数组的值/元素,依次表示数组的第几个元素
//
double[] hens = {3, 5, 1, 3.4, 2, 50};
//遍历数组 得到数组的所有元素的和:使用for循环
//1. 我们可以通过 hens[下标] 来访问数组的元素,
// 下标从0开始编号的,比如第一个元素就是 hens[0]
// 第2个元素就是 hens[1] ,依此类推
//2. 通过for循环就可以循环的访问数组的元素/值
//3. 使用一个变量 totalWeight 将各个元素累积
System.out.println("===使用数组解决===");
//在java中,可以通过 数组名.length 得到数组的大小/长度
System.out.println("数组的长度=" + hens.length);
double totalWeight = 0;
for (int i = 0; i < hens.length; i++) {
//System.out.println("第" + (i+1) + "个元素的值=" + hens[i]);
totalWeight += hens[i];
}
System.out.println("总体重=" + totalWeight);
System.out.println("平均体重=" + (totalWeight / hens.length));
}
}
数组使用注意事项和细节
- 数组是多个相同类型数据的组合,实现对这些数据的统一管理
public class ArrayDetail {
//编写一个main函数
public static void main(String[] args) {
//1. 数据是多个相同类型数据的组合,实现对这些数据的统一管理
//int arr1[] = {1, 2, 3, 60}//ok
//int arr1[] = {1, 2, 3, 60, 1.1}//error double->int
//int arr1[] = {1, 2, 3, 60, "hello"}//error Sring->int
//double arr2[] = {1.1, 2.2, 3, 60};//ok
double arr2[] = {1.1, 2.2, 3, 60.6, 100};//ok int -> double 自动转换
}
}
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用
public class ArrayDetail {
//编写一个main函数
public static void main(String[] args) {
//2. 数组中的元素可以是任意数据类型,包括基本类型和引用类型,但是不能混用
String arr3[] = {"北京", "jack", "milan"};//引用类型
}
}
- 数组创建后,如果没有赋值,有默认值:int - 0;short - 0;byte - 0;long - 0;float - 0.0;double - 0.0;char \u0000;boolean false;String null
public class ArrayDetail {
//编写一个main函数
public static void main(String[] args) {
//3. 数组创建后,如果没有赋值,会有默认值
//int 0,short 0,byte 0,long 0,float 0.0,double 0.0,char \u0000
//boolean false,String null
short arr4[] = new short[3];
System.out.println("====数组4====");
for (int i = 0; i < arr4.length; i++) {
System.out.println(arr4[i]);
}
}
}
-
使用数组的步骤:
a)声明数组并开辟空间
b) 给数组各个元素赋值
c) 使用数组 -
数组的下标是从0开始的
-
数组下标必须在指定范围内使用,否则报错:下标越界异常,比如:int arr[] = new int[5];则有效的下标为 0-4
public class ArrayDetail {
//编写一个main函数
public static void main(String[] args) {
//6. 数组下标必须指定范围内使用,否则报错:下标越界异常
//比如:int arr[] = new int[5]; 则有效下标为 0-4
//即数组的下标/索引 最小为0 最大为数组长度-1
int arr5[] = new int[5];
System.out.println(arr5[5]);//数组越界
}
}
- 数组属引用类型,数组型数据是对象(object)
数组应用案例
public class ArrayExercise01 {
//编写一个main函数
public static void main(String[] args) {
//1. 创建一个char类型的26个元素的数组,分别放置'A'-'Z'
//使用for循环访问所有元素并打印出来
//提示:char类型数据运算 'A' + 1 -> 'B'
//
//思路分析
//1. 定义一个 数组 char[] chars = new char[26];
//2. 因为'A' + 1 = 'B' 类推,所有使用for来赋值
//3. 使用for循环访问所有元素
char chars[] = new char[26];
for (int i = 0; i < chars.length; i++) {//循环26次
chars[i] = (char)('A' + i);//由于得到的是int类型,因此需要强转成char类型
System.out.print(chars[i] + " ");
}
}
}
public class ArrayExercise02 {
//编写一个main函数
public static void main(String[] args) {
//2. 请求出一个数组int[]的最大值 {4, -1, 9, 10, 23} 并得到对应的下标
//思路分析
//1. 先定义一个int数组
//2. 假定一个最大值为max = arr[0]
//3. 然后遍历比较
int arr[] = {4, -1, 9, 10, 23};
int max = arr[0];
int maxIndex = 0;//得到对应下标,定义存储下标
for (int i = 1; i < arr.length; i++) {
if (max < arr[i]) {
max = arr[i];
maxIndex = i;
}
}
System.out.println("最大值=" + max);
System.out.println("对应的下标=" + maxIndex);
}
}
数组赋值机制
- 基本数据类型赋值,这个值就是具体的数据,而且相互不影响
int n1 = 2; int n2 = n1;
- 数组在默认情况下是引用传递,赋的值是****地址
int arr1[] = {1, 2, 3};
int arr2[] = arr1;
- 注意:当arr2指向arr1的地址的时候,arr2原先如果开辟出了一块空间,则那块空间会废弃,被销毁
数组拷贝
public class ArrayCopy {
//编写一个main函数
public static void main(String[] args) {
//编写代码 实现数组拷贝(内容复制)
//将int arr1[] = {10, 20, 30};拷贝到 arr2数组
//要求:数据空间是独立的
//思路:
//创建一个新的数组arr2,开辟一个新的数据空间
//大小跟 arr1.length 相同
int arr1[] = {10, 20, 30};
int arr2[] = new int[arr1.length];
//遍历arr1,把每个元素拷贝到arr2对应的元素位置
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
//输出arr1
System.out.println("===arr1的值===");
for (int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i]);
}
//修改arr2的值
arr2[0] = 100;
System.out.println("===arr2的值===");
for (int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i]);
}
}
}
数组反转
public class ArrayReverse {
//编写一个main函数
public static void main(String[] args) {
//需求:把数组的元素内容翻转
//arr {11,22,33,44,55,66} -> {66,55,44,33,22,11}
//思路
//规律:
//1. 把arr[0] 和 arr[5] 进行交换 {66,22,33,44,55,11}
//2. 把arr[1] 和 arr[4] 进行交换 {66,55,33,44,22,11}
//3. 把arr[2] 和 arr[3] 进行交换 {66,55,44,33,22,11}
//4. 一共要交换 3 次 = arr.length / 2
//5. 每次交换时,对应的下标是 arr[i] 和 arr[arr.length - 1 - i]
//
//优化
//老师的写法:
int arr[] = {11, 22, 33, 44, 55, 66};
int temp = 0;
int len = arr.length;
for (int i = 0; i < len / 2; i++) {
temp = arr[len - 1 - i];//保存
arr[len - 1 - i] = arr[i];
arr[i] = temp;
}
//打印
System.out.println("===翻转后数组===");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//自己的写法,将其倒着传给另一个数组
//然后再赋给原先的数组 可以直接指向arr2 即 arr = arr2
int arr[] = {11, 22, 33, 44, 55, 66};
int arr2[] = new int[arr.length];
for (int i = arr.length - 1; i >= 0; i--) {
//可以增加一个循环变量 j -> 0 -> 5
arr2[arr.length - 1 - i] = arr[i];
}
//让arr 指向arr2 的数据空间,此时 arr 原来的数据空间就没有变量引用,会被当作垃圾,销毁
arr = arr2;
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
数组添加/扩容
import java.util.Scanner;
public class ArrayAdd {
//编写一个main函数
public static void main(String[] args) {
//要求:实现动态的给数组添加元素效果,实现对数组扩容。ArrayAdd.java
//1) 原始数组使用静态分配 int[] arr = {1,2,3}
//2) 增加的元素 4,直接放在数组的最后 arr = {1,2,3,4}
//思路分析
//1. 定义初始数组 int arr[] = {1,2,3};
//2. arr[3] = 4;//error 由于原先的下标最大为2,这样就会显示下标越界
//3. 定义一个新的数组 int arrNew = new int[arr.length+1];
//4. 遍历arr 数组,依次将arr的元素拷贝到 arrNew 数组
//5. 将 4 赋给 arrNew[arrNew.length - 1] = 4;//把4赋给 arrNew 的最后一个元素
//6. 让arr 指向 arrNew ,那么原来的arr数组就会被销毁
int arr[] = {1, 2, 3};
int arrNew[] = new int[arr.length + 1];
for (int i = 0; i < arr.length; i++) {
arrNew[i] = arr[i];
}
//把4赋给arrNew的最后一个元素
arrNew[arrNew.length - 1] = 4;
//让 arr 指向 arrNew
arr = arrNew;
//输出arr 看看效果
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
}
}
import java.util.Scanner;
public class ArrayAdd02 {
//编写一个main函数
public static void main(String[] args) {
//要求:实现动态的给数组添加元素效果,实现对数组扩容。ArrayAdd.java
//1) 原始数组使用静态分配 int[] arr = {1,2,3}
//2) 增加的元素 4,直接放在数组的最后 arr = {1,2,3,4}
//3) 用户可以通过如下方法来决定是否继续添加,添加成功,是否继续?y/n
//思路分析
//1. 定义初始数组 int arr[] = {1,2,3};
//2. arr[3] = 4;//error 由于原先的下标最大为2,这样就会显示下标越界
//3. 定义一个新的数组 int arrNew = new int[arr.length+1];
//4. 遍历arr 数组,依次将arr的元素拷贝到 arrNew 数组
//5. 将 4 赋给 arrNew[arrNew.length - 1] = 4;//把4赋给 arrNew 的最后一个元素
//6. 让arr 指向 arrNew ,那么原来的arr数组就会被销毁
//7. 创建一个 Scanner 可以接受用户输入
//8. 因为用户什么时候退出,不确定,使用do-while + break 来控制
Scanner myScanner = new Scanner(System.in);
int arr[] = {1, 2, 3};
do {
int arrNew[] = new int[arr.length + 1];
for (int i = 0; i < arr.length; i++) {
arrNew[i] = arr[i];
}
System.out.println("请输入你要添加的元素(int类型)");
int addNum = myScanner.nextInt();
//把addNum赋给arrNew的最后一个元素
arrNew[arrNew.length - 1] = addNum;
//让 arr 指向 arrNew
arr = arrNew;
//输出arr 看看效果
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
//问用户是否继续
System.out.println("是否继续添加:y/n");
char key = myScanner.next().charAt(0);
if (key == 'n') {//如果输入n,就结束
break;
}
} while (true);
System.out.println("你退出了添加...");
}
}
排序
基本介绍
- 排序是将多个数据,依指定的顺序进行排列的过程
排序的分类:
- 内部排序
- 指将需要处理的所有数据都加载到内部存储器中进行排序,包括(交换式排序法、选择式排序法和插入式排序法)
- 外部排序法
- 数据量过大,无法全部加载到内存中,需要借助外部存储进行排序,包括(合并排序法和直接合并排序法)
冒泡排序法
- 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒
public class BubbleSort {
//编写一个main函数
public static void main(String[] args) {
//冒泡排序 - 升序
//化繁为简,先死后活
/*
数组 [24,69,80,57,13]
第 1 轮排序: 目标把最大数放在最后
第 1 次比较[24,69,80,57,13]
第 2 次比较[24,69,80,57,13]
第 3 次比较[24,69,57,80,13]
第 4 次比较[24,69,57,13,80]
*/
int arr[] = {24, 69, 80, 57, 13};
for (int j = 1; j < arr.length; j++) {
for (int i = 0; i < arr.length - j; i++) {
if (arr[i] > arr[i+1]) {
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
查找
- 在java中,我们常用的查找有两种
- 顺序查找
- 二分查找
import java.util.Scanner;
public class SeqSearch {
//编写一个main函数
public static void main(String[] args) {
//) 有一个数列:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王猜数游戏:
//从键盘中任意输入一个名称,判断数列中是否 包含此名称【顺序查找】
//要求: 如果找到了,就提示找到,并给出下标值
//思路分析
//1. 定义一个字符串数组
//2. 接受数组输入,遍历数组,逐一比较,如果发现有,则提示信息,并退出
String names[] = {"白眉鹰王", "金毛狮王", "紫衫龙王", "青翼蝠王"};
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入名字");
String findName = myScanner.next();
//遍历数组,逐一比较
//
int index = -1;
for (int i = 0; i < names.length; i++) {
if (findName.equals(names[i])) {
System.out.println("恭喜你找到 " + findName);
System.out.println("下标为 " + i);
//把i保存到index
index = i;
break;//退出
}
}
if (index == -1) {
System.out.println("没有找到");
}
}
}
多维数组-二维数组
二维数组的使用
public class TwoDimensionalArray01 {
//编写一个main函数
public static void main(String[] args) {
//请用二维数组输出如下图形
//0 0 0 0 0 0
//0 0 1 0 0 0
//0 2 0 3 0 0
//0 0 0 0 0 0
//二维数组:
//1. 从定义形式上看 int[][]
//2. 原来的一维数组的每个元素是一维数组,就构成了二维数组
int arr[][] = {{0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0},
{0, 2, 0, 3, 0, 0}, {0, 0, 0, 0, 0, 0}};
//关于二维数组的关键概念
//(1)
System.out.println("二维数组的元素个数=" + arr.length);
//(2)二维数组的每个元素是一维数组,所以如果需要得到每个一维数组的值
// 还需要再次遍历
//(3)如果我们要访问第(i+1)个一维数组的第(j+1)个值,arr[i][j]
// 举例:访问3 - arr[2][3]
System.out.println(arr[2][3]);
//输出二维图形
for (int i = 0; i < arr.length; i++) {//遍历二维数组的每个元素
//遍历二维数组的每个元素(数组)
//arr[i] 表示二维数组的第 i+1 个元素,比如 arr[0]:二维数组的第一个元素
//arr[i].length 得到对应的每个一位数组的长度
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
使用方式1:动态初始化
语法:类型[][] 数组名 = new 类型[大小][大小]
比如:int a[][] = new int[2][3];
public class TwoDimensionalArray02 {
//编写一个main函数
public static void main(String[] args) {
//1.
int arr[][] = new int[2][3];
arr[1][1] = 8;
//遍历arr数组
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {//对每个一维数组遍历
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
- 二维数组在内存中的存在形式
使用方式2:动态初始化
先声明:类型 数组名[][];
再定义(开辟空间):数组名 = new 类型[大小][大小]
赋值(有默认值,比如 int 类型就是0)
public class TwoDimensionalArray02 {
//编写一个main函数
public static void main(String[] args) {
//2.
//int arr[][];//声明二维数组
//arr = new int[2][3];//再开辟空间
arr[1][1] = 8;
//遍历arr数组
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {//对每个一维数组遍历
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
使用方式3:动态初始化-列数不确定
public class TwoDimensionalArray03 {
//编写一个main函数
public static void main(String[] args) {
//需求:动态创建一个二维数组
//一共有三个一维数组,每个一维数组的元素是不一样的
int arr[][] = new int[3][];//不确定列数就不写 ,创建 二维数组,但是只是确定了一维数组的个数
//每个一维数组还没有开数据空间
for (int i = 0; i < arr.length; i++) {//遍历arr每个一维数组
//给每个一维数组开空间 new
//如果没有给一维数组 new ,那么arr[i] 就是 null
arr[i] = new int[i + 1];
//遍历一维数组,并给一维数组的每个元素赋值
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = i + 1;//赋值
}
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
使用方式4:静态初始化
定义 类型 数组名[][] = {{值1, 值2…}, {值1, 值2…}, {值1, 值2…}};
比如:int[][] arr = {{1, 1, 1}, {8, 8, 9}, {100}};
解读:
- 定义了一个二维数组arr
- arr有三个元素(每个元素都是一维数组)
- 第一个一维数组有3个元素,第二个一维数组有3个元素,第三个一维数组有1个元素
public class TwoDimensionalArray04 {
//编写一个main函数
public static void main(String[] args) {
int arr[][] = {{1,1,1}, {0,0,0}, {100}};
}
}
二维数组的应用案例
- int arr[][]={{4,6},{1,4,5,7},{-2}}; 遍历该二维数组,并得到和
public class TwoDimensionalArray05 {
//编写一个main函数
public static void main(String[] args) {
//需求:int arr[][] = {{4,6}, {1,4,5,7}, {-2}};
//遍历该二维数组,并得到和
int sum = 0;
int arr[][] = {{4,6}, {1,4,5,7}, {-2}};
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
sum += arr[i][j];
}
}
System.out.println(sum);
}
}
- 使用二维数组打印一个 10 行杨辉三角 YangHui.java
public class YangHui {
//编写一个main函数
public static void main(String[] args) {
//使用二维数组打印一个10行的杨辉三角
//规律
//1. 第一行有 1 个元素, 第 n 行有 n 个元素
//2. 每一行的第一个元素和最后一个元素都是 1
//3. 从第三行开始, 对于非第一个元素和最后一个元素的元素的值.
//arr[i][j] arr[i][j] = arr[i-1][j] + arr[i-1][j-1]; //必须找到这个规律
int arr[][] = new int[10][];
for (int i = 0; i < arr.length; i++) {//遍历arr的每个元素
//给每个一维数组(行)开辟空间
arr[i] = new int[i + 1];
//给每个一维数组赋值
for (int j = 0; j < arr[i].length; j++) {
if (j == 0 || j == arr[i].length - 1) {
arr[i][j] = 1;
} else {//中间的元素
arr[i][j] = arr[i-1][j] + arr[i-1][j-1];
}
}
}
//输出
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
二维数组使用细节和注意事项
- 一维数组的声明方式有:
int[] x 或者 int x[]
- 二维数组的声明方式有:
int[][] y 或者 int[] y[] 或者 int y[][]
- 二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同
比如:int map[][] = {{1, 2}, {3, 4, 5}};
由 map[0] 是一个含有两个元素的一维数组,map[1] 是一个含有三个元素的一维数组构成,我们也成为列数不等的二维数组