final和static有什么区别?
时间: 2024-01-10 10:03:23 浏览: 27
final和static都是Java中的关键字,但它们有不同的用途。
final关键字用于声明一个常量,一旦被赋值,其值不能再被修改。final可以用于变量、方法和类。例如:
```
final int num = 10; // 声明一个整型常量
final void sayHello() { // 声明一个不能被重写的方法
System.out.println("Hello");
}
final class MyClass { // 声明一个不能被继承的类
...
}
```
static关键字用于声明一个静态成员,即该成员属于类而不是某个实例,可以在没有创建实例的情况下直接访问。static可以用于变量、方法和代码块。例如:
```
static int count = 0; // 声明一个静态变量
static void sayHello() { // 声明一个静态方法
System.out.println("Hello");
}
static { // 声明一个静态代码块
count = 10;
}
```
总结来说,final关键字用于声明常量和不可修改的成员,而static关键字用于声明静态成员,即属于类而不是实例的成员。
相关问题
static和static final区别
static final和final的区别在于:
1. static final用于定义常量,其值在程序运行期间不可改变,且可以在类的任何方法中使用。
2. final用于修饰变量、方法或类,表示其值或实现不可改变。final修饰的变量必须在声明时或构造函数中初始化,且只能被赋值一次。
3. static final常量在类加载时就已经被初始化,而final变量则是在对象创建时被初始化。
4. static final常量可以直接通过类名访问,而final变量只能通过对象名访问。
总之,static final常量是不可变的全局变量,而final变量是不可变的局部变量。
一个成员变量加上static和final和只加static有什么区别
1. static成员变量:静态成员变量属于类而不是对象,所有该类的对象都共享同一个静态成员变量,可以通过类名直接访问。
2. final成员变量:final成员变量表示该变量的值一旦初始化就不能再修改,因此在声明时必须初始化。final成员变量可以是实例变量,也可以是静态变量。
3. static final成员变量:static final成员变量表示该变量的值一旦初始化就不能再修改,并且属于类而不是对象,所有该类的对象都共享同一个静态final成员变量,可以通过类名直接访问。一般用于定义常量。
区别:
1. static成员变量与普通成员变量不同的是,它属于类而不是对象。而final成员变量与普通成员变量不同的是,它的值一旦初始化就不能再修改。
2. static final成员变量既是静态的又是常量,它的值一旦初始化就不能再修改,并且所有该类的对象都共享同一个静态final成员变量。