1 相同点
使用的时候,import的时候,除了包名,还要带外部类。
2 不同点
2.1 对象创建的方式不同
静态内部类创建对象的时候,独立于外部类及其对象,就好像它是一个独立的类,可以和外部类一样使用。
内部类创建对象的时候,不能独立于外部类,必须要先创建外部类的对象,然后再用这个对象来new出内部类的对象。
2.2 内部类不可以有非常量的静态成员
原因很简单,静态成员可以不依赖于对象使用,如果内部类有静态成员的话,就相当于外部类对象直接调用内部类的静态成员,一个是对象,一个是类,不伦不类的。
所以,要给内部类的定义静态成员,必须要使用静态内部类。
报错
The field instance cannot be declared static in a non-static inner type, unless initialized with a constant expression
就算是内部类用了静态的常量,也没有什么用,在外面也不能脱离了内部类对象访问。