class Hello
{
   Hello()
  {
     system.out.println("Hello");
  }
}
public class SimpleHello
{
   public static void main(string[] args)
  {
     for(int i=0;i<10;i++)
        new Hello();  //这里是什么意思?为什么要这么写呢?是调用构造函数吗?那为什么没有对象名?用new不是应该先创建对象,然后再调用吗?请帮忙详细讲讲这里,谢谢
   }
}
如果写成下面这样可以吗?跟上面这种比有何优劣呢?
class Hello
{
   Hello()
  {
     system.out.println("Hello");
  }
}
public class SimpleHello
{
   public static void main(string[] args)
  {
      Hello x=new Hello();
      for(int i=0;i<10;i++)
        x.Hello(); 
   }
}

解决方案 »

  1.   

    new Hello()自动调用构造函数了,如果不需要对对象进行更多的操作,对象名就省了。Hello hello = new Hello();
    hello.method();
    等价与
    new Hello().method();(这样简单嘛)如果要调用两个函数这样写就不行了只能
    Hello hello = new Hello();
    hello.method1();
    hello.method2();你下面的写法显然是不行的
      

  2.   


    Hello x=new Hello();
    x.Hello(); 
    //这样的方式为什么不可以呢?同样也是先创建对象x,再由x调用Hello()这个方法啊~

    Hello hello = new Hello();
    hello.method();这个意思不是一样的吗~new Hello();  //这个Hello()指的是类,还是那个构造函数啊?
      

  3.   

    Hello()是构造函数,不能用类对象来调用的,所以x.Hello() 是错的
      

  4.   

    new Helo();的作用有两个,第一,创建一个Hello 对象,第而,创建一个指向这个对象的引用,而new Hello();就代表了这个引用,Hello hello = new Hello();这句话只是把这个引用(reference)传给了引用变量hello,所以hello.method()和new Hello().method(),是一样的,只不过后者在以后的程序中就不能在引用这个对象,而这个对象也会在以后的某个不确定的时间被gc回收而你写的,x.Hello();是错的,因为Hello()是个构造函数,他的责任是创建对象(object),而创建对象只能用关键字new 来创建,明白了吗?呵呵
      

  5.   

    Hello()不是普通方法,按你的写法只能这样写
          Hello x;
          for(int i=0;i<10;i++)
            x=new Hello(); 
    可以看到,这个x在这里是个垃圾,不会真正用到,不写最好
      

  6.   

    new Hello()的意思是不是就是调用构造函数,因为下面不需要对象再做什么事,所以就不写出对象~
    圆括号的意思是不是就是指调用构造函数,比如A a=new A(),这里就是用一个默认构造函数来初始化对象a
    把上面那段写成Hello x=new Hello()也是正确的吧?只是对象x后面不用,所以就写成new Hello()
    我这些理解对吗?
      

  7.   

    new Hello()的意思是不是就是调用构造函数,因为下面不需要对象再做什么事,所以就不写出对象~
    圆括号的意思是不是就是指调用构造函数,比如A a=new A(),这里就是用一个默认构造函数来初始化对象a
    把上面那段写成Hello x=new Hello()也是正确的吧?只是对象x后面不用,所以就写成new Hello()
    我这些理解对吗?
      

  8.   

    new Hello()的意思是不是就是调用构造函数re:构造函数不能被调用,只能在创建对象的时候自动执行
      

  9.   

    同意rainly1985(不在彷徨) 说的:
    "new Helo();的作用有两个,第一,创建一个Hello 对象,第而,创建一个指向这个对象的引用,而new Hello();就代表了这个引用,Hello hello = new Hello();这句话只是把这个引用(reference)传给了引用变量hello,所以hello.method()和new Hello().method(),是一样的,只不过后者在以后的程序中就不能在引用这个对象,而这个对象也会在以后的某个不确定的时间被gc回收"thinking in java也经常用这种方式,如果后面的程序不再需要用到该Hello的引用,就没必要再赋值给他了。这样可以不用创建不必要的引用,提高程序运行效率
      

  10.   

    Hello hello=new Hello();
    这里new Hello()是用来创建对象,并用默认构造函数初始化,hello只是对象的引用,由这个引用可以调用其他的方法
    这样的理解,对吗?
      

  11.   

    new Hello()的意思是不是就是调用构造函数re:构造函数不能被调用,只能在创建对象的时候自动执行--------------
    构造函数能够被调用,只是不能被继承把
      

  12.   

    Hello hello=new Hello();
    这里new Hello()是用来创建对象,并用默认构造函数初始化,hello只是对象的引用,由这个引用可以调用其他的方法
    这样的理解,对吗?
      

  13.   

    Hello hello=new Hello();
    这里new Hello()是用来创建对象,并用默认构造函数初始化,hello只是对象的引用,由这个引用可以调用其他的方法
    这样的理解,对吗?
      

  14.   

    Hello hello=new Hello();
    这里new Hello()是用来创建对象,并用默认构造函数初始化,hello只是对象的引用,由这个引用可以调用其他的方法
    这样的理解,对吗?
      

  15.   

    说多了你也糊涂了!
    其实就是调用构造函数!用new!
      

  16.   


    new就是来调用Hello()这个构造函数,因为下面不需要再做其他的事,就不能写出对象的引用了
    对不?
      

  17.   


    new就是来调用Hello()这个构造函数,因为下面不需要再做其他的事,就不能写出对象的引用了
    对不?