相关疑难解决方法(0)

Java中的"final"关键字如何工作?(我仍然可以修改一个对象.)

在Java中,我们使用final带变量的关键字来指定其值不被更改.但我发现你可以改变类的构造函数/方法中的值.同样,如果变量是,static那么它是编译错误.

这是代码:

import java.util.ArrayList;
import java.util.List;

class Test {
  private final List foo;

  public Test()
  {
      foo = new ArrayList();
      foo.add("foo"); // Modification-1
  }
  public static void main(String[] args) 
  {
      Test t = new Test();
      t.foo.add("bar"); // Modification-2
      System.out.println("print - " + t.foo);
  }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常,没有错误.

现在将变量更改为static:

private static final List foo;
Run Code Online (Sandbox Code Playgroud)

现在是编译错误.这final真的有用吗?

java final

457
推荐指数
9
解决办法
45万
查看次数

'static'关键字在一个类中做什么?

具体来说,我正在尝试这段代码:

package hello;

public class Hello {

    Clock clock = new Clock();

    public static void main(String args[]) {
        clock.sayTime();
    }
}
Run Code Online (Sandbox Code Playgroud)

但它给出了错误

无法访问静态方法main中的非静态字段

所以我把声明改为clock:

static Clock clock = new Clock();
Run Code Online (Sandbox Code Playgroud)

它奏效了.在声明之前放置该关键字是什么意思?对于该对象可以做什么,它究竟会做什么和/或限制什么?

java oop static language-features restriction

432
推荐指数
16
解决办法
80万
查看次数

Java的最终版本与C++的const

Java进行C++程序员教程说,(大亮点是我自己的):

关键字final 大致 相当于C++中的const

在这种情况下,"大致"意味着什么?它们不完全一样吗?

有什么区别,如果有的话?

c++ java final const

144
推荐指数
6
解决办法
6万
查看次数

标签 统计

java ×3

final ×2

c++ ×1

const ×1

language-features ×1

oop ×1

restriction ×1

static ×1