Java学习第八天
本帖最后由 HAIHAIHEI 于 2022-3-22 17:15 编辑第八天,有不对之处麻烦各位指正
控制语句
控制语句的出现可以让程序具有逻辑性/条理性,可以使用控制语句来实现一个业务了
控制语句包括:选择语句,循环语句,转向语句
选择语句也叫做分支语句:if语句,switch语句
循环语句:主要循环反复的去执行某段特定的代码块,for循环,while循环,do.....while循环
转向语句:break,continue
if语句:
/*
if语法以及运行原理
if语句是分支语句,也叫条件语句
第一种写法:
int a=100;
int b=200;
if(布尔表达式){
java语句;
java语句;
}
一个大括号{}叫做一个分支
if这个单词翻译为如果,所以叫做条件语句
执行原理:布尔表达式结果为true时,执行大括号中的程序,否则大括号的代码不执行
第二种写法:
if(布尔表达式){//分支1
Java语句;
}else{//分支2
Java语句;
}
执行原理:如果布尔表达式的结果为true,则执行分支1,分支2不执行,如果表达式的结果时false,分支1不执行,分支2执行
注意:1.对于整个if语句来说,在任何情况下只能有1个分支执行,不可能存在2个或者更多的分支执行,if语句中只要有1个分支执行了,整个if语句就结束了。(对于1个完整的if来说)
第三种写法:
if(布尔表达式1){//分支1
Java语句;
}else if(布尔表达式2){//分支2
Java语句;
}else if(布尔表达式3){//分支3
Java语句;
}......
执行原理:先判断"布尔表达式1",如果为true,则执行分支1,if语句结束,当表达结果为false,会判断布尔表达式2的结果,结果为true则执行分支2,if语句结束....从上往下依次判断,主要看第一个true发生在哪个分支上,第一个true对应的分支执行,只要一个分支执行,整个if结束
第四种写法:
if(布尔表达式1){//分支1
Java语句;
}else if(布尔表达式2){//分支2
Java语句;
}else if(布尔表达式3){//分支3
Java语句;
}else{//以上条件没有一个成立的话,这个else执行
java语句;
}
以上4种语法机制中,凡是带有else分支的,一定可以保证会有一个分支执行,如第二种和第四种
当分支当中的“Java语句”只有1条,那么大括号可以省略,但为了可读性,最好不要省略
分析外面if时,里面的for循环当做普通Java代码来考虑
*/
public class test
{
public static void main(String[] args){
boolean sex=true;
if(sex){
System.out.println("男");
}else{
System.out.println("女");
}
//输出结果为男
if(sex=false){
System.out.println("男");
}else{
System.out.println("女");
}
//输出结果为女,因为sex=false为赋值false给sex
if(sex==true){
System.out.println("男");
}else{
System.out.println("女");
}
//输出结果为女,因为前面sex已经赋值为false,相当于false==true为false
//三目运算符
sex =false;
System.out.println(sex?"男":"女");
if(sex)//不加大括号
System.out.println("男");
else
System.out.println("女");
//例子:
int age=500;
if(0<age&age<10){
System.out.println("幼儿");
}else if(10<age&age<30){
System.out.println("青年");
}else if(30<age&age<60){
System.out.println("中年");
}else if(60<age&age<100){
System.out.println("老年");
}else{
System.out.println("神仙");
}
//第二种写法(增加了大致范围)
if(age<100){
if(age<10){
System.out.println("幼儿");
}else if(age<30){
System.out.println("青年");
}else if(age<60){
System.out.println("中年");
}else if(age<100){
System.out.println("老年");
}
}else{
System.out.println("神仙");
}
//第三种写法(改进了语法,更加方便)
String str="wc";
if(age<100){
if(age<10){
str="幼儿";
}else if(age<30){
str="青年";
}else if(age<60){
str="中年";
}else if(age<100){
str="老年";
}
}else{
str="神仙";
}
System.out.println(str);
}
}
switch语句:
/*
1.switch语句也是选择语句,也可以叫做分支语句
2.switch语句的语法格式
switch(值){
case 值1:
java语法;
java语法;
break;
case 值2:
java语法;
java语法;
break;
case 值3:
java语法;
java语法;
break;
default:
java语法;
}
以上是一个完整的switch语句:
其中:break语句和default不是必须的
switch语句支持的类包括int类型以及String类型
switch语句本质上是只支持int和String,但是byte,short,char也可以使用在switch语句中,因为byte,short,char可以进行自动类型转换
switch语句中“值”与“值1”,“值2”比较的时候会使用“==”进行比较
3.switch执行原理:
拿“值”与“值1”进行比较,如果相同,则执行该分支中的Java语句,然后遇到“break;”语句就结束了。
如果“值”与“值1”不相等会继续拿“值”与“值2”进行比较,如果相同,则执行该分支中的Java语句,然后遇到“break;”语句switch结束
注意:如果分支执行了,但分支最后没有“break;”此时会发生case穿透现象。
如果所有的case都没有匹配成功,那么最后default分支会执行
*/
public class test
{
public static void main(String[] args){
//switch只支持int和String类型
//long x=100L;
//switch(x){}
byte b=100;
switch(b){}
short s=100;
switch(s){}
char c='a';
switch('a'){}
switch("abc"){}
//案例:
//根据数字来决定中午吃什么
int num =1;//定义一个数字
System.out.print("今天中午吃:");
switch(num){
case 0:
System.out.println("红烧排骨");
break;
case 1:
System.out.println("糖醋里脊");
break;
case 2:
System.out.println("油闷大虾");
break;
case 3:
System.out.println("京酱肉丝");
break;
case 4:
System.out.println("咸菜馒头");
break;
case 5:
System.out.println("清水馍馍");
break;
}
//case穿透现象
int num1=2;
System.out.print("今天中午吃:");
switch(num1){
case 0:
System.out.println("红烧排骨");
break;
case 1:
System.out.println("糖醋里脊");
break;
case 2:
System.out.println("油闷大虾");
case 3:
System.out.println("京酱肉丝");
case 4:
System.out.println("咸菜馒头");
break;
case 5:
System.out.println("清水馍馍");
break;
}
//关于default语句,当所有的case都没有匹配上的时候,执行default语句。
System.out.print("今天中午吃:");
int num3=10;
switch(num3){
case 0:
System.out.println("红烧排骨");
break;
case 1:
System.out.println("糖醋里脊");
break;
case 2:
System.out.println("油闷大虾");
break;
case 3:
System.out.println("京酱肉丝");
break;
case 4:
System.out.println("咸菜馒头");
break;
case 5:
System.out.println("清水馍馍");
break;
default:
System.out.println("老北京炸酱面");
break;
}
//关于case合并问题
System.out.print("今天中午吃:");
int num4=3;
switch(num4){
case 0:
System.out.println("红烧排骨");
break;
case 1:case 2:case 3:
System.out.println("京酱肉丝");//不管num4=1,2,3,都会输出京酱肉丝
break;
case 4:
System.out.println("咸菜馒头");
break;
case 5:
System.out.println("清水馍馍");
break;
default:
System.out.println("老北京炸酱面");
break;
}
}
} 纯手打,如果有不对之处希望各位大佬指出,感激不尽{:1_893:}(注:这次写的好累:sleepy:) 这个真不错,语法是一方面,还要积累自己的算法、思路,更要养成一个代码编写好习惯。 还不错 刚刚看一遍 没有发现什么问题 希望楼主能继续坚持下去 看着没啥问题,加油~ 看着没啥问题,加油~ 不错,不错。写的简单明了 每天记录很不错,不知道吾爱支不支持md形式,这样代码看上去好看一些 加油!!!{:1_921:}坚持下去就是胜利!