问答详情
源自:8-10 Java 中的 static 使用之静态初始化块

加不加static怎么输出结果都一样阿?区别在哪

static{

age=17;

}

{

age=17;

}


提问者:qq_大魔王_23 2018-08-14 15:46

个回答

  • 黑灰化肥会挥发
    2018-08-19 15:15:46
    已采纳

    我想你应该不会把这个两个写到一个类下面。所以你的问题是,这两种写法有什么区别?

    static 修饰的代码块在类加载的时候就被分配到内存中了(注意类加载不是new操作,这时候还没有对象,简单地说就是你把这个类放到内存中去,之后产生出来的对象(比如new一个对象出来)都是共用的这部分内存区的数据)。所以只会调用一次。与对象没有关系!

    而非static修饰的代码块在你产生每个对象的时候都会调用一次。

    说的比较浅,如果你感兴趣,建议看看JVM相关知识。

  • CapricornusQi
    2018-10-23 09:32:31

    mark

  • 丿毛蛋
    2018-08-14 16:30:29

    类加载时代码块执行顺序不一样,顺序是静态代码块,普通代码块,构造方法代码块。你这输出结果一样,你赋值的是同一个属性age,后来运行的普通代码块把你静态代码块赋值给覆盖了