美文网首页
java类变量的初始化时机

java类变量的初始化时机

作者: junjun2018 | 来源:发表于2018-07-09 13:33 被阅读0次
class Price {
    static final Price INSTANCE = new Price(2.8);
    static double initPrice = 20;
    double currentPrice;

    public Price(Double discount) {
        currentPrice = initPrice - discount;
    }

    public static void main(String[] args) {
        System.out.println(Price.INSTANCE.currentPrice);

        Price price = new Price(2.8);
        System.out.println(price.currentPrice);
    }
}

答案:-2.8 17.2
分析:考查类变量的初始化时机。从内存角度分析此程序。第一步:类加载时,为static类成员分配内存并指定初始值,INSTANCE赋值null,initPrice赋值0.0。第二步:类变量初始化,INSTANCE初始化,调用构造创建对象,执行计算,此时initPrice为0.0,所有得到结果-2.8。第二条打印语句通过创建对象实例访问局部变量。在构造方法执行前,initPrice已经被赋值20,所以输出17.2

相关文章

  • java类变量的初始化时机

    答案:-2.8 17.2分析:考查类变量的初始化时机。从内存角度分析此程序。第一步:类加载时,为static类成...

  • Java类的初始化顺序

    Java类的初始化顺序 (静态变量、静态代码块)> 类里的 main()(如果有的话) > (变量、初始化块) >...

  • Java和Kotlin类的初始化顺序

    Java Java程序初始化的顺序:父类静态变量 -> 父类静态代码块 -> 子类静态变量 -> 子类静态代码块 ...

  • Java初始化顺序

    Java初始化顺序:①类变量、类方法>②(父类代码)>③实例变量>④构造器当一个类要实例化时,static变量和方...

  • 构造器内部的多态方法的行为

    上一篇 :Java类初始化顺序 上一节我们简单总结了类的初始化顺序。父类(静态变量、静态初始化块)>子类(静态变量...

  • 我的秋招之路-面经篇

    Java基础 类加载的时机和类初始化的时机(引出tomcat类加载器)JVM和绝大多数用户自定义的类在JVM启动的...

  • 零基础Java学习必备单词

    Java类的单词 语法 :grammar 变量 : varianle 常量 :constant 初始化 : ini...

  • 类加载机制

    目录 概念 加载过程 初始化时机 类初始化顺序注意点 双亲委派模型 自定义类加载器 类加载 概念 Java虚拟机把...

  • JAVA初始化顺序

    Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器) 大家在去参加面试的时候,经常会遇到这样...

  • java 类

    在类内部,对于成员变量,如果在定义的时候没有显式的给出初始化,则java类会保证每个成员变量都会被初始化: 构造器...

网友评论

      本文标题:java类变量的初始化时机

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