class M {
M() {
System.out.println("Hello world!");
}
public static void main(String[] args) {
M m = new M();

}
问题:请问结果为什么会输出“Hello world!”,在main中我只是创建了一个对象,并没有使用该对象,怎么会执行输出语句
       呢?
      请各位高手指点,我这是哪个知识点没掌握好,谢谢。

解决方案 »

  1.   

    M m = new M(); 调到了System.out.println("Hello world!");
      

  2.   

    构造函数M()在新建对象new M()时会被调用
      

  3.   

    构造函数是用来创建类实例的, 在new时,会调用相应的构造函数。
      

  4.   

    把new M()理解为两步:先通过new分配对象内存,然后调用M()方法。M()不是类名的使用,否则就不会出现new M(123)之类的了。
      

  5.   

    class M {
    M() {
    System.out.println("Hello world!");
    }
    public static void main(String[] args) {
    M m = new M();
    }  
    }   在这个类里面,你不写
    M() {
    System.out.println("Hello world!");
    }
    也是对的,为什么呢?因为当类没有构造函数的时候,系统会自动给相关的类默认一个无参的构造函数,但是当有构造函数时,系统不会默认构造函数。
    构造函数的作用就是初始化的时候调用,所以你的类会输出Hello world!
      

  6.   

    新建一个对象并new一个新对象就会调用main方法,
      

  7.   

    M m = new M(); 当你创建对象的时候 它就会默认去执行构成函数!
    8楼的说的很对!
      

  8.   

    你自己可以定义好多构造函数,分带参数的构造函数跟不带参数的构造函数。
    如果你在new的时候不带参数,则会调用不带参数的构造函数,new的时候带参数,则会执行带相应参数的构造函数。
      

  9.   

    当你new一个类的对象的时候,就调用了那个类的相应的构造方法,它不需要你去调用,系统给你调用的,记住,当你new一个对象的时候,首先执行的是它的构造方法。
      

  10.   

    在java语言 中,构造函数又称构造方法。特殊性在于,与普通方法的区别是,他与类名相同,不返回结果也不加void返回值。构造函数的作用是初始化对象,即在创建对象时被系统调用(与普通方法不同,程序不能显示调用构造函数)。构造函数还能够被重载,即可以传入参数,当程序中包含有带参的构造函数时,系统将不会再提供的无参构造函数。
      

  11.   

      在这个类里面,你不写
    M() {
    System.out.println("Hello world!");
    }
    也是对的,为什么呢?因为当类没有构造函数的时候,系统会自动给相关的类默认一个无参的构造函数,但是当有构造函数时,系统不会默认构造函数。
    构造函数的作用就是初始化的时候调用,所以你的类会输出Hello world!