为什么我的非静态内部类可以设置静态变量

java 普通内部类不是不能用静态方法吗,但是为什么我的内部类却没有报错
public class A {
    public static void main(String args[]) {
        B.c();
    }
    class B{
        static int b =1;
        static void c() {
            System.out.print(b);
        }
    }
}


可以正常输出“1”
非静态内部类不是不能设置静态方法吗,为什么我的没有报错,还能整正常输出

你这不是java8吧

img

你记错了
静态类里不可以有实例方法
实例类可以有静态方法
静态变量也一样
普通类里当然可以有静态变量
连普通方法里都可以定义静态变量
但是一个静态类里不可以有非静态变量

静态内部类上的关键字static与变量上的static,作用是不同的。
静态内部类上的static表示的是:该类不依赖于外部类,可以单独当做普通类使用。
变量上的static表示的是:该变量属于类变量,是类实例间共享的,不用创建类实例也可以使用该变量。

https://www.csdn.net/tags/Mtjagg5sNjY4MjAtYmxvZwO0O0OO0O0O.html