strictfp nyckelord i java

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.

Utgångsskärm  

Skapa frågesport