Fork me on GitHub

流程控制与数组

带标签的break和continue

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
for (int t = 0;t < 3;t++)
{
for (int u = 0;u < 2;u++)
{
System.out.println(t + "!!!!!!" + u);
break;
}
}
/*输出:
0!!!!!!0
1!!!!!!0
2!!!!!!0
*/

outer1:
for (int t = 0;t < 3;t++)
{
for (int u = 0;u < 2;u++)
{
System.out.println(t + "!!!!!!" + u);
break outer1;
}
}
/*输出:
0!!!!!!0
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
for (int t = 0;t < 3;t++)
{
for (int u = 0;u < 3;u++)
{
if (u == 1)
continue;
System.out.println(t + "!!!!!!" + u);
}
}
/*输出:
0!!!!!!0
0!!!!!!2
1!!!!!!0
1!!!!!!2
2!!!!!!0
2!!!!!!2
*/

outer2:
for (int t = 0;t < 3;t++)
{
for (int u = 0;u < 3;u++)
{
if (u == 1)
continue outer2;
System.out.println(t + "!!!!!!" + u);
}
}
/*输出:
0!!!!!!0
1!!!!!!0
2!!!!!!0
*/

基础循环判断语句的注意事项

使用if…else语句时,应当把包含范围小的条件放在前面处理。

switch分支语句

switch后的控制表达式的数据类型只能是byte、short、char、int四种整数类型、枚举类型(可以是任何枚举类型,而且case表达式中的值直接使用枚举值的名字,无须添加枚举类作为限定)、java.lang.String类型,不能是boolean类型。

不能是StringBuffer、StringBuilder两种字符串类型。

可以省略case后面的花括号。

for循环

for循环的循环迭代语句没有与循环体放在一起,因此即使通过continue结束本次循环,循环迭代语句一样会执行。

for循环可以有初始化语句,初始化变量个数不限,但声明语句只能有一个,若要声明多个变量,这些变量应该有相同的数据类型。

foreach循环

无须获得数组和集合的长度,无须根据索引来访问数组元素和集合元素,foreach循环自动遍历数组或集合中的每个元素。

1
2
3
4
int[] a = {1,2,3,4,5};
for (int k : a){
System.out.println(k);
}

通常不会对循环变量进行赋值,没有意义且容易引起错误。

不能通过foreach循环改变数组元素的值。

数组

数组的定义

定义数组的两种语法:

  • int[] a;
  • int a[];

通常用第一种格式,因为int[]是一种引用类型,符合引用变量的定义语法,第二种格式正在逐渐淘汰。

定义数组时不能指定数组长度。

数组的初始化

静态初始化

初始化时由程序员显示指定每个数组元素的初始值,由系统决定数组长度。

格式:a = new type[]{x1,x2,…};

type[] 必须与a的类型相同或为a的类型的子类。

x1,x2…的类型必须与type[]的类型相同或为其子类的实例。

简化格式:type[] a = {x1,x2,…};

只有定义数组的同时执行数组初始化才支持使用简化的静态初始化。

动态初始化

初始化时程序员只指定数组的长度,由系统为数组元素分配初始值。

格式:a = new type[length];

  • 整数类型值为0
  • 浮点数类型值为0.0
  • 字符类型值为’\u0000’
  • 布尔类型值为false
  • 引用类型值为null

不能同时使用静态初始化和动态初始化,即不能在进行数组初始化时既指定数组长度也为每个数组元素分配初始值。

终上所述,定义并初始化数组有三种方法:

1
2
3
4
5
int[] objArr = new int[]{12,2,3};
int[] objArr1 = {10,2,3};
int[] objArr2 = new int[3];
// int[] objArr3 = new int[3]{12,2,3};非法
// int[] objArr4 = new int[];非法

访问数组元素时,若索引值小于0或大于数组的长度,则抛出java.lang.ArrayIndexOutOfBoundsException: N。

定义并初始化二维数组

1
2
3
4
5
6
7
8
int[][] ae = new int[4][];
//ae这个引用变量指向一个长度为4的数组,每个数组元素都是null
int[][] at = new int[3][4];
//at这个引用变量指向一个长度为3的数组,每个数组元素都指向一个长度为4
//的int[]类型的数组,每个数组元素的值为0
//int[][] ae = new int[][4];非法
int[][] aw = new int[][]{{1,2},{2,3}};
String[][] str9 = {new String[3],new String[]{"hello!"}};
-------------本文结束感谢您的阅读-------------
undefined