klíčové slovo strictfp v jazyce Java
V Javě strictfp je modifikátor, který znamená striktní pohyblivou desetinnou čárku, která nebyla zavedena v základní verzi Javy, protože byla představena v Javě verze 1.2. Používá se v Javě pro omezení výpočtů s plovoucí desetinnou čárkou a zajištění stejného výsledku na každé platformě při provádění operací s proměnnou s plovoucí desetinnou čárkou.
Výpočty s pohyblivou řádovou čárkou jsou závislé na platformě, tj. různého výstupu (hodnoty s pohyblivou řádovou čárkou) je dosaženo, když je soubor třídy spuštěn na různých platformách (16/32/64bitové procesory). K vyřešení tohoto typu problému bylo ve verzi JDK 1.2 zavedeno klíčové slovo strictfp následujícím způsobem IEEE 754 standardy pro výpočty s pohyblivou řádovou čárkou.
Poznámka: Modifikátor strictfp se používá pouze s rozhraními tříd a metodami, ale nelze jej použít s proměnnými, jak je znázorněno níže:
Ilustrace 1: Použití klíčových slov s třídami
strictfp class Test {
// All concrete methods here are implicitly strictfp.
}Obrázek 2: Použití klíčových slov s rozhraními
strictfp interface Test {
// All methods here becomes implicitly
// strictfp when used during inheritance.
}
class Car {
// strictfp applied on a concrete method
strictfp void calculateSpeed(){}
}Obrázek 3: Použití klíčových slov s abstraktní metodou v rozhraní
strictfp interface Test {
double sum();
// Compile-time error here
strictfp double mul();
}Z výše uvedených ilustrací lze vyvodit některé závěry:
- Když je třída nebo rozhraní deklarováno s modifikátorem strictfp, pak všechny metody deklarované ve třídě/rozhraní a všechny vnořené typy deklarované ve třídě jsou implicitně strictfp.
- strictfp nemůže použít s abstraktními metodami. Lze jej však použít s abstraktními třídami/rozhraními.
- Protože metody rozhraní jsou implicitně abstraktní, nelze strictfp použít s žádnou metodou uvnitř rozhraní.
- Od verze Java 17 NENÍ klíčové slovo strictfp explicitně vyžadováno, protože všechny výrazy s plovoucí desetinnou čárkou jsou přísně hodnoceny.
Příklad:
Java // 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 = 10 e + 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 ()); } }
Výstup
1.006E11
výstup:
Níže můžeme vidět výstup v konzoli.