创建一个含有static final数据成员和final数据成员的类,说明二者间的区别
时间: 2024-11-27 15:19:01 浏览: 2
在Java中,`static final` 和 `final` 数据成员(也称为常量)有明显的区别。
1. `static final` 数据成员(常量)
- 这种字段是属于类的,而不是属于某个特定对象的。这意味着所有类的实例都可以共享这个常量,不需要创建类的实例就可以访问它。
- 字段名通常大写字母开头,以示区别于普通成员变量。
- 它的值一旦设置,就不能再改变,即使在类加载之后也不能修改。
例如:
```java
public class MyClass {
public static final int MY_CONSTANT = 100;
}
```
在这个例子中,`MY_CONSTANT`是一个静态常量,可以直接通过类名MyClass引用。
2. `final` 数据成员(不可变对象)
- 这些字段是属于类的每个实例的,不是类级别的。它们可以用于创建不可变对象,即对象的状态一旦确定就不再改变。
- 即使是对象的引用,一旦赋予了一个`final`引用,该引用指向的对象状态也不会改变。
例如:
```java
public class MyClass {
private final String name;
public MyClass(String name) {
this.name = name; // 初始化后name不可变
}
}
```
这里`name`是一个实例变量,一旦在构造函数中被赋予一个字符串,就不能再次更改。
总结来说,`static final`更关注的是全局可见性和不可更改性,而`final`则关注单个对象实例的属性是否可以修改。
阅读全文