Lesson 06

数组Arrays

什么是

一堆同类型变量

案例对比

使用前
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
int number = Console.readInt(); int digit1, digit2, digit3; digit1 = number % 10;number = number / 10; digit2 = number % 10;number = number / 10; digit3 = number % 10;number = number / 10; Console.println(digit3);Console.println(digit2);Console.println(digit1);
使用后
1 2 3*4 5*6 7 8*9 10 11*12 13 14*15*16*
int number = Console.readInt(); int[] digits = new int[3]; digits[0] = number % 10;number = number / 10; digits[1] = number % 10;number = number / 10; digits[2] = number % 10;number = number / 10; Console.println(digits[2]);Console.println(digits[1]);Console.println(digits[0]);
效果

一气声明多个数据格

数组声明及创建

标准格式
<数组变量声明> = <数组创建>;
<元素类型>[] <数组变量名> = new <元素类型>[<数组尺寸>];
int[] digits = new int[3];
兼容格式
<元素类型> <数组变量名>[] = new <元素类型>[<数组尺寸>];
int digits[] = new int[3];

默认值

通过 new 创建的数组, 每个数据格里都是该类型的默认值

类型默认值
int0
double0.0
booleanfalse

元素Elements

管数组里的每个变量叫元素

索引Index

数组使用索引定位数据格

格式
1
<数组名>[<索引值>]
样例
1 2 3 4 5
// 赋值digits[2] = number % 10; // 取值Console.println(digits[2]);

索引范围

索引值范围从 0 开始 到 尺寸 - 1

数组越界
1 2!3!
int[] digits = new int[5];System.out.println(digits[5]);System.out.println(digits[-1]);

访问越界的索引会导致运行时报错

强类型数组

数组里的每个元素的类型都是一样的

1!
digits[0] = 3.7;

数组字面量

格式
{<元素字面量1>, <元素字面量2>, ..., <元素字面量n>}
样例
int[] digits = {2, 7, 3, 8, 4}; 

长度不可改

一旦创建时确定了数组的长度, 之后就不能改

如果需要, 只能造一个新的

1 2 3
int[] arr1 = new int[3];...int[] arr2 = new int[5];

一维数组 和 条件语句 的关系

使用前
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
int number = Console.readInt(); String code = "";switch (number) { case 0: code = "-----"; break; case 1: code = ".----"; break; case 2: code = "..---"; break; case 3: code = "...--"; break; case 4: code = "....-"; break; case 5: code = "....."; break; case 6: code = "-...."; break; case 7: code = "--..."; break; case 8: code = "---.."; break; case 9: code = "----."; break;}Console.println(code);
使用后
1*2*3 4 5*6 7
String[] codes = {"-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----."}; int number = Console.readInt();String code = codes[number]; Console.println(code);
特性

分支结构的判断是一个变量

值是连续的

循环Loops

For 语句

作用

用于机械式重复一段代码

案例对比

使用前
1 2 3 4
String name = "ZZAX";Console.println(name);Console.println(name);Console.println(name);
使用后
1 2*3 4*
String name = "ZZAX";for (int i = 0; i < 3; i++) { Console.println(name);}

语法

for (<初始化>; <维持条件>; <改变>){
    <statements>
}

维持条件部分 必须为 布尔值表达式

执行顺序

1
for (2; 3; 4){
    5
}
6

1 23 543 543 543 ... 543 6

3 有没有可能不执行 ?

A. 有, B. 没有

4 有没有可能不执行 ?

A. 有, B. 没有

5 有没有可能不执行 ?

A. 有, B. 没有

标准 for 语句

一般
for (int i = 3; i > 1; i--){
    ...
}
标准
for (int i = 0; i < <次数>; i++){
    <statements>
}

唯一可以变的,就是 i 的名字,和 次数。

利用 i 值

1 2 3
for (int i = 0; i < 3; i++) { Console.println(i);}

for 语句技巧

输出 9 - 0

1. 先写出不循环的版本
1 2 3 4 5 6 7 8 9
Console.println(9);Console.println(8);Console.println(7);Console.println(6);Console.println(5);Console.println(4);Console.println(3);Console.println(2);Console.println(1);
2. 准备模板
1 2 3
for(int i = 0; i < <次数>; i++) { <statements>}
3. 填次数
次数

9 次

填进去
1*2 3
for(int i = 0; i < 9; i++) { <statements>}
4. 填相同
相同
1
Console.println(<不同>);
填进去
1 2 3
for(int i = 0; i < 9; i++) { Console.println(<不同>);}
5. 找规律 填公式
规律
v: 9 8 7 6 5 4 3 2 1
i: 0 1 2 3 4 5 6 7 8
v = 9 - i
填进去
1 2 3 4
for(int i = 0; i < 9; i++) { int value = 9 - i; Console.println(value);}

挑战

输出 1 3 5 7 9

for 语句 与 变量作用域

语句头

for 语句头的初始化部分的 变量 在最后一次碰到回 大括号的时候死

循环期间一直保留

语句内

for 语句里的 变量 每次撞到 回大括号 都死一次

每次循环都是新的

注意

在 for 语句里 可以用到的变量有

for 语句外面的

for 语句头里声明的

for 语句里声明的

for 与 数组 联合应用的案例

使用前
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
int number = Console.readInt(); int[] digits = new int[3]; digits[0] = number % 10;number = number / 10; digits[1] = number % 10;number = number / 10; digits[2] = number % 10;number = number / 10; Console.println(digits[2]);Console.println(digits[1]);Console.println(digits[0]);
使用后
1 2 3 4 5 6 7 8 9 10 11 12
int number = Console.readInt(); int[] digits = new int[3]; for (int i = 0; i < 3; i++) { digits[i] = number % 10; number = number / 10;} for (int i = 0; i < 3; i++) { Console.println(digits[2 - i]);}

ZZAX 微信公众

文档一更新,立刻告诉你