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

Java中的最终对象[重复]

陶涵育
2023-03-14
问题内容

这个问题已经在这里有了答案

10年前关闭。

可能重复:
何时使用最终版

final为对象 声明关键字有什么用?例如:

final Object obj = new myclass();

问题答案:

使用“ final”关键字可使您声明的变量不变。最初分配后,将无法重新分配。

但是,这不一定意味着变量引用的实例状态是不可变的,仅引用本身是不可变的。

在变量上使用“
final”关键字有几个原因。一种是优化,通过将变量声明为final来允许值被记忆。

使用最终变量的另一种情况是方法中的内部类需要访问声明方法中的变量。以下代码说明了这一点:

public void foo() {

        final int x = 1;

        new Runnable() {


            @Override
            public void run() {
                int i = x;
            }

        };

}

如果未将x声明为“最终”,则代码将导致编译错误。需要成为“最终”的确切原因是因为新的类实例可以超过方法调用的寿命,因此需要自己的x实例。为了避免在同一范围内具有可变变量的多个副本,必须将变量声明为final,以便不能对其进行更改。

一些程序员还提倡使用“ final”来防止意外将变量重新分配到不应分配的位置。一种“最佳实践”类型规则。



 类似资料:
  • 问题内容: 为对象 声明关键字有什么用?例如: 问题答案: 使用“ final”关键字可使您声明的变量不变。最初分配后,将无法重新分配。 但是,这不一定意味着变量引用的实例状态是不可变的,仅引用本身是不可变的。 在变量上使用“ final”关键字有几个原因。一种是优化,通过将变量声明为final来允许值被记忆。 使用最终变量的另一种情况是方法中的内部类需要访问声明方法中的变量。以下代码说明了这一点

  • 我有一个关于Java并发性的问题。如果我基于一个对象同步一个临界区,那么将该变量声明为< code >final static对象与简单地声明为< code >最终对象有什么区别? 我知道 关键字将变量定义为属于该类,但我对它在多线程环境中的含义有点模糊。 请参阅下面的代码示例。目前,我将对象声明为,如果我添加keyword,会有什么不同? 谢谢你的帮助!

  • 问题内容: 我有一个很简单的问题: 我想要一个Java类,该类提供一个公共静态方法,该方法可以执行某些操作。这只是出于封装目的(将所有重要的内容都放在一个单独的类中)… 此类不应被实例化或扩展。那让我写道: (尽管我知道,这是禁止的)。 我也知道,我可以使此类完全为final,并在将其私有化时覆盖标准构造函数。 但这在我看来更像是一种“解决方法”,应该更可能由最终的抽象类完成… 而且我讨厌解决方法

  • 在Java8中,Java设计者提出了一个有效的final变量的概念,即一个如果被“final”追加就不会给编译器带来错误的变量。我的问题是,这个新提出的“有效最终”概念比经典的“最终”提供了什么?作为一名Java开发人员,我实际上得到了什么好处?

  • 我有这个数组的对象,我想删除最后一个对象。有人能让我知道这样做吗?

  • 我有super class Person扩展到2个sup class(Employee和Student),在我输入员工信息(姓名、SSN、工资、Gendr)后,我想找到最大工资的员工并键入他的信息,但我不知道如何用对象来做!,如果你可以给我一个提示,我将非常感谢。