一、分支语句:
(1) .单分支语句 :[if...[ else if ]....[else]
int a = 20;
int b = 20;
//如果a比b大,
//则执行if结构体中的代码
if(a > b){
System.out.println(a+"比"+b+"大");
}else if( a == b){//上面a>b不满足则执行else if 中的判断条件
System.out.println(a+"和"+b+"相等");
}else{//如果还不满足上面的else if 则执行下面的输出语句
System.out.println(a+"比"+b+"小");
}
该语句的特点为:如果if条件中的表达式满足条件则不会执行下面的else...if...语句可嵌套多个else...if...语句
如下:
int score = 88;
if (score < 60){
System.out.println("不及格");
}else if (score >= 60){
System.out.println("及格了");
}else if (score >= 70){
System.out.println("良好");
}else if (score >= 80){
System.out.println("优秀");
}else if (score >= 90){
System.out.println("真棒!");
}else{
System.out.println("成绩不正常");
}
(2) .多分支语句 :[switch]
int i = 10;
char c = 'a';//jdk 1.7
String s = "a";
switch (s){
case "a":
System.out.println("a");//代码段
break;
case "b":
System.out.println("b");//代码段
break;
default:
System.out.println("不匹配");//代码段
}
在jdk1.7之前switch语句中只能放入一个数字,而在jdk1.7之后在switch里面放入一个字符也是没问题的
其中break的作用是跳出当前循环,如果没有break语句当遇到满足条件的case执行里面的代码,但是没有break会使得下面的所有case语句内的代码全部执行。当然这个是switch语句的特点并不是缺点,这个根据实际情况而使用
default语句的作用则是如果case语句都不满足则会执行default的语句,也可以不写default
二、循环语句:
(1) .变量生命周期 :
在讲循环语句之前我先来讲讲变量生命周期的问题
当一个变量从定义之后它的生命就开始了直到它所在的结构体的大括号结束了,才算死亡,在这个结构体中不能出现相同名字的变量(也就是不能重复定义)但是你可以一直使用它
int a = 10;
if (a < 20){
int b = 10;
a++;
b = 30;
}
if (a < 30){
b = 20;//这个是不对的,因为b在上一个if语句结束的时候就已经死亡了,所以在这个里面需要重新定义b
a++;
}
System.out.println(a);//12
(2) .for循环语句 :
for (初始值;终点判断;增量){
//代码块
}
循环执行的过程:
a. 定义初始值
b. 判断值是否符合for循环执行条件
c. 如果符合for执行循环体里的语句代码,如果不符合条件则中断循环
d. 执行增量
e. 执行b步骤,直到不符合循环条件即可退出循环
注意:可以用break终止循环,用continue来跳出当前的循环
这里我用判断一个数是否为素数来进行演示
boolean b = false;
for (int i = 2;i <= x / 2 ;i++ ){
if (x % i == 0){
System.out.println(x+"不是素数");
b = true;
break;
}
}
if(!b){//b == false b == true
System.out.println(x+"是素数");
}
因为是判断是否为素数i不必为0或1,所以初始值i为2,i并不会大于该数的一般所以循环条件为i<=x/2,每执行一次循环语句都会使i自增。所以具有结束的情况,不会变成死循环,循环体内进行判断i对x取余是否为零,为零则表示x不是素数,不用执行完所有次数,所以使用了break语句来终止循环。
如果一个循环语句始终没有停止,那么我们称之为死循环
for循环的应用:
a. 什么样的程序适合使用循环来进行解决
大量重复或相似的操作的程序
b. 怎么解决 初始值 终点判断 增量->知道循环执行次数
(3) .while循环语句 :
while(终点判断){
//代码块
}
while循环也有这三点(初始值,终点判断,增量)
这里用输出1到10的所有值来演示
int i = 1;//初始值
while(i <= 10){//终点判断的表达式
System.out.println(i);
i++;//增量
}
while循环的应用特点:
(1)适合于不可知次数循环
(2)关键点是找到循环的终止条件
(4) .do-while循环语句 :
do{
//代码块
}while(终点判断)
这里也是用输出1到10的所有值来演示
int i = 1;
do{
System.out.println(i);
i++;
}while(i <=10);
do-while循环的应用特点:
(1)适合于不可知次数循环
(2)关键点是do-while会无条件的执行一次,不经过判断
(5) .循环嵌套 :
一个循环内部是可以再写另一个循环的叫做循环嵌套,但是基本上最多都是两层嵌套,很少有三层嵌套的代码,因为时间复杂度为O(n^3),如果出现三层及以上的话代码基本上还可以优化
示例:
for (int i = 1;i <= 4 ;i++ ){
for (int j = 1;j <= 4 ;j++ ){
System.out.print("*");
}
System.out.println();
}
//内层和外层循环的变量不能重名
当然也可以嵌套while或者do-while语句
int i = 1;
while(i <= 4){
int j = 1;//注意j值定义的位置
while(j <= i){
System.out.print("*");
j++;
}
System.out.println();
i++;
}
本人会定期发表关于Java的相关知识,如果有错误请指出,觉得好请点赞,收藏加关注,谢谢!!