--------- android培训、java培训、期待与您交流! ----------
要想控制程序的执行顺序,就离不开控制流程结构。下面总结下java中的控制流程结构吧。
一、判断结构
if语句
if:语句用于做判断使用。常对某个范围进行判断,或者几个变量进行判断,还有boolean表达式的判断
if语句有三种格式
1、格式一
/**
* if第一种格式:
* if(条件表达式)
* {
* 执行语句;
* }
* 执行流程:如果条件表达式为true,就执行执行语句,否则,什么都不执行。
*/
class Temp{
public static void main(String[] args){
int x = 2;
if (x > 1){
System.out.println("执行语句");
}
//if语句的括号可以省略 为了阅读性不要省略
if ( x > 1)
if ( x < 2)
System.out.println("2");
System.out.println("1");
// if和执行语句是一个整体 第一个if和下面的if语句是一个整体
}
}
2、格式二
/**
* if第二种格式:
* if(条件表达式)
* {
* 执行语句;
* }
* else
* {
* 执行语句;
* }
* 执行流程:如果条件表达式为true,就执行执行语句;否则,就执行else语句
*/
class Temp{
public static void main(String[] args){
int x = 1,b;
if (x>1){
b = 100;
}
else{
b = 200;
}
System.out.println(b);
// 上面可简写为三元运算
b = (x>1)? 100:200;
//区别:三元运算符必须要有结果,if else语句可以不需要
}
}
3、格式三
/**
* if第三种格式也叫if嵌套
* if(条件表达式)
* {
* 执行语句;
* }
* else if(条件表式)
* {
* 执行语句;
* }
* ……
* else
* {
* 执行语句;
* }
* 执行流程:如果条件表达式为true,就执行if语句,程序结束;
* 否则,就执行else if 条件判断为true,就执行语句;
* 如果都为false,就执行最后的elas的执行语句。
* 注意:这种多条件判断只有一个执行结果。
*/
class Temp{
public static void main(String[] args){
/*
*一年有四季
*春:3,4,5
*夏:6,7,8
*秋:9,10,11
*冬:12,1,2
* 根据用户输入月份判断季节
*/
int month = 7;
if ( month<1 && month>12 ){
System.out.println(month+"月没有对应季节");
}
if ( month>=3 && month<=5 ){
System.out.println(month+"月是春季");
}
else if ( month>=6 && month<=8){
System.out.println(month+"月是夏季");
}
else if ( month>=9 && month<=11 ){
System.out.println(month+"月是秋季");
}
else
System.out.println(month+"月是冬季");
}
}
注意事项
1、什么时候用哪一种if语句?
格式1在判断条件为一种情况下使用
格式2在判断条件为两种情况下使用
格式3在判断条件为多种情况下使用
如果if或者else里面控制的语句题是一条语句,就可以省略
如果是多条控制语句,就必须写上大括号。为了阅读性建议写大括号
3、if后不加分号
if (false);
{
Syste.out.println("java");
}
二、选择结构
switch语句
switch语句用做选择使用。用于几个常量的判断。
switch语句会把几个常量值直接加载到内存,在判断时候,效率比if语句高。
所以在对几个常量的判断一般选择switch语句。
class Temp{
public static void main(String[] args){
int x = 2,y=3;
switch(x) // x=2
{
default: // 没有一个满足就执行, 后面顺序执行
y++; // y=4
case 3: //第一个执行语句
y++; // y=5
break;
case 4:
y++;
}
System.out.println("y="+y);//y=6
//switch里面的执行语句是无序的但执行时有序的
//先判断case 在执行default;直到遇到break程序就结束,
//否则程序顺序执行而不判断case,直到遇到右大括号"}"程序结束。
}
}
注意事项
1、default整体可以省略吗?
可以,但不建议
2、defalut的位置可以放到前面吗?
可以,但不建议
3、break可以省略吗?
可以,但不建议.default的break可以省略但结果可能会有问题。
4、switch语句什么时候结束?
遇到break或者遇到大括号
if和switch的区别
if:
1、对具体的值进行判断
2、对区间判断
3、对运算结果是boolean类型的表达式进行判断
switch:
1、对具体的值进行判断
2、值得个数通常是固定的
3、几个常量值直接加载到内存,在判断时候,效率相对比if语句高
三、循环结构
循环就是重复的对一段代码进行操作。java的循环语句有 while,do while, for
while循环
/*
* while语句格式:
* while(条件表达式)
* {
* 循环执行体;
* }
* 执行流程:判断条件表达式为true就执行循环体
* 直到条件为false就结束循环
*
* 注意的是 循环要有出口,否则就是死循环。
*/
class Temp{
public static void main(String[] args){
// 求1加到100的和
int i = 1,s = 0 ;
while (i<=100){
s =+ i;
i++;
}
System.out.println(s);
}
}
do while循环
/**
*do while 语句
*do
*{
* 循环执行体;
*}while(条件表达式);
*执行流程: 先执行循环体,在判断条件。如果为true继续循环直到为false循环结束。
*/
class Temp{
public static void main(String[] args){
// 求1加到100的和
int i = 1,s = 0 ;
do{
s =+ i ;
i++;
}while(i<=100);
System.out.println(s);
//do while 的特点是无论条件是否满足循环体至少执行一次
do{
System.out.println("执行一次");
}while(false);
}
}
for循环
/**
*for格式
*for (初始化表达式;循环条件表达式;循环后的操作表达式)
*{
* 循环执行体;
*}
*注:1、for里面表达式运算的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体
* 然后再执行循环后的的操作表达式,接着继续判断循环条件,重复上个过程,直到条件不满足。
* 2、while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就在内存中释放了
* 而while循环使用的变量在循环结束后还可以继续使用。
* 所以在循环体外要使用循环变量是用while 或 do while
* 不使用就用for
* 3、最简单的无限循环格式 while(true) for(;;);无限循环存在的原因是并不知道循环多少次,
* 而是根据某些条件,来控制循环。
*/
class Temp{
public static void main(String[] args){
// 求1加到100的和
int s = 0;
for (int i=1; i<=100; i++){
s += i ;
}
System.out.println(s);
// 面试题 特殊for循环
int x = 1;
for (System.out.println("a"),System.out.println("b");x<3; System.out.println("c")){
System.out.println("d");
x++;
}
}
}
注意:在使用循环时,一定要明确哪些语句需要参与循环,哪些不需要。
循环通常情况下,需要定义条件, 需要控制次数。
四、循环思想
累加思想
/*
练习:
获取1到10 10个数字的和。
0 + 1
1 + 2
3 + 3
6 + 4
10 + 5
思路:
1,每次参与加法的数值不确定。
2,每次的出现的和数据也不确定。
3,发现参与加法运算的数值有递增规律。
4,每一次都是加法运算在重复,并且都是和再加上下一个数值。
步骤:
1,定义一个变量,记录住参与加法运算的数据。
2,定义一个变量,记录中每一次的出现的和。
3,对于记录参与加法运算的数据进行自增。
4,因为加法运算需要重复,就要想到循环结构。
*/
class Temp{
public static void main(String[] args){
int x = 1;//记录参与加法的数据。
int sum = 0;//记录住每一次的和。
while(x<=100)
{
sum = sum + x;
x++;
}
System.out.println("sum="+sum);
}
}
计数器思想
/*
1~100之间 6的倍数出现的次数。
*/
class Temp{
public static void main(String[] args){
int x = 1;
int count = 0; //记录每次满足条件个数
while(x<=100)
{
if(x%6==0)
count++;//满足条件加1
x++;
}
System.out.println("count="+count);
}
}
大圈套小圈思想
/*
打印下面图形
*****
*****
*****
*****
*/
class Temp{
public static void main(String[] args){
for(int x=0; x<4; x++)//外循环控制的是行数
{
for(int y=0; y<5; y++)//内循环控制的是每一行的个数
{
System.out.print("*");
}
System.out.println();
}
}
}
五、其他控制流程语句break 和 continue
break(跳出),contionue(继续)
break语句:应用范围:选择结构和循环结构
continue语句:应用与循环结构.
注:a、这两个语句离开应用范围,存在没有意义的。
b、这两个语句单独存在下面都不可以有语句,应为执行不到。
c、continue语句是结束本次循环继续下次循环
d、标号的出现,可以让着两个语句作用于指定范围。
class Temp{
public static void main(String[] args){
/*
break:跳出。
break作用的范围:要么是switch语句,要么是循环语句。
记住:当break语句单独存在时,下面不要定义其他语句,因为执行不到。
break跳出所在的当前循环。
如果出现了循环嵌套,break想要跳出指定的循环,可以通过标号来完成。
*/
for (int x=0; x<3; x++){
for (int y=0; y<4; y++){
System.out.println("x="+x);
break;//跳出y++ 执行不到
}
}
//若想条出外循环着要加标号
a:for (int x=0; x<3; x++){
b:for (int y=0; y<4; y++){
System.out.println("x="+x);
break a;//跳出程序结束 x=0
}
}
/*
continue:继续。
作用的范围:循环结构。
continue:结束本次循环,继续下次循环。
如果continue单独存在时,下面不要有任何语句,因为执行不到。
*/
for(int x=0;x<4;x++){
if(x%2==0) //条件满足跳出本次循环
continue;
System.out.println("x="+x);//打印不满足的
}
//continue跳出标号
a:for (int x=0; x<3; x++){
b:for (int y=0; y<4; y++){
System.out.println("x="+x);//打印x=0,1,2
continue a;
}
}
}
}