流程控制
输入输出
输出
1 | System.out.println 换行 |
格式化输出
1 | printf("%.3f", d) |
输入
1 | 和输出相比,Java的输入就要复杂得多。 |
1 | 创建Scanner对象并传入System.in。System.out代表标准输出流,而System.in代表标准输入流。直接使用System.in读取用户输入虽然是可以的,但需要更复杂的代码,而通过Scanner就可以简化后续的代码。 |
1 | + scanner.next 读取直到空格符 |
小结
1 | Java提供的输出包括:System.out.println() / print() / printf(),其中printf()可以格式化输出; |
if判断
只有一条语句时可以省略华括号
if()
{}
else if()
{}
else
{}
1 | 前面讲过了浮点数在计算机中常常无法精确表示,并且计算可能出现误差,因此,判断浮点数相等用==判断不靠谱 |
判断引用类型数据是否相等
1 | 在Java中,判断值类型的变量是否相等,可以使用==运算符。但是,判断引用类型的变量是否相等,==表示“引用是否相等”,或者说,是否指向同一个对象。例如,下面的两个String类型,它们的内容是相同的,但是,分别指向不同的对象,用==判断,结果为false: |
1 | public class Main { |
1 | 要判断引用类型的变量内容是否相等,必须使用equals()方法: |
1 | 注意:执行语句s1.equals(s2)时,如果变量s1为null,会报NullPointerException |
1 | public class Main { |
switch语句
1 | switch(option) |
新语法
1 | case没有花括号,可以合理的增减break(具有 穿透性);比较字符串时是比较内容 |
1 | 使用新的switch语法,不但不需要break,还可以直接返回值。把上面的代码改写如下 |
case语句执行的是同一组语句块
1 | 如果有几个case语句执行的是同一组语句块,可以这么写 |
匹配字符串
1 | switch语句还可以匹配字符串。字符串匹配时,是比较“内容相等”。 |
枚举类型
yield
1 | 在switch表达式内部,我们会返回简单的值。 |
小结
1 | switch语句可以做多重选择,然后执行匹配的case语句后续代码; |
while
1 | while(xxx){ |
do….while
至少执行一次
1 | do{ |
for(初始条件,循环条件,更新计数器)
1 | 除了while和do while循环,Java使用最广泛的是for循环。 |
1 | 使用for循环时,计数器变量i要尽量定义在for循环中: |
1 | for循环还可以缺少初始化语句、循环条件和每次循环更新语句,例如: |
for each
1 | for(变量类型 变量名: 可迭代数据类型(list,map....)) |
break和continue
break跳出所在的那层循环;continue结束当前循环,进入下一次循环
小结
1 | break语句可以跳出当前循环; |
