static

作者: 郑捡书 | 来源:发表于2019-04-17 10:09 被阅读0次
class Test {
        public static String foo() {
            return "called";
        }
    }

 public static void main(String[] args) {
        Test obj = null;
        System.out.println(obj.foo());  //  正常运行
    }
解析

因为 jvm 内存里有栈区、堆区,栈区主要用来存放基础类型数据和局部变量,堆区主要存放 new 出来的对象,在堆区又有一个叫做方法区的内存区域用来存放常量、static 变量和 static 方法、还有类的信息,static 的变量和方法不依赖对象,即使对象没有创建,在类加载的时候已经存在信息了(Test 在声明时就被加载了),jvm 识别出是 static 方法就直接调用了在方法区内存里的方法,没有报空指针异常。

jvm内存

相关文章

网友评论

      本文标题:static

      本文链接:https://www.haomeiwen.com/subject/ymoavqtx.html