Java中静态成员变量加上final和不加final有什么区别
时间: 2023-06-01 09:03:43 浏览: 378
静态成员变量加上final和不加final的区别在于:
1. final修饰的静态成员变量是不可修改的,一旦被赋值后将无法再次更改其值,而没有final修饰的静态成员变量可以在任何时候被修改。
2. final修饰的静态成员变量在类加载时就会被初始化,并且只会被初始化一次,而没有final修饰的静态成员变量则会在每次创建类实例时被初始化。
3. final修饰的静态成员变量是线程安全的,因为它们在类加载时就已经被初始化,而没有final修饰的静态成员变量则需要额外的同步措施来保证线程安全。
相关问题
java中静态成员变量的应用
静态成员变量是属于类的,而不是属于对象的。因此,静态成员变量的应用主要有以下几个方面:
1. 全局变量:静态成员变量可以在类中声明,可以被整个类的所有实例共享,也可以在类外部通过类名来访问,因此可以作为全局变量使用。
2. 常量:静态成员变量可以被声明为final,使其成为常量。常量可以在程序中多次引用,而不需要每次都重新定义。
3. 计数器:静态成员变量可以用来实现计数器,例如用于记录某个类的实例数量。
4. 缓存:静态成员变量可以用来缓存数据,例如在读取大量数据时,可以先将数据读入静态成员变量中,然后在程序中多次使用。
5. 工具类:静态成员变量可以用来实现工具类,例如在Math类中,PI就是一个静态成员变量。
一个成员变量加上static和final和只加static有什么区别
1. static成员变量:静态成员变量属于类而不是对象,所有该类的对象都共享同一个静态成员变量,可以通过类名直接访问。
2. final成员变量:final成员变量表示该变量的值一旦初始化就不能再修改,因此在声明时必须初始化。final成员变量可以是实例变量,也可以是静态变量。
3. static final成员变量:static final成员变量表示该变量的值一旦初始化就不能再修改,并且属于类而不是对象,所有该类的对象都共享同一个静态final成员变量,可以通过类名直接访问。一般用于定义常量。
区别:
1. static成员变量与普通成员变量不同的是,它属于类而不是对象。而final成员变量与普通成员变量不同的是,它的值一旦初始化就不能再修改。
2. static final成员变量既是静态的又是常量,它的值一旦初始化就不能再修改,并且所有该类的对象都共享同一个静态final成员变量。
阅读全文