一、Java条件语句
1.if…else语法
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
2.if…else if…else语法
if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。
使用 if,else if,else 语句的时候,需要注意下面几点:
- if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。
- if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
- 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
3.嵌套的if…else语法
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}
}
二、Java循环结构
1.while
while是最基本的循环,它的结构为:
只要布尔表达式为 true,循环就会一直执行下去。
2.do…whlie
对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。
do {
//代码语句
}while(布尔表达式);
**注意:**布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。
3.for
for(表达式1;表达式2;表达式3){
...代码块/循环体...
}
//理解:
表达式1:初始化变量
表达式2:判断条件(结果必须是boolean,true-执行代码块,false-跳出循环语句)
表达式3:更新变量
//执行流程:
1.初始化变量
2.判断条件
2.1 true:执行代码块,执行完毕后,再调用更新变量,最后重复第二步
2.2 false:跳出循环语句
练习代码
import java.util.Scanner;
public class Test04{
public static void main(String[] args){
//死循环:
for(;;){
System.out.println("死循环");
}
System.out.println("for循环以外的代码");
//for循环变形记:
注意:在for循环中定义的变量不能在循环外使用
int i = 0;
for(;i<5;){
System.out.println("xx" + i);
i++;
}
System.out.println(i);
//需求1:循环录入5次int类型的数字,输出总和
Scanner scan = new Scanner(System.in);
int sum = 0;//总和
for(int i = 1;i<=5;i++){
System.out.println("请输入第" + i + "个数字:");
int num = scan.nextInt();
sum += num;
}
System.out.println("总和为:" + sum);
//需求2:循环录入A同学的5门课成绩,计算平均分
Scanner scan = new Scanner(System.in);
int sum = 0;//总分
for(int i = 1;i<=5;i++){
System.out.println("请输入第" + i + "门成绩:");
int num = scan.nextInt();
sum += num;
}
System.out.println("平均分为:" + (sum/5));
//需求3:循环录入5次int类型的数字,输出最大值
Scanner scan = new Scanner(System.in);
System.out.println("请输入第1个数字:");
int max = scan.nextInt();//假设第一个数字为最小值(这样设计是防止用户输入的都是负数)
for(int i = 2;i<=5;i++){
System.out.println("请输入第" + i + "个数字:");
int num = scan.nextInt();
if(max < num){
max = num;
}
}
System.out.println("最大值为:" + max);
//for循环嵌套练习:
需求1:打印3行4列的长方形
****
****
****
for(int i = 0;i<3;i++){//外层循环控制行数
for(int j = 0;j<4;j++){//内层循环控制列数
System.out.print("*");
}
System.out.println();//换行
}
需求2:打印三角形
* i=0
** i=1
*** i=2
**** i=3
***** i=4
for(int i = 0;i<5;i++){
for(int j = 0;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
package com.gun.work01;
public class work10 {
public static void main(String[] args) {
/**
* @desc 打印
*
*****
****
***
**
*
*
* @author Y
*/
for(int i = 0;i < 5; i++){
for(int j = 0;j < 5-i; j++){
System.out.print("*");
}
System.out.println();
}
}
}
package com.gun.work01;
public class work11 {
public static void main(String[] args) {
/**
* @desc 打印
*
*****
****
***
**
*
*
* @author Y
*/
for(int i = 0;i <= 5; i++){
for(int k =0;k<i;k++){
System.out.print(" ");
}
for(int j = 5;j >= i; j--){
System.out.print("*");
}
System.out.println();
}
}
}
package com.gun.work01;
public class work12 {
public static void main(String[] args) {
/**
* 打印:
*
*
***
*****
*******
*
*/
for(int i = 0;i < 4 ; i++){
for(int k =0;k < 3-i;k++){
System.out.print(" ");
}
for(int j = 0;j < 2*i+1; j++){
System.out.print("*");
}
System.out.println();
}
}
}
package com.gun.work01;
public class work13 {
public static void main(String[] args) {
/**
* 打印:
*
*
* *
* *
*******
*
*/
for(int i = 0;i < 4 ; i++){
for(int k =0;k < 4-i;k++){
System.out.print(" ");
}
for(int j = 0;j < 2*i+1; j++){
if(i==0||i==3||j==0||j==2*i){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
package com.gun.work01;
public class work14 {
public static void main(String[] args) {
/**
* 打印:
*
*******
*****
***
*
*
*/
for(int i = 0;i < 4 ; i++){
for(int k =0;k < i;k++){
System.out.print(" ");
}
for(int j = 0;j < 7- 2*i; j++){
System.out.print("*");
}
System.out.println();
}
}
}
package com.gun.work01;
public class work15 {
public static void main(String[] args) {
/**
* 打印:
*
*******
* *
* *
*
*
*/
for(int i = 0;i < 4 ; i++){
for(int k =0;k < i;k++){
System.out.print(" ");
}
for(int j = 0;j < 7- 2*i; j++){
if(i==0||i==3||j==0||j==7- 2*i-1){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
for vs while vs do-while
1.语法结构的区别:
注意:判断条件都是boolean值,true-循环,false-跳出循环
for(初始化变量;判断条件;更新变量){}
while(判断条件){}
do{}while(判断条件);
2.执行顺序的区别:
for:先判断,再执行
while:先判断,再执行
do-while:先执行一遍,再判断
3.应用场景的区别:
循环次数确定时:for
循环次数不确定时:while、do-while
4.增强for循环
Java5 引入了一种主要用于数组的增强型 for 循环。
Java 增强 for 循环语法格式如下:
for(声明语句 : 表达式) {
//代码句子
}
**声明语句:**声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
**表达式:**表达式是要访问的数组名,或者是返回值为数组的方法。
5.break
break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。
break 跳出最里层的循环,并且继续执行该循环下面的语句。
6.continue
continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
在 for 循环中,continue 语句使程序立即跳转到更新语句。
在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。
三、Java switch case
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
switch case 语句语法格式如下:
switch(expression){
case value : //语句
break; //可选
case value : //语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
switch case 语句有如下规则:
- switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
- switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
- case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
- 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
- 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
- switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。