java中 String类问题<初级程序员的自我修远>

刚学习java语言
我看String中源码写的

 private final char[] c;

为什么在自己的类中这样写就会报未初始化的错误

有final属性,要有构造器,并且初始化该属性

public class Person{
private final char[] c;

public Person() {//
    this.c = "123".toCharArray();
}

}

我只知道final 类型的需要初始化操作。

private final char[] c = new char[长度];

final char[] c这样写的话,c就不能再指向别的引用,但是你又没给人家初始值,编辑器自然不干了。

private final char[] c; 没有报错是,在构造函数里面给它赋值了。
final 变量要不声明时候给其复制,要么在构造函数中给其赋值,不然就会报错。

final 修饰的变量只会被赋值一次, 要么构造函数要么声明

final变量不赋值,怎么用呢?你在内存里面要了一个地址,告诉他别人都不能用了,却什么都不放在这里,这块就永远闲置啦。
jvm当然看不下去了,于是提醒你,你错了!