qq_大魔王_23
2018-08-14 15:46
static{
age=17;
}
{
age=17;
}
我想你应该不会把这个两个写到一个类下面。所以你的问题是,这两种写法有什么区别?
static 修饰的代码块在类加载的时候就被分配到内存中了(注意类加载不是new操作,这时候还没有对象,简单地说就是你把这个类放到内存中去,之后产生出来的对象(比如new一个对象出来)都是共用的这部分内存区的数据)。所以只会调用一次。与对象没有关系!
而非static修饰的代码块在你产生每个对象的时候都会调用一次。
说的比较浅,如果你感兴趣,建议看看JVM相关知识。
mark
类加载时代码块执行顺序不一样,顺序是静态代码块,普通代码块,构造方法代码块。你这输出结果一样,你赋值的是同一个属性age,后来运行的普通代码块把你静态代码块赋值给覆盖了
Java入门第二季 升级版
531023 学习 · 6160 问题
相似问题