Java strictfp关键字

Java strictfp关键字

strictfp 是一个代表严格浮点的修饰词,在java的基础版本中没有引入,因为它是在Java 1.2版本中引入的。
浮点计算与平台有关,即当一个类文件在不同的平台(16/32/64位处理器)上运行时,会得到不同的输出(浮点值)。为了解决这类问题,JDK 1.2版本中引入了strictfp关键字,遵循IEEE 754浮点计算标准。

注意: strictfp修改器只用于类、接口和方法,但不适用于变量,如下图所示。

插图1: 类的关键字用法

strictfp class Test {

    // All concrete methods here are implicitly strictfp.    
}

插图2: 关键词的使用与接口

strictfp interface Test {

    // All  methods here becomes implicitly 
    // strictfp when used during inheritance.    
}

class Car {

    // strictfp applied on a concrete method 
    strictfp void calculateSpeed(){}
}          

插图3: 带有变量的关键词用法

strictfp interface Test {
    double sum();

    // Compile-time error here
    strictfp double mul(); 
}

从上面的说明中可以得出以下一些结论。

  • 当一个类或接口用strictfp修饰符声明时,那么在该类/接口中声明的所有方法,以及在该类中声明的所有嵌套类型,都隐含着strictfp。
  • strictfp 不能 被用于抽象方法。然而,它可以与抽象类/接口一起使用。
  • 由于接口的方法是隐式抽象的,所以strictfp不能用于接口中的任何方法。
  • Java 17版本开始,由于所有的浮点表达式都是严格评估的,所以不需要明确地使用strictfp关键字。

例子

// Java program to illustrate strictfp modifier
// Usage in Classes
 
// Main class
class GFG {
 
    // Method 1
    // Calculating sum using strictfp modifier
    public strictfp double sum()
    {
 
        double num1 = 10e+10;
        double num2 = 6e+08;
 
        // Returning the sum
        return (num1 + num2);
    }
 
    // Method 2
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating object of class in main() method
        GFG t = new GFG();
 
        // Here we have error of putting strictfp and
        // error is not found public static void main method
        System.out.println(t.sum());
    }
}

输出

java中的strictfp关键字

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程