kľúčové slovo strictfp v jazyku Java

kľúčové slovo strictfp v jazyku Java

V jazyku Java strictfp je modifikátor, ktorý znamená striktnú pohyblivú desatinnú čiarku, ktorá nebola zavedená v základnej verzii Java, ako bola predstavená vo verzii Java 1.2. Používa sa v Jave na obmedzenie výpočtov s pohyblivou rádovou čiarkou a zabezpečenie rovnakého výsledku na každej platforme pri vykonávaní operácií s premennou s pohyblivou rádovou čiarkou. 
Výpočty s pohyblivou rádovou čiarkou sú závislé od platformy, t. j. odlišný výstup (hodnoty s pohyblivou rádovou čiarkou) sa dosiahne, keď je súbor triedy spustený na rôznych platformách (16/32/64-bitové procesory). Na vyriešenie tohto typu problému bolo zavedené kľúčové slovo strictfp vo verzii JDK 1.2 nasledujúcim spôsobom IEEE 754 štandardy pre výpočty s pohyblivou rádovou čiarkou. 

Poznámka: Modifikátor strictfp sa používa iba s rozhraniami a metódami tried, ale nedá sa použiť s premennými, ako je znázornené nižšie:

Ilustrácia 1: Použitie kľúčových slov s triedami 

 strictfp class Test {   

// All concrete methods here are implicitly strictfp.
}

Obrázok 2: Použitie kľúčových slov s rozhraniami 

 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ázok 3: Použitie kľúčových slov s abstraktnou metódou v rozhraní

 strictfp interface Test {   
double sum();

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

Z vyššie uvedených ilustrácií možno vyvodiť niektoré závery:

  • Keď je trieda alebo rozhranie deklarované s modifikátorom strictfp, potom všetky metódy deklarované v triede/rozhraní a všetky vnorené typy deklarované v triede sú implicitne strictfp.
  • strictfp nemôže použiť s abstraktnými metódami. Môže sa však použiť s abstraktnými triedami/rozhraniami.
  • Keďže metódy rozhrania sú implicitne abstraktné, strictfp nemožno použiť so žiadnou metódou vo vnútri rozhrania.
  • Od verzie Java 17 sa kľúčové slovo strictfp výslovne nevyžaduje, pretože všetky výrazy s pohyblivou rádovou čiarkou sú prísne hodnotené.

Prí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: 

Nižšie vidíme výstup v konzole.

Výstupná obrazovka  

Vytvoriť kvíz