【发布时间】:2014-06-30 06:24:32
【问题描述】:
我只是想明确一点,以两种形式调用函数,例如
- 通过创建对象并使用该对象调用方法。
- 不创建调用函数的对象。
我的意思是例如我有一个像这样的类
Class A{
public int callMethod(){
return 2;
}
}
现在我正在创建另一个类来调用A类中定义的方法callMethod
Class B {
public static void main(String[] args) throws ParseException {
A a = new A();
//1st form to call the method
int aa = a.callMethod()
System.out.println(aa);
//2nd form to call the method
aa = new A().callMethod();
System.out.println(aa);
}
}
在创建对象后的第一个语句中,我使用 A 的类对象调用 A 类的 callMethod()。第二次我直接调用该方法而不创建对象类 A。在第一种调用该方法的形式是该死的确定我们正在创建对象并在内存中为该对象占用一些空间。那么调用该方法的第二种形式呢?它需要创建任何对象吗?哪个更快?谁能给我澄清一下。
【问题讨论】:
-
好吧,new A() 本身就是在堆中创建一个对象!不是吗!!!
-
“不创建对象”短语是错误的。当您调用 new A() 时,您实际上是在创建对象
-
This answer 可以帮到你!!然而,它是关于将对象传递给方法,而不是调用方法。但上下文几乎相似。
-
没有区别(无论在这里)。由于局部变量
a只是堆栈上的一个内存位置,用于存储指向new A()产生的对象的“指针”。同样在第二种情况下,new A()的临时结果存储在堆栈中。 -
关键字
new总是实例化对象并返回对象引用。是否要将其分配给变量取决于您。
标签: java object method-call