选择结构
顺序结构
如果代码里没有流程控制,程序是按照书写的格式从上而下一行一行执行的,一条语句执行完之后继续执行下一条语句,中间没有判断和跳转,直到程序的结束。
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入门第三天的全部内容了。