2-7 static关键字(下)中一些问题

2-7 static关键字(下)中一些问题

1. 普通代码块可以对所有属性赋值,那可不可以调用所有方法(构造方法也可以调用么?)?

2. 那构造代码块的情况是怎么样的?和普通代码块一样么?

3. 静态代码块中只能对类属性赋值,是不是也只可以调用类方法?如果调用对象属性及对象方法是不是先实例化对象?


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,根据你说的创建对象,是如下这种吗?

http://img1.sycdn.imooc.com//climg/5e58c8ad091750e806680423.jpg

由此发现并不会造成栈溢出。如果不是上述这种,请附上代码

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 慕容2892559 提问者 #1
    package com.imooc.animal; /** * 猫类 * @author MORE * */ public class Cat { { Cat one=new Cat(); } } package com.imooc.animal; public class CatTest { public static void main(String[] args) { Cat one=new Cat(); } } 我把无关代码都删了,运行
    2020-02-28 16:31:52
  • 慕容2892559 提问者 #2
    不小心按到回车了。运行CatTest类中的主方法,就会报错,栈溢出。
    2020-02-28 16:32:55
  • 好帮手慕小脸 回复 提问者 慕容2892559 #3
    根据同学附上的代码,之前同学的理解是正确的。 如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
    2020-02-28 17:04:37
好帮手慕小脸 2020-02-28 10:06:18

同学你好,根据上述老师的演示,构造代码块的运行情况与普通代码块的运行情况是不一致的。

如下:图1是普通代码块,图2构造代码块

http://img1.sycdn.imooc.com//climg/5e58754c097eb84806760367.jpg

http://img1.sycdn.imooc.com//climg/5e587571093ccc1807150406.jpg

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~


  • 提问者 慕容2892559 #1
    姐姐,我试了一下,在主方法里new一个对象one,然后在类中构造代码块也写new一个对象one,执行后栈溢出。和你的运行不同啊。我是这样想的,由于构造代码块里也在new对象,所以又执行构造代码块,又new对象,一直循环,所以栈溢出了,这样对吗?
    2020-02-28 10:27:00
好帮手慕小脸 2020-02-27 19:04:15

同学你好,

    1、普通代码块可以对所有属性赋值,那可不可以调用所有方法(构造方法也可以调用么?)?

同学理解是如下这种吗?如果是,同学理解是正确的哦!

http://img1.sycdn.imooc.com//climg/5e57a0b60986315205340602.jpg

http://img1.sycdn.imooc.com//climg/5e57a0c709b3288606770361.jpg

    2、那构造代码块的情况是怎么样的?和普通代码块一样么?

http://img1.sycdn.imooc.com//climg/5e57a1490989132807110422.jpg

如上图所示,是构造代码块的情况

    3、静态代码块中只能对类属性赋值,是不是也只可以调用类方法?如果调用对象属性及对象方法是不是先实例化对象?

    1)是可以调用类方法的。

http://img1.sycdn.imooc.com//climg/5e57a1d209c37d4f05870245.jpg

    2)调用对象属性及对象方法是需要先实例化对象的。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 慕容2892559 #1
    姐姐,构造代码块的运行情况截图好像没截全,是不是构造代码块和上面的普通代码块运行情况一样呀?
    2020-02-27 20:16:10
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师