JAVA流程控制语句
一、选择语句
1. if语句
格式
if(布尔表达式){
表达式为真执行的代码块;
}
示例
public class Test{
public static void main(String[] args){
boolean foo = true;
if(foo){
System.out.print("A");
System.out.print("B");
}
}
}
if语句关心的后面的内容是一个代码块,有截断符,这条语句就结束了,所以如果没有花括号那么只执行if语句后的一条语句。
public class Test1{
public static void main(String[] args){
boolean foo = false;
if(foo)
System.out.print("A");
System.out.print("B");
}
}
输出结果为
2.if - else 语句
格式
if(布尔表达式) {
//表达式的值为真,执行这里的语句
} else {
//表达式的值为假,执行这里的语句
}
3.if - else if -else语句
格式
if (布尔表达式 1) {
//表达式1的值为真,执行这里的代码
} else if (布尔表达式 2) {
//表达式2的值为真,执行这里的代码
} else {
//意识表达式都为假,执行这里的代码
}
示例
public class Test1 {
public static void main(String[] args){
boolean foo = false;
if(foo) {
System.out.print("A");
}else if(3<4)
System.out.print("B");
}
}
执行结果
4.switch 语句
switch case语句里,switch的小括号里可以放常量,但是一般不会放,这里需要放一个变量或表达式
注意:不可以放long型,float型,double型;
格式
switch(表达式){
case 值1 :
//执行的语句
break; //不必要
case 值2 :
//执行的语句
break; //不必要
……
default :
//执行的语句
break; //不必要
}
开关类型控制存在一个问题——击穿问题(没有break它就一直向下执行,直到遇到break或者到当前语句块结束才中断)
示例
public class Test1{
public static void main(String[] args){
int a = 0;
switch(a){
case 0:
System.out.println("0");
case 1:
System.out.println("1");
break;
default:
break;
}
}
}
执行结果
小练一下
知道年,月,计算这个从这个月的第一天到这年的最后一天还有多少天。
public class Test2 {
public static void main(String[] args){
int y = Integer.parseInt(args[0]);//main 传参,在执行命令时可以 输入参数 输入的参数都会被当作字符串放入args中当成他的执行参数来用
int m = Integer.parseInt(args[1]);
int days = 0;
switch(m){
case 1:
days = days + 31;
case 2:
if((y%4==0&&y%100!=0)||y%100==0&&y%400==0){//判断闰年
days = days + 29;
}else{
days = days + 28;
}
case 3:
days = days + 31;
case 4:
days = days + 30;
case 5:
days = days + 31;
case 6:
days = days + 30;
case 7:
days = days + 31;
case 8:
days = days + 31;
case 9:
days = days + 30;
case 10:
days = days + 31;
case 11:
days = days + 30;
case 12:
days = days + 31;
}
System.out.println(days);
}
}
执行结果
二、循环语句
1.for 循环
格式
for(1.数据初始化部分 ; 2.条件判断部分 ;3.条件改变部分 ) {
//循环体
}
上面这是标准形式的for循环,for循环括号中的 1、2、3都可以没有,如下:
int i = 0
for(; i <= 5; ){//一直循环0
System.out.println(i);
}
int i = 0
for(;; ){//死循环
i++;
System.out.println(i);
}
但是for循环里的 “;” 一个都不能少!
这里说一下break和continue的区别
break: 结束当前循环,跳出循环后执行循环体后面的语句。
continue: 回归到循环体的判断条件继续执行循环。
示例
//break
public class Test3 {
public static void main(String[] args) {
for(int i=1; i<=10;i++){
if(i == 3){
break;
}
System.out.println(i);
}
}
}
执行结果
//countine "逢7过"小游戏
public class Test3{
public static void main(String[] args){
for(int i = 0; i < 100;i++){
String item = i + "";//任何一个东西加上字符串都会转为字符串
boolean flag = item.contains("7"); //判断字符串是否含有7
if(flag){
continue;
}else if(i%7==0){
continue;
}else{
System.out.println(i);
}
}
}
}
执行结果(部分)
2.增强for循环
格式
for (声明语句 : 表达式) {
//循环体
}
示例
public class Test4{
public static void main(String[] args){
int[] arrays = {1,2,3,4,5,6};
for(int temp : arrays){ //遍历数组
System.out.println(temp);
}
}
}
3.while循环
格式
while(布尔表达式){
//循环体
}
** 注意**
public static void main(String[] args){
while(3>4){//编译不通过
System.out.println("A");
}
}
public static void main(String[] args){
int a = 3;
int b = 4;
while(a>b){//编译可以通过
System.out.println("A");
}
}
这是因为如果写成3>4,那么在循环过程中将不可能改变3或4的值,没有意义,所以编译不通过;如果写a>b,那么有可能在循环过程中改变a或b的值,还有意义,可以编译运行
知道循环次数的用for,不知道循环次数的用while