cqwei2013
孤舟小梦
2015-04-20 14:14
采纳率: 100%
浏览 1.5k
已采纳

Help!!关于java构造块问题

public class Test{
public int i=print("why");
{
print("构造块");
}

private static int print(String str){
    System.out.println(str);
}

}
为什么每次实例化对象时,调用构造块的同时也会调用构造块前面的那个赋值语句?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • danielinbiti
    danielinbiti 2015-04-20 14:26
    已采纳

    首先

     private static int print(String str){
        System.out.println(str);
    }
    这代码没有返回值,肯定有问题
    

    public int i=print("why");和构造块没有任何联系。对象实例化时,内部成员变量都要初始化,只是这里i的值是静态方法print的返回值而已

    点赞 评论
  • caozhy

    每次实例化都创建了新的对象,当然都要调用一次。每个对象的字段是独立的。

    点赞 评论
  • lzp_lrp
    WorldMobile 2015-04-20 14:17

    应该和你的private static int print这个有关

    点赞 评论
  • cqwei2013
    孤舟小梦 2015-04-20 14:23

    为什么调用构造块会同时调用public int i=print("why");呢?

    点赞 评论
  • fanst_
    fanst_ 2015-04-20 14:25

    静态属性和静态块在类初始化时只执行一次,其他每次对象初始化时都要执行。

    点赞 评论
  • beacon_2011
    beaconD 2015-04-21 02:08

    public int i=print("why");因为这是全局变量啊,实例化的时候当然要调用,
    private static int print(String str){
    System.out.println(str);
    }
    这个方法里可以用 i 哦,那 i 是哪来的,当然实例化的时候要一起执行啊。

    点赞 评论

相关推荐