基础知识
一个程序的基本格式。它包含至少一个类、一个方法和一个行为才可能有意义。
public class Helloworld {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}Helloworld 和 args 的称呼由用户定义(但 public class Helloworld 强制对应着文件名为 Helloworld.java)。String[] args 是字符串的数组,与编译时添加的参数有关。
在一些 IDE 中,写 psvm 可被自动识别为 public static void main(String[] args) {} 。
输出
下面四个语句分别会输出什么结果?
System.out.println("abc");
System.out.println(114514);
System.out.println("abc" + 2 + 33); // abc233
System.out.println(2 + 33 + "abc"); // 35abc若不需要换行输出,则写 System.out.print(); 。
在一些 IDE 中,写 sout 或 syso 可被自动识别为 System.out.println() 。
输入
导包(应当放在代码最前位):
import java.util.Scanner;创建对象:
Scanner sc = new Scanner(System.in);接收数据(这里只演示读取数值的方法):
int userInput = sc.nextInt();sc 和 userInput 的称呼由用户定义。
关于此类的更多信息,请参考:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html
分支结构
应用 if-else 语句:
if (a > b) {
System.out.println("a is bigger than b");
} else if (a < b) {
System.out.println("a is smaller than b");
} else {
System.out.println("a is equal to b");
}应用 switch-case 语句:
switch (a + b) {
case m:
System.out.println("a + b = m");
break;
case n:
System.out.println("a + b = n");
break;
default:
System.out.println("I don't know the answer");
}循环结构
应用 for 语句:
for (int i = 0; i < 5; i++) {
System.out.println("这是第" + (i + 1) + "次");
}应用 while 语句:
int j = 0;
while (j < 5) {
System.out.println("这是第" + ++j + "次");
}应用 do-while 语句:
int k = 0;
do {
System.out.println("这是第" + ++k + "次");
} while (k < 5);随机数
导包(应当放在代码最前位):
import java.util.Random;创建对象:
Random rd = new Random();获取随机数:
// 获取数据的范围:[0, 114514)
int rdGet = rd.nextInt(114514);rd 和 rdGet 的称呼由用户定义。
在之后还会学习 Math 类中的 random() 方法,使用更简单,但局限性较大。对比可参考:https://blog.csdn.net/wasane/article/details/120618064
关于此类的更多信息,请参考:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Random.html
案例:猜数字
系统从 1-100 中随机选取一个整数(含 1 和 100),用户需要通过输入正确的数完成挑战。如果猜测错误,系统会给出一定提示,直至猜对为止。
import java.util.Scanner;
import java.util.Random;
public class GuessTheNumber {
public static void main(String[] args) {
Random rd = new Random();
int reGet = rd.nextInt(100) + 1;
System.out.println("请输入这个数字:");
while (true) {
Scanner sc = new Scanner(System.in);
int userInput = sc.nextInt();
if (userInput < reGet) {
System.out.println("错了,小了点。");
continue;
} else if (userInput > reGet) {
System.out.println("错了,大了点。");
continue;
} else {
System.out.println("对了。");
break;
}
}
}
}数组
定义一个整型数组。
// 定义了一个整形数组,名称为 A
int[] A;
// 定义了一个整形变量,名称为 A 数组(与上一行意义相同)
int A[];
// 定义了一个长度为3整形数组并动态初始化,名称为 B
int[] B = new int[3];
// 定义了一个长度为 3 整形数组并静态初始化,它包含了 1、2、3 三个元素,名称为 B
int[] B = new int[]{1, 2, 3};
// 与上一行意义相同
int[] B = {1, 2, 3};那么如何访问数组呢?
// 输出数组 arr 的起始地址
System.out.println(arr);
// 输出数组 arr 中的第 a + 1 个元素
System.out.println(arr[a]);arr 和 rdGet 的称呼由用户定义。
你可以用 arr.length 获取数组长度,用 int 类型的变量接受其返回值。