流程控制与数组
文章目录
分支结构
if条件语句
- if,else if,else后的代码块只有一条语句时(可以是空语句),可以省略花括号。
- 使用if,else时一定要先考虑小的范围。
switch分支语句
- switch后的控制表达式的数据类型只能是:byte,short,int,char。不能是boolean。Java7还允许是String类型。
- 允许省略case后的花括号。
- 不要忘了当一个case块写完时,以break结尾,否则将继续执行,直到遇到break或运行switch完毕才结束。
一个写法案例如下:
char a=97;
//符合条件'a'
switch (a){
case 'a':
System.out.println("一概窝里GIAOGIAO!");
System.out.println("我是char类型的a");
break;
case 'b':
System.out.println("我是b");
break;
default:
System.out.println("我是default呜呜呜");
}
循环结构
循环语句可能包含如下四个部分:
- 初始化语句:一条或者多条语句,完成一些初始化操作,在循环开始前执行。
- 循环条件:一个布尔表达式,决定是否执行循环体。
- 循环体:循环的主体内容。
- 迭代语句:在循环条件执行之前执行,控制循环条件的变量,使之能够在合适的条件下结束循环。
while循环语句
一个简单的案例如下:
int i=1; //初始化语句
while(i<11) { //循环条件
System.out.println("i="+i); //循环体
++i; //迭代语句
}
此语句容易范的 错误 是: 在while()后加一个封号
do while循环语句
do while与while的区别在于:do while先执行循环体,再执行循环条件,而while是先执行循环条件,条件允许时才能执行循环体。一个简单的案例如下:
int i=1; //初始化语句
do{
System.out.println("i="+i); //循环体
++i; //迭代语句
}while (i<11); //循环条件
此语句容易犯的一个 错误是 : while()后没加封号
for循环语句
for循环的迭代语句没有和循环体放在一起,所以即使循环体中出现continue,结束本次循环,开始下次循环时,迭代语句也会被执行。所以用while或者do while循环语句的一个常见错误如下:
int i=1; //初始化语句
do{
System.out.println("i="+i); //循环体
if (i == 5) {
continue;
//结束本次循环时,++i不会得到执行,所以i==5时,将一直等于5,造成死循环
}
++i; //迭代语句
}while (i<11); //循环条件
一个简单的案例如下:
for (int a=0,b=1,c=2;a<10&&b<11&&c<12;a++,b++,c++){
System.out.println("a:"+a+",b:"+b+",c:"+c);
}
Notice: for语句的括号内的两个封号是必须的,其他都可以省略。
循环控制结构
Java的循环控制有 break 和 continue 。此外, return 可以结束整个方法,也就可以算是结束一次循环。关于break和continue和return的一些注意事项如下:
- break是结束当前所在循环,而continue是结束本次循环,继续下次循环。
- break和continue都可以在循环体前写一个标识符,然后break或者continue此标识符,来达到break或者continue这个标识符所在的循环体。
- return是直接结束整个方法,所以当在内循环中return执行了的话,外层循环也就结束了。而break结束的循环只是当前所在的循环,当前在内循环就结束内循环,在外循环就结束外循环。
数组类型
- 一个数组只能存储一种数据类型的数据。
- 一旦数组初始化完成,其占用内存也就确定了,所以 数组长度不可变 。
- 数组也是一种数据类型,它本身是一个引用类型。
- 定义数组变量时,由于此变量是一个引用变量,未指向任何有效的内存空间,所以定义数组时不能定义数组的长度。
数组的初始化
- 静态初始化:初始化时由程序员显示定义每个数组元素的初始值,由系统决定数组的长度。(言外之意就是:不能同时指定初始值,又指定数组元素的个数)
- 动态初始化:初始化时由程序员显示的指定数组的长度,由系统为数组元素分配初始值。
使用静态初始化和和动态初始化的一个案例如下:
Object[] a=new Integer[]{1,2,3}; //此时将不能再指定数组元素的个数为3
Object[] b={"哈哈","嘻嘻"}; //同上,这是简化后的静态初始化
float[] c=new float[5]; //动态初始化,系统将自动给默认值,我们只需给定元素个数即可
for (int i=0;i<c.length;i++){
//将输出5个0.0
System.out.println(c[i]);
}
关于动态初始化时,系统分配初始值的规律如下:
- 类型为byte,short,int,long,默认为0
- 类型为float,double,默认为0.0
- 类型为char,默认为’\u0000'
- 类型为boolean,默认为false
- 类型时引用类型,默认为null
此外,关于高维数组,一个简单的案例如下:
String[][] a=new String[3][3];
String[][] b=new String[][]{new String[3],new String[]{"哈哈","嘻嘻","呵呵","呜呜"}};
String[][] c={new String[3],new String[]{"哈哈","嘻嘻","呵呵","呜呜"}};
最后,常用java.util.Arrays工具类操作数组(排序,查找,打印等操作)。
文章作者 Pinger
上次更新 2019-09-15