System的out属性被final修饰了, 为什么还能实例化?

偶然间看到System的out属性已经被final修饰了, 并且指向了null。 为什么还是能被实例化?

图片说明
在执行main方法之前就已经实例化了

我的理解,final不是代表不能赋值,而是代表着一旦赋值,则对象的地址不可修改(于是,final的数组内容可以随便改,但数组始终是这个数组)。
null并不算是赋值,因为null没有地址。
说到System.out,注意看源码:native的registerNatives作为static的方法会被JVM调用一次,实际干了initializeSystemClass里面那些事儿,里面有个setOut。那个是干啥的,自己看一下呗。