strictfp kulcsszó java-ban

strictfp kulcsszó java-ban

A Java nyelven a strictfp egy olyan módosító, amely a szigorú lebegőpontot jelöli, amelyet a Java alapverziójában nem vezettek be, mint ahogy a Java 1.2-es verziójában. Javaban használják a lebegőpontos számítások korlátozására, és ugyanazt az eredményt biztosítják minden platformon, miközben a lebegőpontos változóban hajtanak végre műveleteket. 
A lebegőpontos számítások platformfüggőek, azaz különböző kimenetek (lebegőpontos értékek) érhetők el, ha egy osztályfájlt különböző platformokon (16/32/64 bites processzorokon) futtatnak. Az ilyen típusú problémák megoldására a JDK 1.2-es verziójában a strictfp kulcsszót a következőképpen vezettük be IEEE 754 szabványok a lebegőpontos számításokhoz. 

Jegyzet: A strictfp módosító csak osztályfelületekkel és metódusokkal használható, de nem alkalmazható változókkal, ahogyan az alábbiakban látható:

1. ábra: Kulcsszóhasználat osztályokkal 

 strictfp class Test {   

// All concrete methods here are implicitly strictfp.
}

2. ábra: Kulcsszóhasználat interfészekkel 

 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. ábra: Kulcsszóhasználat absztrakt módszerrel egy felületen

 strictfp interface Test {   
double sum();

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

A fenti ábrákból néhány következtetés vonható le:

  • Ha egy osztályt vagy interfészt szigorúfp módosítóval deklarálunk, akkor az osztályban/interfészben deklarált összes metódus és az osztályban deklarált összes beágyazott típus implicit szigorúfp.
  • strictfp nem lehet absztrakt módszerekkel használható. Azonban használható absztrakt osztályokkal/interfészekkel.
  • Mivel az interfész metódusai implicit absztraktak, a strictfp nem használható egyetlen interfészen belüli metódussal sem.
  • A Java 17-es verziótól a strictfp kulcsszó NEM kötelező kifejezetten, mivel minden lebegőpontos kifejezés szigorúan kiértékelésre kerül.

Példa: 

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  ());      }   }   

Kimenet
1.006E11  

Kimenet: 

Alább láthatjuk a kimenetet a konzolban.

Kimeneti képernyő  

Kvíz létrehozása