为什么在Java中将类声明为静态?

我已经看到类在java声明为static ,但是很困惑:
由于class用于创建对象,因此不同的对象具有不同的内存分配。
那么什么是"static"用于声明一个类?是否意味着member variables都是static
这有意义吗?

首先,你不能制作顶级静态。 你只能使一个嵌套类静态。 通过使嵌套类静态,您基本上是说您不需要嵌套类的实例来从外部类/顶级类中使用它。

例:

 class Outer { static class nestedStaticClass { //its member variables and methods (don't nessarily need to be static) //but cannot access members of the enclosing class } public void OuterMethod(){ //can access members of nestedStaticClass w/o an instance } } 

另外,在内部类中声明静态字段是非法的,除非它们是常量(换句话说, static final )。 由于静态嵌套类不是内部类,因此可以在此处声明静态成员。

类可以嵌套在嵌套类中吗?

总之,是的。 看看下面的Test ,嵌套的内部类和嵌套的静态类都可以在’em中使用嵌套类。 但请记住,您只能在顶级类中声明一个静态类,在内部类中声明它是非法的。

 public class Test { public class Inner1 { public class Inner2 { public class Inner3 { } } } public static class nested1 { public static class nested2 { public static class nested3 { } } } } 

嵌套类(类中的类)是唯一可以声明为静态的类。 这样就不必实例化父类来访问嵌套类。

这个答案中有一些很好的示例代码

它只描述了这个类与包含类的关系。

内部类是在另一个类的范围内定义的类。 内部类的实例附加到容器类的特定实例(创建它们的实例)。

静态嵌套类是嵌套类,但是是静态定义的。 与静态成员一样,它们与特定实例无关; 它们只属于包含类。 在嵌套类中,您不能引用包含类的非静态成员/方法,因为没有与它们关联的特定实例。