strictfp nyckelord i java
I Java striktfp är en modifierare som står för strikt flytande punkt som inte introducerades i basversionen av Java som den introducerades i Java version 1.2. Den används i Java för att begränsa flyttalsberäkningar och säkerställa samma resultat på varje plattform samtidigt som man utför operationer i flyttalsvariabeln.
Flyttalsberäkningar är plattformsberoende, dvs olika utdata (flyttalsvärden) uppnås när en klassfil körs på olika plattformar (16/32/64-bitars processorer). För att lösa denna typ av problem introducerades nyckelordet strictfp i JDK 1.2-versionen genom att följa IEEE 754 standarder för flyttalsberäkningar.
Notera: strictfp-modifierare används endast med klassgränssnitt och metoder men är inte tillämplig för variabler som illustreras nedan:
Illustration 1: Nyckelordsanvändning med klasser
strictfp class Test {
// All concrete methods here are implicitly strictfp.
}Illustration 2: Nyckelordsanvändning med gränssnitt
strictfp interface Test {
// All methods here becomes implicitly
// strictfp when used during inheritance.
}
class Car {
// strictfp applied on a concrete method
strictfp void calculateSpeed(){}
}Illustration 3: Nyckelordsanvändning med abstrakt metod i ett gränssnitt
strictfp interface Test {
double sum();
// Compile-time error here
strictfp double mul();
}Några slutsatser kan dras från ovanstående illustrationer enligt följande:
- När en klass eller ett gränssnitt deklareras med strictfp-modifierare är alla metoder som deklareras i klassen/gränssnittet och alla kapslade typer som deklareras i klassen implicit strictfp.
- striktfp kan inte användas med abstrakta metoder. Det kan dock användas med abstrakta klasser/gränssnitt.
- Eftersom metoder för ett gränssnitt är implicit abstrakt, kan strictfp inte användas med någon metod inuti ett gränssnitt.
- Från Java 17 version krävs strictfp nyckelord INTE uttryckligen eftersom alla flyttalsuttryck är strikt utvärderade.
Exempel:
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 ()); } }
Produktion
1.006E11
Produktion:
Nedan kan vi se utgången i konsolen.