选择结构
顺序结构
如果代码里没有流程控制,程序是按照书写的格式从上而下一行一行执行的,一条语句执行完之后继续执行下一条语句,中间没有判断和跳转,直到程序的结束。
public class Demo16 { public static void main(String[] args) { System.out.println("A"); System.out.println("B"); System.out.println("C"); System.out.println("D"); } }
上面的代码无论怎么运行,程序的输出顺序总是ABCD。
但是,我们的程序应该像一个人的人生轨迹一样,会面临很多分岔路的选择, 一旦下定决心走某一条路,就不能再回头。
选择结构
选择结构也被称为分支结构。代码根据逻辑判断,存在多个不同的结果,此时就会产生不同的选择,不 同的选择执行不同的代码。
Java中存在两种选择结构语句:
(1)if 语句
(2)switch 语句
if语句
语义:如果。。。那么。。。
if(bolean表达式){ 语句体; }
if后面的{}表示一个整体—代码块,称之为语句体;
当boolean表达式为true,才执行这里的代码块。
注意:if(boolean表达式)后面是没有分号的。
编辑
public class Demo17 { public static void main(String[] args) { int a = 7; System.out.println("begin"); if (a > 5) { System.out.println("a大于5"); } System.out.println("and"); if (a > 10) { System.out.println("a大于10"); } System.out.println("end"); } }
控制台输出:
begin a大于5 and end
if-else语句
语义:如果。。。那么。。。否则。。。
if(boolean表达式){ 语句体1; }else{ 语句体2; }
如果boolean表达式结果为true,就执行语句体1,否则执行语句体2。
编辑
public class Demo18 { public static void main(String[] args) { int a = 7; System.out.println("begin"); if (a % 2 == 0) { System.out.println("a是偶数"); }else{ System.out.println("a是奇数"); } System.out.println("end"); } }
控制台输出:
begin a是奇数 end
if-else if-else语句
语义:如果。。。那么。。。如果。。。那么。。。否则。。。
if(boolean表达式1){ 语句体1; }else if(boolean表达式2){ 语句体2; }else{ 语句体3; }
public class Demo19 { public static void main(String[] args) { int a = 7; if (a > 5) { System.out.println("a>5"); }else if(a < 10){ System.out.println("a<10"); }else { System.out.println("a>2"); } } }
控制台输出:
a>5
(1)根据输入的一个数字,判断是星期几?
public class Demo20 { public static void main(String[] args) { int day = 7; if (day == 1) { System.out.println("星期一"); }else if (day == 2) { System.out.println("星期二"); }else if (day == 3) { System.out.println("星期三"); }else if (day == 4) { System.out.println("星期四"); }else if (day == 5) { System.out.println("星期五"); }else if (day == 6) { System.out.println("星期六"); }else if (day == 7) { System.out.println("星期日"); }else{ System.out.println("错误"); } } }
控制台输出:
星期日
switch语句
上面使用if-elseif-else完全没问题,但是对于这种判断条件是否等于某一个数值的,我们有另一种更简单的分支语句:switch语句,其格式如下:
switch(整型表达式){ case 值1: 语句体1; break; case 值2: 语句体2; break; case 值3: 语句体3; break; default: 语句体4; break; }
使用注意:
(1)整型表达式的类型:byte,short,char,int;
(2)Java5开始支持枚举;
(3)Java7开始支持String;
(4)case之后的表达式结果必须是常量;
(5)case表示执行代码的入口,一旦进入某个入口后,代码会忽略掉后面其他case,代码会一直往下执行,直到遇到break或return。(switch的穿透效果)。
public class Demo21 { public static void main(String[] args) { int day = 3; switch(day){ 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 6: System.out.println("星期六"); break; case 7: System.out.println("星期日"); break; default: System.out.println("错误"); break; } } }
控制台输出:
星期三
效果等价于if-elseif-elseif-else语句
使用场景:所有的选择语句都可以使用if语句,switch语句只适合做等值判断。
循环结构
在满足循环条件的情况下,重复执行某一段代码,这段被重复执行的代码被称为循环体语句。
(1)while语句
(2)do while语句
(3)for语句
注:三种循环结构可以完成相同的功能,仅仅只是语法上有差异。
while语句
while(boolean表达式){ 循环体; }
编辑
特点:
先判断boolean表达式:
若为false,跳过循环体;
若为true,执行循环体,执行完,再重新判断boolean表达式。
(1)打印10行Hello
public class Demo22 { public static void main(String[] args) { int a = 0; while(a<10){ a++; System.out.println("Hello"); } } }
(2)从1打印到100
public class Demo23 { public static void main(String[] args) { int a = 1; while(a <= 100){ System.out.println(a); a++; } } }
(3)计算100以内正整数之和
public class Demo24 { public static void main(String[] args) { int a = 1; int sum = 0; while(a <= 100){ sum += a; a++; } System.out.println(sum); } }
do while语句
do{ 循环体; }while(boolean表达式);
编辑
特点:
先执行一次循环体,再判断表达式:
若为true,就执行循环体,再重新判断boolean表达式 ;
若为false,跳过循环体。
while和do while的区别
do while是先执行后判断,即使判断条件为false,该循环至少会执行一次。
(1)打印10行Hello
public class Demo25 { public static void main(String[] args) { int a = 1; do { System.out.println("Hello"); a++; }while (a<=10); } }
(2)从1打印到100
public class Demo26 { public static void main(String[] args) { int a = 1; do { System.out.println(a); a++; }while (a<=100); } }
(3)计算100以内正整数之和
public class Demo27 { public static void main(String[] args) { int a = 1; int sum = 0; do { sum += a; a++; }while (a<=100); System.out.println(sum); } }
for语句
for(初始化语句;boolean表达式;循环后操作语句){ 循环体; }
编辑
特点:
初始化语句:只在循环开始时执行一次,一般是定义一个变量,并赋值。
boolean表达式:表达式为false时,循环终止,为true,才执行循环体。
循环后操作语句:循环体执行后会调用该语句,一般是变量的递增或递减操作。
执行顺序:
(1)初始化语句
(2)boolean表达式:
若为false:跳过循环体
若为true:
(3)执行循环体
(4)循环后操作语句:boolean表达式
public class Demo28 { public static void main(String[] args) { int a = 1; int sum = 0; for (int i = 0;i<100;i++){ sum += a; a++; } System.out.println(sum); } }
死循环:表示循环的boolean表达式一直未true,重复执行循环体。
while循环死循环
while(true){ 循环体; }
do while循环死循环
do{ 循环体; }while(true);
for循环死循环
for(;;){ 循环体; }
控制循环
break
break表示结束当前所在的循环。
(1)从1输出到10,当迭代变量为7,就停止循环。
public class Demo29 { public static void main(String[] args) { for(int i = 1;i<=10;i++){ if (i == 7) { break; } System.out.println(i); } } }
控制台输出:
1 2 3 4 5 6
注意:break之后的语句执行不了,所以不能编写。
return
return表示结束当前循环所在的方法,方法都结束了,循环也就结束了。
public class Demo30 { public static void main(String[] args) { for(int i = 1;i<=10;i++){ if (i == 7) { return; } System.out.println(i); } } }
控制台输出:
1 2 3 4 5 6
continue
continue表示跳过当前这一次循环,执行循环之后的操作语句,进入下一次循环操作。
public class Demo31 { public static void main(String[] args) { for(int i = 1;i<=10;i++){ if (i == 7) { continue; } System.out.println(i); } } }
控制台输出:
1 2 3 4 5 6 8 9 10
以上就是Java入门第三天的全部内容了。