(一) 流程控制语句
Java中的流程控制语句:顺序结构语句;选择结构语句;循环结构语句.
1)顺序结构:程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行.
2)选择结构:也被称为分支结构.选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生
择,按照不同的选择执行不同的代码.
Java语言提供了两种选择结构语句:if语句;switch语句
1.if语句
(1)if语句第一种格式:(针对单个表达式判断)
if(表达式){
语句;
}
执行流程:判断表达式是否成立,如果为true,就执行这个语句,如果是false,就不执行.
例:package If语句;
//if语句第一种格式
public class IfDemo {
public static void main(String[] args) {
//定义变量
int x = 1;
//if语句
if(x == 1){
System.out.println("x的值为1");
}
}
}
(2)if语句的第二种格式:(针对两个表达式判断)
if(表达式){
语句1;
}else{
语句2;
}
执行流程:判断表达式是否成立,如果是true,则执行语句1;如果是false,则执行语句2.
例:键盘录入数据判断两个数据是否相等.
package If语句;
import java.util.Scanner;
//键盘录入两个数据,判断两个数据是否相等
public class IfTest {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//提示用户并接收数据
System.out.println("请输入第一个数据: ");
int a = sc.nextInt();
System.out.println("请输入第二个数据: ");
int b = sc.nextInt();
//if语句进行判断
if(a == b){
System.out.println("这两个数据相等");
}else{
System.out.println("这两个数据不相等");
}
}
}
(3)if语句的第三种格式:(针对多个判断)
if(表达式1){
语句1;
}else if(表达式2){
语句2;
}else if(表达式3){
语句3;
...
}else{
语句n+1;
}
执行流程:首先判断表达式1是否成立,如成立即true,执行语句1;如果为false,判断表达式2是否成立,为true,执行语句2;为false,再次判断表达式3是否成立,true,执行语句3...最终上述都不成立,执行else里面语句n+1.
例:
package If语句;
import java.util.Scanner;
/ *
* 编写代码实现如下内容:if语句实现
考试成绩分等级。
90~100 A等。
80-89 B等。
70-79 C等。
60-69 D等。
60以下 E等。
请根据给定成绩,输出对应的等级。
* */
public class IfDemo2 {
public static void main(String[] args){
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//用户提示
System.out.println("请输入考试成绩: ");
//键盘接收数据
int x = sc.nextInt();
//if语句
if(x<0 || x>100){
System.out.println("数据错误");
}else if(x>=90 && x<=100){
System.out.println("A等");
}else if(x>=80 && x<=89){
System.out.println("B等");
}else if(x>=70 && x<=79){
System.out.println("C等");
}else if(x>=60 && x<=69){
System.out.println("D等");
}else{
System.out.println("E等");
}
}
}
(4)if语句的注意事项:
①如果if语句里面只有一条语句,if(表达式)后面的大括号可以省略,但是建议不要省略.
②if语句的表达式不管是简单的还是复杂的,最终都是boolean类型.
③在if语句里面,有分号的地方不能有左大括号,有左大括号的地方不能有分号.
(5)三元运算符和if语句
能使用三元运算符去实现的,肯定能使用if语句,反之,不成立(if语句实现的,不一定能够使用三元)
三元运算符对具体的结果进行操作,有一个具体的数值,它的操作对象不能是一个语句.
2.switch语句
(1)switch语句的格式:
switch(表达式){
case 值1:
语句1;
break;
case 值2:
语句2;
break;
....
default:
语句n+1;
break;
}
(2)执行流程:首先用siwtch后面表达式的值和case后面的值进行比较,如果和值1相等,执行语句1,如果不相等,跟值2比较,如果相等,
行语句2,以此类推,遇见break结束,如果上述没有相等的值,执行default中的语句.
(3)switch语句的几个注意事项:
①default在末尾中的break可以省略
②default可以在该switch语句中的任何位置
③case后面只能跟常量,不能跟变量
④在swtich语句中:如果中间的中没有写break,会造成一个现象:case穿透
⑤switch语句的结束条件:
a:遇见break结束
b:程序默认执行到末尾
例1: int x = 2;
int y = 3;
switch(x){
default:
y++;
break;//语句遇见break结束
case 3:
y++;
case 4:
y++;
}
System.out.println("y="+y);//y=4
例2: int x = 2;
int y = 3;
switch(x){
default:
y++; //程序默认执行到末尾
case 3:
y++;
case 4:
y++;
}
System.out.println("y="+y);//y=6
⑥switch后面的数据类型:int,byte,short,char(本身能跟的类型)
JDK5.0以后:可以根据枚举类型
JDK7以后,可以跟String类型
例:
import java.util.Scanner;
/*
* 录入月份的值,输出对应的季节
*
* 3,4,5 春季
* 6,7,8 夏季
* 9,10,11 秋季
* 12,1,2 冬季
* */
public class SwitchTest {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//提示并接收数据
System.out.println("请输入一个月份的值: " );
int month = sc.nextInt() ;
//使用switch语句
switch(month){ //利用case穿透现象
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break ;
case 9 :
case 10:
case 11:
System.out.println("秋季");
break ;
case 12:
case 1:
case 2:
System.out.println("冬季");
break ;
default :
System.out.println("数据输入错误...");
break ;
}
}
}
3)循环结构语句:循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当
复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环.
循环结构语句:for循环;while循环;do-while循环.
1.for循环语句
(1)for循环结构语句格式:
for(初始化语句;判断条件语句;步长语句(条件控制语句)){
循环体语句;
}
执行流程:首先对初始化语句进行赋值,然后看条件语句是否成立;如果是true,那么就执行循环体语句;执行完毕之和,会执行条件
制语句(++/--),该变量自增1或者自减1,然后再次判断条件语句是否成立,如果成立,就继续执行循环体语句;如果条件语句不成立,
那么for循环语句结束.
例:
package 循环语句_for语句;
//在控制台输出10次hello world!
public class ForDemo {
public static void main(String[] args){
//for循环
for(int i=1;i<=10;i++){
System.out.println("hello world!");
}
}
}
for循环语句的注意事项:
有大括号的地方不能有分号,有分号的地方不能有大括号!
for循环语句的变量只能在本大括号里面去使用;及时的从内存中消失,有利于内存空间.
例1:
package 循环语句_for语句;
import java.util.Scanner;
/*
* 需求:求n的阶乘!
*
* 分析:
* 阶乘的概念:
* n! = n*(n-1)!
* n! = n*(n-1)*(n-2).....3*2*1;
*
* 阶乘思想
*
* 求和思想
* */
public class ForDemo5 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//提示并录入数据
System.out.println("n= ");
long n = sc.nextLong();
//定义最终结果变量
long jc = 1;
//for循环
for(int i = 1; i <= n; i ++){
jc *= i;
}
System.out.println(n+"的阶乘是"+jc);
}
}
例2:
package 循环语句_for语句;
/*
* 需求: 求和思想
* 求1-100之间的和
* 求1-100之间的偶数和
* 求1-100之间的奇数和
* */
public class ForDemo4 {
public static void main(String[] args) {
//求1-100之间的和
//定义变量
int sum = 0;
//for循环
for(int i = 1; i <= 100; i ++){
sum += i;
}
System.out.println("1-100之间的和是: "+sum);
System.out.println("-------------------");
//求1-100之间的偶数和
int sum2 = 0;
//for循环
for(int i = 1; i <= 100; i ++){
if(i % 2 ==0){
sum2 += i;
}
}
System.out.println("1-100之间的偶数和为: "+sum2);
System.out.println("-------------------");
//求1-100之间的奇数和
int sum3 = 0;
//for循环
for(int i = 1; i <= 100; i++){
//判断奇数
if(i % 2 != 0){
sum3 += i;
}
}
System.out.println("1-100之间的奇数和是: "+sum3);
}
}
2.while循环语句
while语句的格式:
基本的格式:
while(条件判断语句){
循环体语句;
}
扩展的格式:
初始化语句;
while(条件判断语句){
循环体语句;
控制条件语句;
}
执行流程:初始化语句进行赋值,进入while语句:判断条件是否成立;如果成立,执行循环体语句,控制条件语句进行自增自减,然后
次判断条件是否成立,成立继续执行循环体语句,以次类推.如果不成立,while语句结束
例://定义初始化语句
int x = 1 ;
while(x <= 10){
System.out.println("hello world");
x++;
}
例1:
ackage 循环语句_While;
/*
* 问题:
* 我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。
* 请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?
*
* 分析:
* 1)定义统计变量
* 2)最终厚度:8848m
* 3)初始厚度:0.01m
* 4)折叠一次,是以前的2倍
* 5)初始化厚度小于最终厚度:
* 统计变量++
* */
public class WhileDemo2 {
public static void main(String[] args) {
//1)定义统计变量
int count = 0;
//定义初始厚度和最终厚度,以cm为单位运算
int start = 1;
int end = 884800;
//不明确次数的情况下使用while循环语句
while(start < end){
count ++;
//折叠一次,是以前的2倍
start *= 2;
System.out.println("折叠第"+count+"次的厚度为"+start);
}
System.out.println("折叠的次数为"+count+"次");
}
}
3.do-while循环语句
do-while循环结构语句的格式:
基本的格式:
do{
循环体语句;
}while(条件判断语句) ;
扩展格式:
初始化语句;
do{
循环体语句;
控制条件语句;
}while(条件判断语句) ;
例:public class DoWhileDemo {
public static void main(String[] args) {
//定义初始化条件
int i = 1;
do{
System.out.println("hello");
i++;
}while(i<4);
}
do-while循环,while循环,for循环:
do-while循环语句,循环体至少执行一次;而for循环,while循环,先判断条件语句是否成立,成立才执行循环体语句;
for循环和while循环:
使用区别:如果循环结束,还想使用控制的那个变量,那么必须使用while循环;一般情况下,使用for循环.从内存的角度来说,使用for循环好处大于while循环
应用场景:如果知道一个范围,使用for循环.如果不明确循环的次数,使用while循环.
死循环的两种格式:
第一种格式:
while(true){
语句;
}
第二种格式:
for(;;){
语句;
}
4.循环的嵌套:循环语句的中的循环体语句本身就是循环语句.
例1:
package 循环的嵌套;
/*
* 在控制台输出:4行5列的*形状
*
* *****
* *****
* *****
* *****
*
* */
public class ForForDemo {
public static void main(String[] args) {
//for循环
for(int x = 0;x < 4; x++){//控制行
for(int y = 0; y < 5; y++){//控制列
System.out.print("*");
}
System.out.println();
}
}
}
例2:
package 循环的嵌套;
/*
* 需求:在控制台输出
* *
**
***
****
*****
* */
public class ForForDemo2 {
public static void main(String[] args) {
//外层控制行数,内层控制列数
/*
* 第一行对应的列:y=0; y<=0 ;y++
* 第二行对应的列:y=1; y<=1 ;y++
* 第三行对应的列:y=2; y<=2 ;y++
* 第四行对应的列:y=3; y<=3 ;y++
* 第五行对应的列:y=4...
* x的值:0,1,2,3,4
* */
for(int x = 0; x < 5; x++){//控制行
for(int y = 0; y <= x; y++){//控制列
System.out.print("*");
}
System.out.println();
}
}
}
例3:
package 循环的嵌套;
/*
* 需求:在控制台输出一下*形
* *
**
***
****
*****
******
*******
********
*********
99乘法表
* */
public class ForForDemo3 {
public static void main(String[] args) {
for(int x = 0; x < 9; x++){//外层控制行
for(int y = 0; y <= x; y++){//内层控制列
System.out.print("*");
}
System.out.println();
}
System.out.println("------------------");
//99乘法表
for(int x = 1; x <= 9; x++){
for(int y = 1; y <=x; y++){
System.out.print(x+"*"+y+"="+x*y+"\t");
}
System.out.println();
}
}
}
(二)跳转控制语句
跳转控制语句:
break:中断
continue:继续
return:返回
例:
package 跳转控制语句;
public class BreakDemo {
public static void main(String[] args) {
for(int i = 0; i < 10; i++){
if(i == 3){
// break;//0 1 2 over
// continue;//0 1 2 4 5 6 7 8 9 over
return;//0 1 2
}
System.out.println(i);
}
System.out.println("over");
}
}