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();
}
}
new Hello()自动调用构造函数了,如果不需要对对象进行更多的操作,对象名就省了。
Hello hello = new Hello();
hello.method();
等价与
new Hello().method();(这样简单嘛)
如果要调用两个函数这样写就不行了只能
Hello hello = new Hello();
hello.method1();
hello.method2();
你下面的写法显然是不行的
new Helo();的作用有两个,第一,创建一个Hello 对象,第而,创建一个指向这个对象的引用,而new Hello();就代表了这个引用,Hello hello = new Hello();这句话只是把这个引用(reference)传给了引用变量hello,所以hello.method()和new Hello().method(),是一样的,只不过后者在以后的程序中就不能在引用这个对象,而这个对象也会在以后的某个不确定的时间被gc回收
而你写的,x.Hello();是错的,因为Hello()是个构造函数,他的责任是创建对象,而创建对象只能用关键字new 来创建,明白了吗?呵呵
Hello()不是普通方法,按你的写法只能这样写
Hello x;
for(int i=0;i<10;i++)
x=new Hello();
可以看到,这个x在这里是个垃圾,不会真正用到,不写最好
说多了你也糊涂了!
其实就是调用构造函数!用new!