java基础之控制结构
分支
常用有两种分支结构
1)if/else
业务:判断男女,男挣钱,女花钱
If/else
package javase.base.branch;
//if分支测试,测试男女
public class TestIf {
//判断,如果是男,打印“挣钱”;如果是女,打印“花钱”
public static void main(String[] args) {
//条件表达式,要么为true,要么为false
String sex = “woman”;
//equals比较,sex变量和括号中的内容进行比较
System.out.println("条件是否成立:"+sex.equals("man"));
//条件表达式,结果就2个,要么条件成立true,要么条件不成立false
if(sex.equals("man")) {
//真 Y
System.out.println("挣钱");
}else {
//假 N
System.out.println("花钱");
}
}
}
业务:按数字,如果90以上,包括90,打印“优秀”;如果90以下,打印“一般”
业务:
60分以下不及格,
61~70及格,
71~80中等,
81~90良好,
91~100优秀
//if判断条件都应该互斥
int s = 65;
if(s<=60) {
System.out.println(“不及格”);
}else if(s>60 && s<=70) { //两个条件同时成立
System.out.println(“及格”);
}else if(s>70 && s<=80){
System.out.println(“中等”);
}else {
System.out.println(“上面的都不成立”);
}
2)switch(用的少,可以被if替代)
package javase.base.branch;
//分支
public class TestSwitch {
public static void main(String[] args) {
//需求:电话号码 110/120/119/114
String phone = “158”;
String rtn = “”;
//switch有一个case成立后面就全都不判断,而且直接执行
//判断这个变量值下面的对应处理
switch (phone) {
case "110":
rtn = "人民警察";
break; //执行完上面的内容,直接switch结束
case "120":
rtn = "医生护士";
break;
case "119":
rtn = "火警电话";
break;
case "114":
rtn = "人工查号";
break;
default: //默认
rtn = "非法电话";
break;
}
System.out.println(rtn);
//判断一个字符
char c = 'c'; //char可以支持整数
c = 101; // ASCII 美国标准规定键盘字对应整数
// a=97 bit=8个0或者1
//为什么键盘输入会转换计算机能识别信息,就是ASCII
System.out.println(c);
switch(c) {
case 'a':
System.out.println("A");
break;
case 'b':
System.out.println("B");
break;
case 'c':
System.out.println("C");
break;
}
}
}
循环
For循环
package javase.base;
public class TestFor {
public static void main(String[] args) throws Exception {
//经典for循环
//有10个*,for()有3个语句
/*
* int i=0; 初始值,变量i,初始化值为0
* i<10 条件表达式,判断条件,结束条件
* java下标从0开始
* 如果判断条件永远不满足,产生经典:死循环
*/
/*
* 执行过程:
* 1、int i = 0;初始化,只执行一次
* 2、判断条件 i<10,此时i=0;满足条件,继续执行
* 3、执行i++,i = i+1;,当前的i=1
* 4、执行方法体
* 5、再次进来,又去判断,i<10,当前i=1,满足条件
* 6、重复上面的步骤
* 7、i=10 时,判断i<10,此时条件就不成立,结束
*/
// for(int i=0; i<10; i++) {
// System.out.println(i);
// Thread.sleep(100); //处理异常,延时1s
// System.out.println("*");
// }
// System.out.println(“执行完成”);
//双重循环,嵌套关系,只能包含关系,不能一半在里面,一半在外面,不行
for(int i=0; i<7; i++) { //外层for
for(int j=10; j<15; j++) { //里层for
System.out.println("i="+ i+" j="+j);
}
//System.out.println(j); j变量的作用域
}
//双重循环先执行里面循环,在外层循环
}
}
整数判断
if(i==6) {}
字符串的判断
String s = “6”;
if(s.equals(“6”)) {}
跳出:
1)break 跳出整个循环,一旦break执行,后面的代码就都不执行了
2)continue 结束本次循环,执行下一次循环
3)return 结束方法,方法直接返回
While循环结构
package javase.base;
public class TestWhile {
public static void main(String[] args) {
//while结构,也要初始值,也有判断条件,一定要改变条件
int i = 0; //和for循环不同的是,初始化条件在while前面
//for(int i=0;i<10;i++){}
while(i<10) { //判断条件
if(i==6) {
//直接退出
//break; //快速中断执行
//return; //结束程序
continue; //继续执行
}
//方法体内改变值
System.out.println(i);
i++;
}
System.out.println("执行完成");
}
}
Do-while循环
package javase.base;
public class TestDoWhile {
public static void main(String[] args) {
int j = 0;
while(j<0) { //条件不成立
System.out.println(j);
j++;
}
System.out.println("");
int i = 0;
do{ //不管条件是否成立最少执行一次
System.out.println(i);
i++;
}while(i<0);
}
}
While循环和do-while循环的差异
1)while可能一次都不执行方法体
2)do-while 最少执行一次