课程
/后端开发
/Java
/Java入门第二季
static{
age=17;
}
{
2018-08-14
源自:Java入门第二季 8-10
正在回答
我想你应该不会把这个两个写到一个类下面。所以你的问题是,这两种写法有什么区别?
static 修饰的代码块在类加载的时候就被分配到内存中了(注意类加载不是new操作,这时候还没有对象,简单地说就是你把这个类放到内存中去,之后产生出来的对象(比如new一个对象出来)都是共用的这部分内存区的数据)。所以只会调用一次。与对象没有关系!
而非static修饰的代码块在你产生每个对象的时候都会调用一次。
说的比较浅,如果你感兴趣,建议看看JVM相关知识。
qq_大魔王_23 提问者
mark
类加载时代码块执行顺序不一样,顺序是静态代码块,普通代码块,构造方法代码块。你这输出结果一样,你赋值的是同一个属性age,后来运行的普通代码块把你静态代码块赋值给覆盖了
举报
课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙
2 回答为什么我在输出时System.out.println(className);结果是一样的
1 回答输不出结果
3 回答怎么没有输出结果啊
4 回答finnal跟static有什么区别呢?
2 回答为什么不能输出结果呢?
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号