为了账号安全,请及时绑定邮箱和手机立即绑定

static使用之静态初始化块练习题

static int age;

static{

 age=20;

}

public void show(){

 System.out.println(+age);

};

show()是普通方法为什么可以直接调用静态成员变量age???

正在回答

2 回答

静态初始化块只在类加载时执行,且只会执行一次,而静态变量age实在静态初始化块中初始化的,而调用show方法的时候age已经被初始化了,所以可以使用age的值

1 回复 有任何疑惑可以回复我~
#1

Habit_formation 提问者

好吧,刚刚又验证了一下,我从一开始就错了:普通方法本来就可以直接调用静态方法变量。 补充一下:就算age没有被初始化,用普通方法调用它时,也会返回一个null。 谢谢你的回答!
2016-03-06 回复 有任何疑惑可以回复我~
你好:
 
     普通方法当然可以调用静态成员了,实例化过程我就不赘述了,楼上已经说得很好了。
 我想你混淆的地方是静态成员和静态方法相关的制约了。
 静态方法可以访问静态成员,但不可以访问成员变量(原因是在实例化静态方法的时候该成员变量还没有进行实例化,如果非要使用成员变量话的需要进行对象实例化再行使用成员变量)。
 ……
  SO,我简单分析你的问题是把静态方法和普通方法访问成员变量相关知识点混淆了。
  
  希望我的回答可以帮助到你朋友,更多优质答复请与留言,谢谢!


3 回复 有任何疑惑可以回复我~
#1

Habit_formation 提问者

谢谢你的回答,我也是看到你说的第一句话才回头去验证的。结果发现,普通方法可以直接调用静态成员。 再次谢谢你帮我解答>_< !
2016-03-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530553    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

static使用之静态初始化块练习题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信