三、Java main() 方法简介
每个程序都需要一个入口,对于 Java 程序来说,入口就是 main 方法。
public static void main(String[] args) {}
public、static、void 这 3 个关键字在前面的内容已经介绍过了,如果觉得回去找比较麻烦的话,这里再贴一下:
public 关键字是另外一个访问修饰符,除了可以声明方法和变量(所有类可见),还可以声明类。main() 方法必须声明为 public。
static 关键字表示该变量或方法是静态变量或静态方法,可以直接通过类访问,不需要实例化对象来访问。
void 关键字用于指定方法没有返回值。
另外,main 关键字为方法的名字,Java 虚拟机在执行程序时会寻找这个标识符;args 为 main() 方法的参数名,它的类型为一个 String 数组,也就是说,在使用 java 命令执行程序的时候,可以给 main() 方法传递字符串数组作为参数。
java HelloWorld 沉默王二 沉默王三
javac 命令用来编译程序,java 命令用来执行程序,HelloWorld 为这段程序的类名,沉默王二和沉默王三为字符串数组,中间通过空格隔开,然后就可以在 main() 方法中通过 args[0] 和 args[1] 获取传递的参数值了。
public class HelloWorld { public static void main(String[] args) { if ("沉默王二".equals(args[0])) { } if ("沉默王三".equals(args[1])) { } } }
main() 方法的写法并不是唯一的,还有其他几种变体,尽管它们可能并不常见,可以简单来了解一下。
第二种,把方括号 [] 往 args 靠近而不是 String 靠近:
public static void main(String []args) { }
第三种,把方括号 [] 放在 args 的右侧:
public static void main(String args[]) { }
第四种,还可以把数组形式换成可变参数的形式:
public static void main(String...args) { }
第五种,在 main() 方法上添加另外一个修饰符 strictfp,用于强调在处理浮点数时的兼容性:
public strictfp static void main(String[] args) { }
也可以在 main() 方法上添加 final 关键字或者 synchronized 关键字。
第六种,还可以为 args 参数添加 final 关键字:
public static void main(final String[] args) { }
第七种,最复杂的一种,所有可以添加的关键字统统添加上:
final static synchronized strictfp void main(final String[] args) { }
当然了,并不需要为了装逼特意把 main() 方法写成上面提到的这些形式,使用 IDE 提供的默认形式就可以了。
四、Java 的流程控制语句
在 Java 中,有三种类型的流程控制语句:
条件分支,用于在两个或者多个条件之间做出选择,常见的有 if/else/else if、三元运算符和 switch 语句。
循环或者遍历,常见的有 for、while 和 do-while。
break 和 continue,用于跳出循环或者跳过进入下一轮循环。
if 语句
if 语句的格式如下:
if(布尔表达式){
// 如果条件为 true,则执行这块代码
}
画个流程图表示一下:
来写个示例:
public class IfExample {
public static void main(String[] args) {
int age = 20;
if (age < 30) {
System.out.println("青春年华");
}
}
}
输出:
青春年华
if-else 语句
if-else 语句的格式如下:
if(布尔表达式){
// 条件为 true 时执行的代码块
}else{
// 条件为 false 时执行的代码块
}
画个流程图表示一下:
来写个示例:
public class IfElseExample { public static void main(String[] args) { int age = 31; if (age < 30) { System.out.println("青春年华"); } else { System.out.println("而立之年"); } } }
输出:
而立之年
除了这个例子之外,还有一个判断闰年(被 4 整除但不能被 100 整除或者被 400 整除)的例子:
public class LeapYear { public static void main(String[] args) { int year = 2020; if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { System.out.println("闰年"); } else { System.out.println("普通年份"); } } }
输出:
闰年
如果执行语句比较简单的话,可以使用三元运算符来代替 if-else 语句,如果条件为 true,返回 ? 后面 : 前面的值;如果条件为 false,返回 : 后面的值。
public class IfElseTernaryExample { public static void main(String[] args) { int num = 13; String result = (num % 2 == 0) ? "偶数" : "奇数"; System.out.println(result); } }
输出:
奇数
1
if-else-if 语句
if-else-if 语句的格式如下:
if(条件1){ // 条件1 为 true 时执行的代码 }else if(条件2){ // 条件2 为 true 时执行的代码 } else if(条件3){ // 条件3 为 true 时执行的代码 } ... else{ // 以上条件均为 false 时执行的代码 }
画个流程图表示一下:
来写个示例:
public class IfElseIfExample { public static void main(String[] args) { int age = 31; if (age < 30) { System.out.println("青春年华"); } else if (age >= 30 && age < 40 ) { System.out.println("而立之年"); } else if (age >= 40 && age < 50 ) { System.out.println("不惑之年"); } else { System.out.println("知天命"); } } }
输出:
而立之年