我们总是使用System.out.println()来向屏幕输出一些内容。
println是print line的缩写,表示输出并换行。因此,如果输出后不想换行,可以用print()。
格式化输出使用System.out.printf(),通过使用占位符%?,printf()可以把后面的参数格式化成指定格式。
| 占位符 | 说明 |
|---|---|
| %d | 格式化输出整数 |
| %x | 格式化输出十六进制整数 |
| %f | 格式化输出浮点数 |
| %e | 格式化输出科学计数法表示的浮点数 |
| %s | 格式化字符串 |
注意:由于%表示占位符,因此,连续两个%%表示一个%字符本身。
- 首先,我们通过import语句导入java.util.Scanner,import是导入某个类的语句,必须放到Java源代码的开头,后面我们在Java的package中会详细讲解如何使用import。
- 然后,创建Scanner对象并传入System.in。System.out代表标准输出流,而System.in代表标准输入流。直接使用System.in读取用户输入虽然是可以的,但需要更复杂的代码,而通过Scanner就可以简化后续的代码。
- 有了Scanner对象后,要读取用户输入的字符串,使用scanner.nextLine(),要读取用户输入的整数,使用scanner.nextInt()。Scanner会自动转换数据类型,因此不必手动转换。
if语句的基本语法是:
if (条件) {
// 语句块-条件满足时执行
}
if语句还可以编写一个else { ... },当条件判断为false时,将执行else的语句块。
还可以用多个if ... else if ...串联。
if (条件1) {
// 语句块 - 条件1满足时执行
} else if (条件2){
//语句块 - 条件2满足时执行
} else {
//语句块 - 条件不满足时执行
}
- 根据if的计算结果(true还是false),JVM决定是否执行if语句块(即花括号{}包含的所有语句)。
- 当if语句块只有一行语句时,可以省略花括号{}.
- 在串联使用多个if时,要特别注意判断顺序。原因是if语句从上到下执行时,先判断条件1成功后,后续else不再执行,因此,条件2没有机会执行了。
- 浮点数在计算机中常常无法精确表示,并且计算可能出现误差,因此,判断浮点数相等用==判断不靠谱,正确的方法是利用差值小于某个临界值来判断。
- 判断值类型的变量是否相等,可以使用==运算符。
- ==表示“引用是否相等”,或者说,是否指向同一个对象。
- 要判断引用类型的变量内容是否相等,必须使用equals()方法。
注意:执行语句s1.equals(s2)时,如果变量s1为null,会报’NullPointerException‘。
要避免NullPointerException错误,可以利用短路运算符&&。
public class Main {
public static void main(String[] args) {
String s1 = null;
if (s1 != null && s1.equals("hello")) {
System.out.println("hello");
}
}
}
请用if ... else编写一个程序,用于计算体质指数BMI,并打印结果。 BMI = 体重(kg)除以身高(m)的平方 BMI结果: 过轻:低于18.5 正常:18.5-25 过重:25-28 肥胖:28-32 非常肥胖:高于323、switch多重选择
switch语句根据switch (表达式)计算的结果,跳转到匹配的case结果,然后继续执行后续语句,直到遇到break结束执行。
- 如果值没有匹配到任何case,那么,switch语句不会执行任何语句。这时,可以给switch语句加一个default,当没有匹配到任何case时,执行default。
switch(结果) {
case result1 :
语句1;
break;
case result2 :
语句2;
break;
case result3 :
case result4:
语句3;
break;
default:
语句4;
break;
}
- 使用switch时,注意case语句并没有花括号{},而且,case语句具有“穿透性”,漏写break将导致意想不到的结果。如果匹配到case 2开始,后续语句将全部执行,直到遇到break语句。因此,任何时候都不要忘记写break。
- 如果有几个case语句执行的是同一组语句块,可以如case3、case4这么写。
- switch语句还可以匹配字符串。字符串匹配时,是比较“内容相等”。



