流程控制
- 用户交互Scanner
- 顺序结构
- 选择结构
- 循环结构
- break和continue
一、用户交互Scanner
- java的一个工具包java.util.Scanner是Java5的新特性,可以获取用户的输入。我们可以通过Scanner类来获取用户的输入。
// 创建一个扫描器对象,用于接收键盘输入
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接受:");
// 判断用户有没有输入字符串
if(scanner.hasNext()) { // 这里也可以使用hasNextLine
// 使用next方式接受
String str = scanner.next(); // 如果上面使用的是hasNextLine,那么这里就需要使用nextLine
System.out.println("输出的内容:"+str);
}
// 凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉
scanner.close();
next()和nextLine()的区别:
- next()
- 一定要读取到有效字符后才可以结束输入。
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者是结束符。
- next()不能得到带有空格的字符串。
- nextLine()
- 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
- 可以获得空白
注意事项:
- 一定最后要用close()来关闭IO流。
- 一般情况下使用hasNextLine比较多,使用hasNext的比较少。
- scanner的方法不仅仅只是那么多,其他的方法也是几乎相同的用法。
顺序结构
java的基本结构就是顺序结构,代码按照顺序从上到下依次执行。
选择结构
- if单选择结构
if(true) {
}
- if双选择结构
if(true){
} else {
}
- if多选择结构
if(true){
}else if(true){
}else{
}
- 嵌套的if结构
if(true){
if(true){ }
}
- switch多选择结构
switch一般用来判断一个变量与一系列中某个值是否相等,每个值称为一个分支。
switch (expression) {
case value:
// 语句
break;
case value2:
//语句
break;
default:
//语句
}
注意事项:
- switch语句中的变量类型再java7之前是byte/short/int/char
- 从java7之后,switch里面的变量类型就支持了String类型
- 同时case标签必须为字符串常量或者是字面量。
- case穿透现象,如果没有加上break跳出循环的话,那么就会将下面的所有case都会输出一遍,直到找到下个break之后。
小技巧:反编译
IDEA可以通过将字节码文件拖动到项目文件夹下后自动反编译。通过反编译,我们可以看到Switch的源码是
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package oop;
public class demo01 {
public demo01() {
}
public static void main(String[] args) {
String name = "苏木";
byte var3 = -1;
switch(name.hashCode()) {
case 1064505:
if (name.equals("苏木")) {
var3 = 0;
}
default:
switch(var3) {
case 0:
System.out.println("苏木");
break;
default:
System.out.println("错误");
}
}
}
}
循环结构
- while
- do...while
- do...while和while的区别是,do...while能够保证最少能够执行一次循环,因为他将循环体放在了程序下面。
do{
//循环体
} while(布尔表达式);
- for
- for循环是一种通用的迭代结构,是一种最通用,最有效的循环结构。
- Java5之后引进了一种增强的for循环
- 主要用来遍历数组和集合的。
package oop;
public class ForDemo01 {
public static void main(String[] args) {
int[] numbers = {10,20,30,40,50};
for (int x:numbers) {
System.out.println(x);
}
}
}
只有少数时候需要循环一直进行下去,比如服务器的请求监听相应等
break和continue
- break:作用是跳出循环语句,跳出代码块,但是不会终止程序。也就是说在循环代码块之后的语句同样也会执行。
- continue:终止其中一次循环,然后继续接下来的循环。
- 通俗的讲:break的作用是强制退出循环,而continue的作用是终止某次循环。
关于goto关键字
- goto关键字很早就在程序设计语言中出现,尽管goto仍然是java的一个保留字,但是并未在语言中得到正式的使用;java没有goto,然而再break和continue这两个关键字的身上,我们仍然能看出一些goto的影子——带标签的break和continue。
- 标签是指后面跟一个冒号的标识符,例如label
- 对Java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环。由于break和continue关键字通常只中断当前循环,但若随同标签使用,他们就会中断到存在标签的地方。
- Java有一个标签的用法,可以替代goto关键字,但是写起来相当麻烦,不建议使用。

浙公网安备 33010602011771号