当前位置: 首页 > 面试题库 >

引用变量上的调用方法与新对象上的调用方法

曾新
2023-03-14
问题内容

我在调用 非静态 方法时感到困惑

class A {
    void doThis() {}

    public static void main(String... arg) {
        A a1 = new A();
        a1.doThis();        // method - 1
        new A().doThis();   // method - 2
    }
}

我知道 method-1method-2 都将调用 doThis() ,但是功能上有什么区别吗?


问题答案:

功能上有区别吗?

两者的行为方式相同。

第二个选项不允许您再次重用该实例。在单行return语句中可能很方便和简洁(例如,请考虑使用构建器模式,其中每个构造方法都将返回一个半初始化的实例):

return new Builder().a().b().build();

或者创建一个对象仅执行一次定义的操作。

方法2中新对象的引用是什么?

它不再存在( 更准确地说,我们没有对它的访问 ),除非doThis回报this,你可能能够把一个变量方法执行后。

我可以说方法2是调用非静态方法的不正确方法吗?

否。如果以后将不再使用该变量,为什么还要创建一个变量?



 类似资料:
  • 我创建了一个静态变量来保存应用程序上下文,因为我要在课堂上的其他地方使用它。这个变量被分配到类的构造函数中,我得到了以下错误——“不要将Android上下文类放在静态字段中(静态引用MyClass,其中字段appContext指向上下文);这是内存泄漏(也会中断即时运行)[StaticFieldLeak]。” 下面是MyClass中的代码: 为了解决这个问题,我考虑将appContext作为弱引用

  • 问题内容: 我收到以下错误 尝试在空对象引用上调用虚拟方法’void android.widget.StackView.setAdapter(android.widget.Adapter)’ 在这条线上 完整的片段 EventsFragment.java 是 Stack_Adapter.java Stack_Items 问题答案: 您正在执行: 你是。返回。 你为什么用? 在哪里?您应该从正确的x

  • 我在使用 firebase firestore 时收到一个空指针引用,我的应用崩溃了。这是我的代码: 这里的sem指的是我的文档17030121084中的字段。 有人能对此提出解决方案吗?

  • 我的应用程序有问题,想解决它,但我无法访问解决方案,请帮帮我,,

  • 7.2.3 对象方法的调用 一旦创建了对象,就可以通过向对象发消息来调用对象的方法。消息的格式如下: <对象>.<方法>(<实参>) 其含义是请求<对象>执行<方法>,方法定义中列出的形式参数由<实参>提供。 例如,接着前面的例子执行如下语句: >>> p1.whatName() My name is Lucy >>> p2.whatName() My name is Tom >>> p2.ho

  • 问题内容: 我尝试使用片段来打开数据库,但是,当我单击按钮开始搜索时,程序意外终止,并显示如下错误: 主片段: DBManager类: 顺便说一句,我在MainAcitivity中使用了有关DBManager的代码,并且成功了。将代码复制到上面的片段后,它失败了,该怎么办? 问题答案: 之前和之后你都做不到。 因为,您正在执行片段实例化时。该方法将始终返回null。另外,尽量不要将参考文献保留在您