Skip to content

基础知识

一个程序的基本格式。它包含至少一个、一个方法和一个行为才可能有意义。

java
public class Helloworld {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}

Helloworldargs 的称呼由用户定义(但 public class Helloworld 强制对应着文件名为 Helloworld.java)。String[] args 是字符串的数组,与编译时添加的参数有关。

在一些 IDE 中,写 psvm 可被自动识别为 public static void main(String[] args) {}

输出

下面四个语句分别会输出什么结果?

java
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 中,写 soutsyso 可被自动识别为 System.out.println()

输入

导包(应当放在代码最前位):

java
import java.util.Scanner;

创建对象

java
Scanner sc = new Scanner(System.in);

接收数据(这里只演示读取数值的方法):

java
int userInput = sc.nextInt();

scuserInput 的称呼由用户定义。

关于此类的更多信息,请参考:https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html

分支结构

应用 if-else 语句:

java
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 语句:

java
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 语句:

java
for (int i = 0; i < 5; i++) {
    System.out.println("这是第" + (i + 1) + "次");
}

应用 while 语句:

java
int j = 0;
while (j < 5) {
    System.out.println("这是第" + ++j + "次");
}

应用 do-while 语句:

java
int k = 0;
do {
    System.out.println("这是第" + ++k + "次");
} while (k < 5);

随机数

导包(应当放在代码最前位):

java
import java.util.Random;

创建对象

java
Random rd = new Random();

获取随机数

java
// 获取数据的范围:[0, 114514)
int rdGet = rd.nextInt(114514);

rdrdGet 的称呼由用户定义。

在之后还会学习 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),用户需要通过输入正确的数完成挑战。如果猜测错误,系统会给出一定提示,直至猜对为止。

java
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;
            }
        }
    }
}

数组

定义一个整型数组。

java
// 定义了一个整形数组,名称为 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};

那么如何访问数组呢?

java
// 输出数组 arr 的起始地址
System.out.println(arr);

// 输出数组 arr 中的第 a + 1 个元素
System.out.println(arr[a]);

arrrdGet 的称呼由用户定义。

你可以用 arr.length 获取数组长度,用 int 类型的变量接受其返回值。

遵从 CC BY-NC-SA 4.0