博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
static易错点
阅读量:6278 次
发布时间:2019-06-22

本文共 885 字,大约阅读时间需要 2 分钟。

package com.juemuren.Error;

/**
 * static关键字的易错点
 */
class SuperClass{
    static{
        System.out.println("SuperClass init------");
    }
    /**
     * 被static修饰的变量,变量的值经历了多次变化
     * 类加载的准备阶段,为变量设置内存并设置初始值,value=0.
     * 初始化阶段:在静态代码块内赋值,直接赋值value=123。其顺序按照代码的顺序执行
     */
    public static int value=123;
}
class SubClass extends SuperClass{
    static{
        System.out.println("SubClass init======");
    }

    //常量

    public final static int age=110;
}
public class TestStaticDemo {
    public static void main(String[] args) {
        
        /**
         * 对于静态字段,只有直接定义的该字段的类才会被初始化。因此通过子类来访问父类的定义的静态字段,只会触发父类的初始化
         * 输出的结果是:SuperClass init------
         *          123
         */
        System.out.println(SubClass.value);
        
        /**
         * 不会对SubClass类进行初始化,在编译阶段通过常量传播优化,已经将值存储到TestStaticDemo常量池中了。
         * 编译之后代码和System.out.println(110)是一样的。
         */
        System.out.println(SubClass.age);
        
        /**
         * 定义一个类的一维数组,并没有触发SubClass类以及父类的初始化
         */
        SubClass[] subClasses=new SubClass[10];
    }
}

转载于:https://www.cnblogs.com/juemuren/p/6690399.html

你可能感兴趣的文章
操作系统真实的虚拟内存是什么样的(一)
查看>>
hadoop、hbase、zookeeper集群搭建
查看>>
python中一切皆对象------类的基础(五)
查看>>
modprobe
查看>>
android中用ExpandableListView实现三级扩展列表
查看>>
%Error opening tftp://255.255.255.255/cisconet.cfg
查看>>
java读取excel、txt 文件内容,传到、显示到另一个页面的文本框里面。
查看>>
《从零开始学Swift》学习笔记(Day 51)——扩展构造函数
查看>>
python多线程队列安全
查看>>
[汇编语言学习笔记][第四章第一个程序的编写]
查看>>
android 打开各种文件(setDataAndType)转:
查看>>
补交:最最原始的第一次作业(当时没有选上课,所以不知道)
查看>>
Vue实例初始化的选项配置对象详解
查看>>
PLM产品技术的发展趋势 来源:e-works 作者:清软英泰 党伟升 罗先海 耿坤瑛
查看>>
vue part3.3 小案例ajax (axios) 及页面异步显示
查看>>
浅谈MVC3自定义分页
查看>>
.net中ashx文件有什么用?功能有那些,一般用在什么情况下?
查看>>
select、poll、epoll之间的区别总结[整理]【转】
查看>>
CSS基础知识(上)
查看>>
PHP中常见的面试题2(附答案)
查看>>