strictfp-avainsana javassa

strictfp-avainsana javassa

Javassa strictfp on muokkaus, joka tarkoittaa tiukkaa liukulukua, jota ei otettu käyttöön Javan perusversiossa, koska se otettiin käyttöön Java-versiossa 1.2. Sitä käytetään Javassa liukulukulaskelmien rajoittamiseen ja saman tuloksen varmistamiseen kaikilla alustoilla suoritettaessa toimintoja liukulukumuuttujalla. 
Liukulukulaskelmat ovat alustariippuvaisia, eli erilainen tulos (liukulukuarvot) saavutetaan, kun luokkatiedostoa ajetaan eri alustoilla (16/32/64-bittiset prosessorit). Tämän tyyppisen ongelman ratkaisemiseksi strictfp-avainsana otettiin käyttöön JDK 1.2 -versiossa seuraavasti IEEE 754 liukulukulaskujen standardit. 

Huomautus: strictfp-muuttajaa käytetään vain luokkarajapintojen ja menetelmien kanssa, mutta sitä ei voida soveltaa muuttujien kanssa, kuten alla on kuvattu:

Kuva 1: Avainsanojen käyttö luokkien kanssa 

 strictfp class Test {   

// All concrete methods here are implicitly strictfp.
}

Kuva 2: Avainsanojen käyttö käyttöliittymien kanssa 

 strictfp interface Test {    
// All methods here becomes implicitly
// strictfp when used during inheritance.
}

class Car {
// strictfp applied on a concrete method
strictfp void calculateSpeed(){}
}

Kuva 3: Avainsanan käyttö abstraktilla menetelmällä käyttöliittymässä

 strictfp interface Test {   
double sum();

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

Yllä olevista kuvista voidaan tehdä joitain johtopäätöksiä seuraavasti:

  • Kun luokka tai liitäntä on ilmoitettu strictfp-muuntimella, kaikki luokassa/rajapinnassa ilmoitetut menetelmät ja kaikki luokassa ilmoitetut sisäkkäiset tyypit ovat implisiittisesti strictfp.
  • strictfp ei voi käyttää abstraktien menetelmien kanssa. Sitä voidaan kuitenkin käyttää abstraktien luokkien/rajapintojen kanssa.
  • Koska käyttöliittymän menetelmät ovat implisiittisesti abstrakteja, strictfp:tä ei voida käyttää minkään menetelmän kanssa rajapinnan sisällä.
  • Java 17 -versiosta alkaen strictfp-avainsanaa EI vaadita erikseen, koska kaikki liukulukulausekkeet arvioidaan tarkasti.

Esimerkki: 

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

Lähtö
1.006E11  

Lähtö: 

Alla näemme ulostulon konsolissa.

Tulostusnäyttö  

Luo tietokilpailu