谈到流程控制我想大家先了解一个概念
数组
数组定义 定义数组时必须确定长度,以后不可更改长度,换句话说java的数组长度在一开始就是确定的不可以更改。
String [] strs = {"张三","李四"};
String [] strs2 = new String[2];
String [] strs3 = new String[]{"1","2","3"};
int [] ints = {1,2,3};
int [] ints2 = new int[3];
int [] ints3 = new int[]{1,2,3};
取数组长度
Strs.length
取数组的某一个元素
Strs[0]
给某个元素重新赋值
Strs[1]=”xxx”;
判断(也就是传说中的if else语句)
If(条件){
System.out.println(1);
}else if(条件){
System.out.println(2);
}else if(条件){
System.out.println(3);
}else if(条件){
System.out.println(4);
}else{
System.out.println(5);
}
If 只能出现一次
Else if 可以出现多次 也可以不出现
Else 只能出现一次 也可以不出现
int age = 18;
System.out.println(age);
if(age < 18){
System.out.println("未成年");
}else if(age == 18){
System.out.println("刚成年");
}else{
System.out.println("已成年");
}
循环
for循环
for(定义;判断;改变){
代码
}
其执行顺序如下
定义-> 判断->为真…执行代码->改变->判断->为真…代码->改变…判断为假循环结束
可以尝试一下下述代码
for(;;){} //死循环
for(int i = 0;i <= 100;i++){
System.out.println(i);
}
while循环
While(条件){
代码
}
执行顺序如下:
条件->为真…代码->条件->为真…代码->条件…为假循环结束
While(true){} //死循环
可以自己尝试下如下代码
int a = 0;
while(a <= 100){
System.out.println(a);
a++;
}
do…while.循环
do{
代码
}while(条件)
执行顺序如下:
代码->条件->为真…代码->条件->为真…代码->条件…为假循环结束
也就是其他循环可能不会执行,但是do…while至少执行一次
尝试一下:
int b1 = 0;
do{
System.out.println(b1);
b1++;
}while(b1 <= 100);
break
结束当前循环 只结束离break最近的循环 可以影响 for while do…while
下面是一段从0输出到100的程序由于加入了break所以它只会输出到50
for(int i = 0;i <= 100;i++){
System.out.println(i);
if(i == 50){
break;
}
}
continue
结束当次循环 直接进入下一次循环
这也是一段从0输出到100的代码,由于continue的加入所以,不会输出50而是跳过50直接输出51关于break和continue大家把这两段代码跑一下就明白了。
for(int i = 0;i <= 100;i++){
if(i == 50){
continue;
}
System.out.println(i);
}
高级循环foreach
这个循环和咱们平常用的循环不太一样
该循环一般用来循环数组和集合
For(类型 变量:数组){
}
具体的东西请大家一定要看注释。注释里面是详情
public class Practice {
public static void main(String [] args) {
String str = "cd\1(&*(&^a1iw2 234"; //这是一个String类型的字符串
char [] chars = str.toCharArray(); //将这个字符串转换成一个char类型的数组
for(char c:chars) {//这里就是咱们的foreach高级循环,直接打印数组中的每个元素,并添加空格隔开
System.out.println(c);
}
}
}
结果图:
关于流程控制有一点我还没有补上。那就是如下的分支。
分支
首先先让我们来看一下语法
switch(变量){
Case 值1:
代码;
Break; 当然了这里加不加break要视情况而定,写代码千万不能太过死板
Case 值2:
代码;
Break;
. ...
Case 值3:
代码;
Break;
}
上面就是基本的一些语法,变量的类型可以为char,byte,short,int,还有String,(String是jdk1.7以后才开始支持的)
当switch中没有break时候,会继续往下执行但是不会匹配。
我们来看一下如下代码和结果:
int age = 0;
switch (age) {
case 0:
System.out.println(0);
break;
case 10:
System.out.println(10);
break;
case 20:
System.out.println(20);
break;
default:
System.out.println("default");
break;
}
当age的值为0时,输出如下:
当age的值为10时,输出如下:
当age的值与哪一个case都不对应的时候。他就会对应default的值:
在来看如下代码:
public class Test {
public static void main(String [] args) {
int age = 0;
switch (age) {
case 0:
System.out.println(0);
// break;
case 10:
System.out.println(10);
// break;
case 20:
System.out.println(20);
break;
default:
System.out.println("default");
break;
}
}
}
结果如下:
可以看到如果没有加break他会一直执行后续的代码。
我们再把age的值改成10来看一下。
可以看到是从满足条件的地方开始执行。没有break的地方则继续执行,有的就不执行了。
这时候有的兄弟姐妹可能在想,那我们为什么不把default中的break去掉,反正都是最后一个了,其实是可以的,但是作为编码的规范性来说最好还是带着break。我确实在前面的文章中提过编码优化程序优化的问题,但是这作为规范性来说最后大家还是带着break.