虽然从入门的时候就知道
final字段是不可能变字段
static字段是静态字段所有实例都共享这一个字段的值
但是有一个事情一直没搞清,就是既然 final的值不可变,那所有的实例对final字段的获取都是一样,那为什么还有必要用static final 这样重复的关键字
直到后面看见以下定义
public final double d = Math.random();
这样的定义类在加载的时候会初始化d字段,但是由于使用随机数,我们可以很清楚的看见生成的2个实现中每一个d的值都不一样。
所以这时候使用
public final static double fs = Math.random();
就可以使所有实现中fs值相同。
分享到:
相关推荐
Static、Final 和 Static Final 是 Java 中三个重要的关键字,它们之间的区别和应用场景是开发者需要了解和掌握的。 首先,让我们来了解 Static 关键字。Static 是 Java 中的静态修饰符,可以修饰变量、程序块、...
`final`与`static`是两个经常被提及的关键字,它们之间的区别在于: - **Static**:主要用于声明类成员(变量或方法),表明这些成员属于类本身而非实例。这意味着无论创建了多少个类的实例,这些静态成员都只有一...
- `final constants`和`final variables`之间存在细微差别,主要体现在初始化时机和使用场景上。 - `final constants`通常是在类定义时就已经初始化好的值,而`final variables`则可以在创建对象时或对象创建后进行...
面向对象与Java实现:深入解析多态、static与final 面向对象编程(OOP)是一种流行的编程范式,它将现实世界中的实体抽象成类和对象,通过封装、继承和多态三大特性,使得代码更加模块化、易于维护和扩展。Java作为...
在Java中,如果一个类被声明为`static`(实际上是`final static`),则这个类称为常量类,只能包含静态成员,不允许实例化,常用于封装常量。 综上所述,`static` 关键字在编程中起着至关重要的作用,它能够帮助...
- `static final`也可用于修饰方法,表示该方法是最终的,不能被子类重写。这种组合很少见,因为通常常量和方法的重写是相互排斥的概念。 理解`static`的关键在于,它是关于类级别的共享资源,而不是实例级别的。...
- `final`修饰变量时,如果是类级别的常量,通常遵循全大写命名约定,如`public static final String MY_CONSTANT = "value"`。 2. **抽象类(Abstract Class)** - 抽象类是一种包含抽象方法的类,抽象方法只有...
- 静态成员变量:使用`static`关键字声明的成员变量属于类本身而不是类的实例,这意味着它们的值在所有实例之间共享,且无需通过对象来访问,可以直接使用`ClassName::variable`的方式调用。 - 静态方法:同样,`...
5. **定义常量**:在Java中,通常使用`public static final`修饰符定义常量。这些常量应遵循一定的命名规则,如全大写字母。 ```java public class Constants { public static final int MAX_VALUE = 100; } ``...
private final static String DAUGHTER = "daughter"; private final static String SON = "son"; private final static String SISTER = "sister"; private final static String BROTHER = "brother"; // ...
在构造函数内对一个 final 域的写,与随后把这个构造对象的引用赋值给一个变量,这两个操作之间不能重排序 初次读一个包含 final 域的对象的引用,与随后初次读这个 final 域,这两个操作之间不能重排序 举...
private final static String DAUGHTER = "daughter"; private final static String SON = "son"; private final static String SISTER = "sister"; private final static String BROTHER = "brother"; private...
- **共享数据**:当多个对象之间需要共享某些数据时,可以使用`static`变量来实现。 - **工具类**:用于封装一系列不依赖于特定对象状态的方法,通常这些方法会被标记为`static`。 - **常量定义**:`static final`...
`static`关键字用于声明类变量,这些变量在类的所有实例之间共享。这意味着,不论创建多少个对象,静态变量只有一份拷贝,存储在方法区中。在上述例子中,`Student1`类的`schoolName`被声明为静态,因此所有`Student...
private final static long TIMESTMP_LEFT = DATACENTER_LEFT + DATACENTER_BIT; // 时间戳向左的位移 private long datacenterId; // 数据中心 private long machineId; // 机器标识 private long sequence = ...
#### 知识点一:Abstract与Final关键字的区别 1. **Abstract关键字**: - `abstract` 关键字用于定义抽象类或抽象方法。 - 抽象类不能被实例化,只能作为其他类的基类来使用。 - 抽象方法没有具体的实现代码,...
当`static`和`final`一起使用时,它们创建的是类级别的常量。这样的变量一旦赋值后就不能改变,且可以在类的任何地方(包括静态上下文)直接访问。例如: ```java public class Constants { public static ...
`protected`的访问级别介于`public`和`private`之间,它允许同一包中的类或子类访问被`protected`修饰的成员。例如: ```java class A { protected int x = 123; public int getX() { return x; } } class B ...
public final static String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver"; public final static String URL = "jdbc:odbc:news"; ``` - **第二类型(部分Java部分本地驱动)**:这类驱动通常由厂商提供,可以在...
内部类与`final`关键字之间有特殊的交互。当在方法内部定义匿名内部类时,它可以访问方法中的`final`局部变量。这是因为内部类可能在外部方法执行完毕后仍然存活,因此需要在内部类中保留外部方法中`final`变量的值...