静态方法不能访问非静态成员(包括静态方法和静态变量),但非静态方法可以静态成员和非静态成员。
方法或变量加上static声明就被定义为静态成员。
静态成员属于类所有,被类的所有对象共享,它在程序预编译期间就能确定。非静态成员属于对象所有,而对象需要在程序运行期间分配空间。故在预编译期间就能确定的静态成员不能访问需要在程序运行时才能确定的非静态成员。
针对你的问题,main是静态方法,它只能访问静态成员,所以它可以访问static的b,不能访问没有static声明的rand,解决方法就是在成员声明前加static关键字,表明该成员是静态成员。