1.选择语句
1.1 顺序结构
定义:代码中不存在流程控制 , 程序按照顺序一行一行的向下执行 , 直到代码全部运行完成.
1.2 if语句
-
if意思 : 如果 … 那么 …
-
语法格式 : if ( boolean 表达式)
{
语句体;
}
流程 : 如果boolean 表达式为 true , 才执行 { } 里的语句体.
注意: if ( boolean 表达式) 后面不要分号( ; ) .
//需求:演示if语句的使用
public class IfDemo1 {
/*
步骤:
(1)定义一个整数类型的变量a
(2)判断a大于5,大于打印“a大于5”
(3)判断a大于20,大于打印“a大于20”
*/
public static void main(String[] args){
//定义一个整数类型的变量a
int a = 15;
//判断a大于5,大于打印“a大于5”
if(a > 5){
System.out.println("a大于5");
}
//判断a大于20,大于打印“a大于20”
if(a > 20){
System.out.println("a大于20");
}
}
}
1.3 if - else语句
-
if - else 意思 : 如果 … 那么 … 否则…
-
语法格式 : if ( boolean 表达式)
{
语句体1;
}
else
{
语句体2;
}
流程 : 如果boolean 表达式为 true , 才执行 { } 里的语句体1. 否则执行{ } 里的语句体2.
//需求:演示if-else语句的使用
public class IfElseDemo {
/*
步骤:
(1)定义一个整数类型的变量a
(2)判断a是奇数还是偶数,如果是偶数打印“a是偶数”,否则打印“a是奇数”
*/
public static void main(String[] args){
//定义一个整数类型的变量a
int a = 20;
//判断a是奇数还是偶数,如果是偶数打印“a是偶数”,否则打印“a是奇数”
if(a % 2 == 0){
System.out.println("a是偶数");
}else{
System.out.println("a是奇数");
}
}
}
1.4 if - else if - else 语句
-
if - else if - else 意思 : 如果 … 那么 … 如果 … 那么 … 否则…
-
语法格式 : if ( boolean 表达式1)
{
语句体1;
}
else if (boolean 表达式2)
{
语句体2;
}
//可以有多个 else if
else
{
前面的条件都是false , 执行该语句体
}
流程 : 哪个boolean 表达式为 true , 才执行 { } 里的语句体. 如果前面的boolean表达式都是false , 执行else里语句体.
注意: 最后一个else可以不写. 只能存在一个else{ } .
//需求:根据输入的一个数字,判断是星期几?
public class IfElseIfElseDemo2 {
/*
步骤:
(1)定义一个整数类型的变量weekday
(2)判断变量weekday,如果weekday为1输出“周一”,如此类推
*/
public static void main(String[] args) {
//定义一个整数类型的变量weekday
int weekday = 5;
//判断变量weekday,如果weekday为1输出“周一”,如此类推
if (weekday == 1) {
System.out.println("周一");
} else if (weekday == 2) {
System.out.println("周二");
} else if (weekday == 3) {
System.out.println("周三");
} else if (weekday == 4) {
System.out.println("周四");
} else if (weekday == 5) {
System.out.println("周五");
} else if (weekday == 6) {
System.out.println("周六");
} else if (weekday == 7) {
System.out.println("周日");
} else {
System.out.println("输入错误");
}
}
}
1.5 switch语句
-
switch使用条件: 对于判断条件是否等于某一个数值 , 我们可以使用switch. 所有的选择语句都可以用if - else 语句, swithch只能用在等值判断下.
-
语法格式 : switch( 整型表达式 ) {
case A值: 语句体1; break;
case B值: 语句体2; break;
case C值: 语句体3; break;
…多个case语句
default:
以上case值都不满足时 , 执行该语句;
break;//最后的break可以省略
}
-
支持类型 : 1. 整型表达式的类型:byte,short,char,int.
2. Java5开始支持枚举.
3. Java7开始支持String.
-
注意点: case后面的值必须时常量.
-
switch的穿透性质 : switch进入的第一个case判断成功进入的代码块如果没有break或者return的话,后面所有的case都不会判断,默认为true直接执行里面的代码块。
//需求:使用switch来完成,根据输入的一个数字,判断是星期几?
public class SwitchDemo {
/*
步骤:
(1)定义一个整数类型的变量weekday
(2)判断变量weekday,如果weekday为1输出“周一”,如此类推
*/
public static void main(String[] args) {
//定义一个整数类型的变量weekday
int weekday = 9;
//判断变量weekday,如果weekday为1输出“周一”,如此类推
switch (weekday) {
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 - else if -else if -else 效果一样
2.循环语句
2.1 while
-
语法格式: while( boolean 表达式){
循环体
}
-
流程: 如果boolean 表达式一直为true, 就一直执行循环, 直到boolean表达式为false循环结束.
//需求:打印从1到100的数
public class WhileDemo2 {
/*
步骤:
(1)定义一个变量number
(2)循环打印number
*/
public static void main(String[] args){
//定义一个变量number
int number = 1;
//循环打印number
while(number <= 100){
System.out.println("number=" + number);
number++;
}
}
}
2.2 do - while
-
语法格式: do{
循环体
}
while( boolean 表达式);
-
流程: 先执行一次循环体,再进行boolean表达式的判断.如果为true就继续进行循环.如果为false就跳过循环.
-
特点:就算boolean表达式为false,也会至少执行一次循环体.
//需求:演示while和do-while的区别 public class DoWhileDemo1 { /* 步骤: (1)定义两个整数变量a和b (2)分别使用while和dowhile判断a > b 注意:出来结果while没有打印任何内容,do-while打印了一次“a > b”,才算作业完成。 */ public static void main(String[] args) { //定义两个整数变量a和b int a = 10; int b = 20; //while没有打印任何内容 while (a > b) { System.out.println("a > b"); } System.out.println("------------------"); //do-while打印了一次“a > b” do { System.out.println("a > b"); } while (a > b); } }
2.3 for
-
语法格式:
for(定义一个变量并赋值; boolean 表达式 ;循环后的操作)
{
循环体
}
一般情况下循环后的操作是变量的递增或者递减
-
流程: 先定义一个变量并赋值,再进行boolean表达式的判断: 如果为true就执行循环体, 再进行循环后的操作, 最后回到boolean表达式, 重复上述操作. 如果为false, 则跳过循环体, 循环结束.
//需求:演示for语句的使用
public class ForDemo {
/*
步骤:
(1)使用for循环打印1到10
(2)使用for循环计算100以内正整数之和
*/
public static void main(String[] args) {
//使用for循环打印1到10
for (int i = 1; i <= 10; i++) {
System.out.println("i=" + i);
}
}
}
2.4 控制循环
2.4.1 break和return
- break:表示结束当前所在的循环.
- return:表示结果循环所在的方法.
//需求:从1输出到10,当迭代变量为7,就终止程序
public class BreakDemo {
/*
步骤:
(1)循环打印1到10
(2)判断循环次数是否为7,是就停止循环,否则打印循环次数
*/
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i == 7)
break;//结束当前整个循环,继续执行for外面的代码
System.out.println("i=" + i);
}
System.out.println("停止");//输出
}
}
//需求:从1输出到10,当迭代变量为7,就终止程序
public class ReturnDemo {
/*
步骤:
(1)循环打印1到10
(2)判断循环次数是否为7,是就停止循环,否则打印循环次数
*/
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i == 7)
return;//结束循环所在的方法
System.out.println("i=" + i);
}
System.out.println("停止");//不输出
}
}
2.4.2 continue
- continue: 跳过当前的循环, 执行循环之后的操作语句 , 进入下一次的循环.
//需求:从1输出到10,不要输出4
public class ContinueDemo {
/*
步骤:
(1)循环遍历1到10的数
(2)判断如果i为4,跳过当前循环,否则打印i
*/
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
//当i=4的时候跳过本次循环,进行后续的循环操作
if (i == 4)
continue;
System.out.println("i=" + i);
}
}
}
2.5嵌套循环
循环解决的是: 某一个操作需要重复执行, 如果一个重复的操作需要做N次, 此时得使用嵌套循环.
//需求:打印九九乘法表
public class Table99Demo {
/*
思路:
通过普通方式找到规律,写出最终通用版本
*/
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {//外层循环
//用得到的i进行循环
for (int j = 1; j <= i; j++) {//内层循环
//打印乘法表
System.out.print(j + "*" + i + "=" + i * j);
//每一行中的算式之间的间隔
System.out.print(" ");
}
//换行
System.out.println("");
}
}
}
3.总结
3.1 Java代码的执行顺序
当代码里面没有流程控制的情况下, 代码按自己书写的顺序一行一行从上往下执行每一条语句, 直到代码都运行完毕.
3.2 什么时候需要使用选择结构
当代码存在多个不同的结果的时候, 就会产生不同的选择, 这个时候就需要使用选择结构
3.3 if - else if - else if - else的语法和执行流程
if - else 语法 : if( boolean表达式){
语句体1
}
else{
语句体2
}
if - else 执行流程 : 如果boolean 表达式为 true , 才执行 { } 里的语句体1. 否则执行{ } 里的语句体2.
if - else if - else
语法 : if( boolean表达式1){
语句体1
}
else if( boolean表达式2){
语句体2
}
…可以有多个else if
else {
前面都不满足,执行这个语句体
}
执行流程 : 哪个boolean 表达式为 true , 才执行 { } 里的语句体. 如果 前面的boolean表达式都是false , 执行else里语句体.
3.4 什么时候需要使用循环结构
当某一个操作需要重复执行的时候, 需要使用循环结构.
3.5 while的语法和执行流程
while 语法: while( boolean表达式){
循环体
}
while 执行流程: 如果boolean 表达式一直为true, 就一直执行循环, 直到boolean表达式为false循环结束.
3.6 do-while的语法和执行流程
do - while 语法: do{
循环体
}while( boolean表达式)
do - while 执行流程: 先执行一次循环体,再进行boolean表达式的判断.如果为true就继续进行循环.如果为false就跳过循环.
3.7 for的语法和执行流程
for 语法:
for(定义一个变量并初始化; boolean表达式; 循环后的操作){
循环体
}
for 执行流程: 先定义一个变量并赋值,再进行boolean表达式的判断: 如果为true就执行循环体, 再进行循环后的操作, 最后回到boolean表达式, 重复上述操作. 如果为false, 则跳过循环体, 循环结束.
3.8 嵌套循环的执行流程
嵌套循环执行流程: 外循环执行一次,内循环执行完整
for(1;2;3){//外层循环
for(4;5;6){//内层循环
7
}
}
1和4 :定义变量并赋值 2和5 : boolean表达式 3和6 .循环后的操作(一般是自增或者自减) 7:循环体
执行过程:1 2 4 5 7 6 5 7 6 5 7 6 5(直到5为false,内层结束,继续外层), 3 2 4 5 7 6(直到外层循环为false时结束整个循环)
3.9 break,return,continue各自的作用
break: 结束当前整个循环,继续执行for外面的代码
return: 结束循环所在的方法
continue: 跳过当前的循环, 执行循环之后的操作语句 , 进入下一次的循环.