https://lovelacelee.github.io/cnTIL
This project is maintained by lovelacelee
有了数据类型,数据运算前置知识,了解完函数式编程的流程控制,就能完成基本命令行程序了。
入门级的输出:
System.out.println();//带换行
System.out.print();//不带换行的输出 ==C的printf==Python的print()
格式化输出, 详细的格式化参数请参考JDK文档java.util.Formatter
public class Main {
public static void main(String[] args) {
double d = 3.1415926;
System.out.printf("%.2f\n", d); // 显示两位小数3.14
System.out.printf("%.4f\n", d); // 显示4位小数3.1416
}
}
控制台输入
import java.util.Scanner;//依赖Scanner才能实现
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 创建Scanner对象
System.out.print("Input your name: "); // 打印提示
String name = scanner.nextLine(); // 读取一行输入并获取字符串
System.out.print("Input your age: "); // 打印提示
int age = scanner.nextInt(); // 读取一行输入并获取整数
System.out.printf("Hi, %s, you are %d\n", name, age); // 格式化输出
}
}
这与C语言完全一致,Nothing to note.
旧写法与C一致,新语法如下->
可以简化写法,如果有多条语句,需要用{}括起来。不要写break语句,因为新语法只会执行匹配的语句,没有穿透效应。
public class Main {
public static void main(String[] args) {
String fruit = "apple";
switch (fruit) {
case "apple" -> System.out.println("Selected apple");
case "pear" -> System.out.println("Selected pear");
case "mango" -> {
System.out.println("Selected mango");
System.out.println("Good choice!");
}
default -> System.out.println("No fruit selected");
}
}
}
switch语句返回值
public class Main {
public static void main(String[] args) {
String fruit = "orange";
int opt = switch (fruit) {
case "apple" -> 1;
case "pear", "mango" -> 2;
default -> {
int code = fruit.hashCode();
yield code; // switch语句返回值
}
};
System.out.println("opt = " + opt);
}
}
While和Do While语法与C完全一致
for each
循环
public class Main {
public static void main(String[] args) {
int[] ns = { 1, 4, 9, 16, 25 };
for (int n : ns) {
System.out.println(n);
}
}
}
和for循环相比,for each循环的变量n不再是计数器,而是直接对应到数组的每个元素。for each循环的写法也更简洁。但是,for each循环无法指定遍历顺序,也无法获取数组的索引。
除了数组外,for each循环能够遍历所有“可迭代”的数据类型,包括后面会介绍的List、Map等。
All as same as C programming language, nothing to tell.
Java程序的入口是main方法,而main方法可以接受一个命令行参数,它是一个String[]数组。
这个命令行参数由JVM接收用户输入并传给main方法:
public class Main {
public static void main(String[] args) {
for (String arg : args) {
System.out.println(arg);
if ("-version".equals(arg)) {
System.out.println("v 1.0");
break;
}
}
}
}
这太无用了,深知C语言里自己解析和使用命令行参数是多么的无助(Eggache)
Java里命令行参数解析一般用Apache的Common-CLI
1.下载common-cli 2.包引入 我们只需要其中的两个 jar 文件: commons-cli-1.4.jar:类文件,将它加入到 CLASSPATH 后就能使用了。 commons-cli-1.4-javadoc.jar:API 文档(JavaDoc),用浏览器访问。
Commons-CLI 使用 Commons-CLI 中的类位于 org.apache.commons.cli 包,相关的类有:
命令行参数解析分为 3 个阶段,分别是 定义、解析、询问 阶段。