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

如下的问题

代码1,我想问一下,不能直接调用非静态成员,但是这里面的name变量,是属于HelloWorld类的成员变量,print方法属于HelloWorld类中的为什么不能调用,因为静态方法中的变量只能用静态变量么?

正在回答

2 回答

 print( )有关键字static修饰是静态方法,静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成,如果要在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。希望对你有所帮助。

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

IT半生瓜 提问者

谢谢!
2017-07-26 回复 有任何疑惑可以回复我~

静态变量和非静态变量内存分配机制不同,变量只有在被分配内存后才可以使用,静态变量在类加载时就会分配内存空间,而非静态变量是在类对象产生时才会分配内存空间。这里报错是因为name还未生成,所以调用时会出错。所以可以改成“new HelloWorld().name”.另外静态方法中的变量不是只能用静态变量,自己敲一下试试就知道了

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

IT半生瓜 提问者

你这个也对,系统优先读取static变量,读取的时候name还未生成,也很有道理
2017-07-26 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

如下的问题

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号