20171216 Java基础の控制流程
这一个知识点分为:
·条件判断
·循环语句
下面将围绕这两点展开叙述。
1)if——条件判断。
Ⅰ.语句形式:if(表达式1){表达式2;}。即,如果表达式1的值是true,就执行表达式2。
代码示例如下:
public class HelloWorld {
public static void main(String[] args) {
boolean b = true;
if(b){//如果成立就打印yes
System.out.println("yes");
}
}
}
Ⅱ.当表达式2含有多个表达式,需要用{}将表达式2括起来,代码如下:
public class HelloWorld {
public static void main(String[] args) {
boolean b = false;
if(b){//如果有多个表达式,必须用大括弧包括起来
System.out.println("yes1");
System.out.println("yes2");
System.out.println("yes3");
}
if(b)//否则表达式2 3 无论b是否为true都会执行
System.out.println("yes1");
System.out.println("yes2");
System.out.println("yes3");
if(b){//如果只有一个表达式可以不用写括弧,看上去会简约一些
System.out.println("yes1");
}
if(b)
System.out.println("yes1");
}
}
Ⅲ.NB[注意]——if使用过程中可能遇到的坑:if后面有一个分号「;」 而分号也是一个完整的表
达式。代码如下:
public class HelloWorld {
public static void main(String[] args) {
boolean b = false;
if (b);
System.out.println("yes");
}
}
上述代码在第5行,if后面有一个分号; 而分号也是一个完整的表达式。
即,如果b为true,会执行这个分号,然后打印yes;如果b为false,不会执行这个分号,然后打印yes,这
样,看上去无论如何都会打印yes。
Ⅳ.if else语句形式:if(表达式1){表达式2;}else{表达式3;}。代码示例如下:
public class HelloWorld {
public static void main(String[] args) {
boolean b = false;
if (b)
System.out.println("yes");
else
System.out.println("no");
}
}
Ⅵ.else if:多条件判断。代码示例如下:
public class HelloWorld {
public static void main(String[] args) {
//如果只使用 if,会执行4次判断
int i = 2;
if (i==1)
System.out.println(1);
if (i==2)
System.out.println(2);
if (i==3)
System.out.println(3);
if (i==4)
System.out.println(4);
//如果使用else if, 一旦在18行,判断成立, 20行和22行的判断就不会执行了,节约了运算资源
if (i==1)
System.out.println(1);
else if (i==2)
System.out.println(2);
else if (i==3)
System.out.println(3);
else if (i==4)
System.out.println(4);
}
}
Ⅶ.习题训练:
判断是否为瑞年:
闰年判断标准(满足以下任何一个):
1. 如果能够被4整除,但是不能被100整除
2. 能够被400整除
代码如下:
import java.util.Scanner;
public class Lianxi {
public static void main(String[] args) {
Scanner x=new Scanner(System.in);
System.out.println("请输入要判断的年份:");
int a=x.nextInt();
if((a%4== 0 && a%100!=0)||a%400==0){
System.out.println(a+"是闰年");
}
else
System.out.println(a+"不是闰年");
}
}
健康值计算:BMI=体重(kg) / (身高*身高),BMI在[18.5,24)区间属于正常。
2)switch:swich 语句相当于 if else的另一种表达方式。
语法形式为:
switch(表达式/变量){
case 1:表达式1;break;
case 2:表达式2;break;
case 3:表达式3;break;
……
default:表达式n;
}
补充:
1.switch后的变量可以使用byte,short,int,char,String,enum[枚举类型,属于基本类型]。[这些都为整数类型]。
2.String在Java1.7之前是不支持的, Java从1.7开始支持switch用String的,编译后是把String转化为
hash值,其实还是整数。
3.枚举类型介绍:
·枚举enum是一种特殊的类(还是类),使用枚举可以很方便的定义常量。
比如设计一个枚举类型季节,里面有4种常量。代码如下:
public enum Season {
SPRING,SUMMER,AUTUMN,WINTER
}
一个常用的场合就是switch语句中,使用枚举来进行判断。全局代码如下:
public enum Season {
SPRING,SUMMER,AUTUMN,WINTER;//因为是常量,所以一般都是全大写
}
public class HelloWorld {
public static void main(String[] args) {
Season season = Season.SPRING;
//是对枚举变量season赋值,即定义了一个枚举变量season的值为SPRING
switch (season) {
case SPRING:
System.out.println("春天");
break;
case SUMMER:
System.out.println("夏天");
break;
case AUTUMN:
System.out.println("秋天");
break;
case WINTER:
System.out.println("冬天");
break;
}
}
}
·使用枚举的好处:假设在使用switch的时候,不是使用枚举,而是使用int,而int的取值范围就不只是1-4,有可能取一个超出1-4之间的值,这样判断结果就是是而非了。(因为只有4个季节)但是使用枚举,就能把范围死死的限定在这四个当中SPRING,SUMMER,AUTUMN,WINTER,而不会出现奇怪的第5季
·遍历枚举:借助增强型for循环,可以很方便的遍历一个枚举都有哪些常量。代码如下:
public class HelloWorld {
public static void main(String[] args) {
for (Season s : Season.values()) {
//values()是enum中的方法,枚举名.values()这个方法会返回给一个装着枚举元素的数组
System.out.println(s);
}
}
}
for (Season s : Season.values())这段代码⇔
Season[] s = Season.values();//枚举名.values()这个方法会返回给一个装着枚举元素的数组
for (int i = 0; i < s.length; i++) {
System.out.println(s[i]);
}
[p.s.附加]增强型for循环:增强型for循环在遍历一个数组的时候会更加快捷,增强型for循环只能用来取值,却不能用来修改数组里的值。代码如下:
public static void main(String[] args) {
int[] values = new int[]{18,62,68,82,65,9};
int max = values[0];
for (int each : values) {
System.out.println(each);//读取数组中的值
max = (max > each) ? max :( max = each);//找出数组中的最大值
}
System.out.println("最大是"+max);
}
【*重点】:在同一个包里的public类,可以互相使用,不用执行import操作。
【封笔于20171217】此后,不再进行知识点转移,这就要求自己及时总结知识点以及管理、复习相应代码。
原因:觉得知识点都在相应的网站上,转移的同时比较浪费时间。
建议之后在记事本上记载知识点的来源、总结知识框架[用自己的话来归纳]附加相应的代码、知识难点、不懂的地方。