在java中,为什么未初始化的char是OK但不是String

A K*_*A K 2 java initialization

在下面的代码中,如果我将String名称保持为未初始化,则会出现编译错误,但是char初始化没有问题未被初始化.为什么这种行为有所不同?

class Demo {
    public static void main(String[] args) {
        char initial;
        String name;
        for (String input: args) {
            name += input;
            initial = input.charAt(0);
            System.out.print(initial + " ");
        }
    }
Run Code Online (Sandbox Code Playgroud)

use*_*421 10

您在读取之前(System.out.println()在行中)分配了char ,但是在读取之前您没有分配String,这name += input在行中发生.