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.