静态嵌套类的实例变量与外部类的静态变量

我在 java 中使用静态嵌套类用于特定用例。下面显示了相同的最小示例:

public class Foo {
    static int fooInner = getInner(); // CASE 1 

    private static class StaticFoo {
        int fooInner = getInner(); // CASE 2

        public int useFooInner(){
            System.out.println(fooInner);
            //do something
        }
    }
}

问题是案例 1 中的内存分配与案例 2 中的内存分配有何不同?或者是一样的?如果我也将 case 2 变量设为静态会怎样。内存使用会有所不同吗?

注意:请不要提及会发生阴影。虽然我已经将两个变量都放在那里,但它是一个“OR”案例,这就是“CASE”的原因。

PS:感觉内存使用量应该是一样的。由于嵌套类是静态的,因此不会为每个对象创建它,因此实例变量fooInner (案例 2)也将只创建一次。因此, getInner() 函数将只运行一次。但这只是抽象层面+直觉。更具描述性的答案将不胜感激!

以上是静态嵌套类的实例变量与外部类的静态变量的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>