当前位置: 首页 > 知识库问答 >
问题:

静态的,final的,静态final的-正确的用法和什么时候使用它们?

怀洛华
2023-03-14
  • final:类似于C++中的const参数。这基本上意味着值(或方法中返回的值)不会改变。
  • 静态:表示值(或方法)不直接赋给某个对象--因此您可以在其他类中使用静态变量(或方法),而无需创建对象
  • final static:这种组合是否意味着您有变量(或方法),您可以在不创建对象(static)的情况下访问它,并且您不能更改它的值(就像在C++常量中)(final)

如果我是对的,比我没有得到一件事。在IntelliJ IDE中,当您将方法声明为public final static时,它指出final应该被删除,因为static已经被指出了。为什么,怎么,什么时候???

共有1个答案

胡承悦
2023-03-14

static表示字段或方法属于类,而不是类的单个实例。

final应用于方法和字段(或局部变量)时实际上意味着不同的含义:

  • final变量和字段不能重新分配。这与C++的const
  • 相当相似 不能重写
  • final方法,这只适用于实例上的方法。在这种意义下使用时,final与C++的const不相似。

因为您不能重写类上的statice方法,所以组合的修饰符static final通常是多余的,这就是IntelliJ建议您删除其中一个修饰符的原因。

    null
 类似资料:
  • 我为之编写的测试用例: 我还有最后一节课。 我已经在测试类中添加了以下代码: 但对我来说什么都不起作用。请建议在类中模仿方法的正确方法。

  • Java不允许类的静态方法被重写。因此,如果一个超类方法是静态的,那么子类中的同名方法也需要是静态的,具有相同的签名才能编译,尽管它不是一个方法重写。下面是一个例子: 但我的问题是,所以如果这不是方法重写,那么为什么我不能使超级类中的静态方法final?

  • 我用的是同一种概念,我在第一节课上用过 但当我运行类Test2时,它给出了输出5。 我想知道初始化是什么时候发生的?我知道静态变量在编译时获得值。但是静态决赛呢?这个变量什么时候得到它的值?

  • 我读过的BorderLayout声明的文档最好使用,,,和。(https://docs.oracle.com/javase/tutorial/uiswing/layout/border.html) 但是,我也找到了使用,,,和的留档。(https://docs.oracle.com/javase/7/docs/api/java/awt/BorderLayout.html)从第一个设置直接映射到这个

  • 我的问题与这个问题基本相同,但这也适用于函数吗? 我想明白: 编译器是否将类中的所有函数视为? 在类中的函数中添加关键字是否有任何影响?

  • 我发现了一个代码,其中声明了如下代码 它们之间有什么不同或相同?或者私人的和公共的有什么不同?