KodeGym/Blog Jawa/Acak/Cara Ngonversi dawa dadi int ing Jawa
John Squirrels
tingkat
San Francisco

Cara Ngonversi dawa dadi int ing Jawa

Diterbitake ing grup
Ing artikel iki, kita bakal nerangake carane ngowahi dawa dadi int ing Jawa lan nulis sawetara conto kode. Amarga dawa minangka jinis data sing luwih gedhe tinimbang int , ing kene kita kudu nggunakake jinis casting kanggo konversi kasebut. Kaya sing wis dingerteni, dawa lan int ing Jawa minangka jinis data primitif. Tegese dudu obyek kelas. Kabeh Obyek lan susunan disimpen ing Heap Space nalika jinis primitif kayata int lan dawa disimpen ing memori Stack. Long lan int rada padha. Integer tegese nomer wutuh, sing bisa positif, negatif, utawa nol. Loro-lorone dawalan int iku jinis integer, supaya padha kompatibel ing cara. Masalahe, jinis dawa saka -263 nganti 263 - 1, utawa -9223372036854775808 nganti 9223372036854775807. Yaiku, program Java nyedhiyakake 64 bit kanggo jinis dawa . Ing wektu sing padha, jinis int manggoni 32 bit, ing ngendi sampeyan bisa nglebokake nomer saka -231 nganti 231 - 1 utawa, sing padha, saka -2147483648 nganti 2147483647. Iki tegese sembarang nomer jinis int bisa gampang pas menyang a jinis dawa . Ing Jawa, nalika nggarap primitif, konversi saka jinis sing luwih sempit menyang jinis sing luwih akeh otomatis. Kanthi cara liya, diarani widening.
int myInt= 18;
long myLong= 16000;
       myLong = myInt;
Ing kene kita nemtokake int menyang variabel dawa . Kabeh mlaku kanthi lancar, ing sawetara sing luwih gedhe, sing luwih cilik mathuk kanthi tenang lan ora kelangan apa-apa kajaba papan memori. Miturut cara, nalika kita wara-wara variabel saka jinis dawa lan netepake regane, iku luwih apik kanggo nemtokake huruf l kanggo, iki bakal teka ing Handy nalika kita bisa karo nomer njaba sawetara int .
long myVeryLong = 10000000000l;

Jawa long kanggo konversi int

Saiki ayo bali menyang tugas utama artikel iki — Java long to int conversion. Masalahe yaiku sing luwih gedhe ora mesthi pas karo sing luwih cilik. Dadi ing kene kita ora bisa mung sijine "cilik" menyang "gedhe" otomatis ing Jawa. Yen kita nyoba tumindak kaya ing conto sadurunge, nanging kosok balene:
//example without typecasting…nice trying!
public static void main(String[] args) {

int myInt= 18;
long myLong= 16000;
       myInt = myLong;
}
Compiler Java mung ora ngidini kita nindakake iki lan bakal nggawe kesalahan. Dadi kanggo operasi iki, kita kudu nggunakake apa sing diarani typecasting. Proses iki diarani konversi jinis narrowing. Kanggo mbatesi variabel, sampeyan kudu nemtokake kanthi jelas jinis sing sampeyan pengin menehi nilai. Punika conto ngendi kita bakal nyoba kanggo sijine siji "cilik" dawa kanggo int (sing kudu pas) lan loro "gedhe" nomer dawa sing metu saka sawetara int .
public class longToInt {

   public static void main(String[] args) {

       int myInt = 18;
       long myLong = 16000;
       long myVeryLong = 2147483648l;//l in the end means ‘long’
       long myVeryLong = 10000000000l;

       myInt = (int) myLong;
       System.out.println(myInt);
       myInt = (int) oneMoreLong;
       System.out.println(myInt);
       myInt = (int) myVeryLong;
       System.out.println(myInt);
   }
}
Kita wis ngabari kompiler yen kita pengin nglebokake nilai dawa menyang variabel int lan kita tanggung jawab kanggo akibat saka keputusan iki. Compiler, ndeleng indikasi eksplisit saka jinis sempit, nindakake konversi. Akibaté, kita entuk output:
16000 -2147483648 1410065408
Ya, 16000 mesthine sing dikarepake, nanging kenapa minus ing -2147483648? Lan apa tegese 1410065408 iki? Kasunyatane yaiku nomer kasebut disimpen ing variabel sing dawa , sing, kaya sing kita eling, njupuk 64 bit. Kita nyoba nglebokake angka kasebut menyang variabel int sing mung bisa nyimpen 32 bit. Minangka aturan, 32 sel iki bakal ngemot nul lan siji saka 32 bit pisanan saka nomer dawa , lan liyane mung bakal dibuwak. Mula, yen angka asline ora pas karo 32 bit, mula bit sing ora pas bakal dibuwang. Pramila kita mung duwe nomer sing bener 16000, amarga butuh kurang saka 32 bit.

Jawa 8 dawa kanggo konversi int

Ing Jawa 8, kelas Math duwe metode anyar sing bakal ngowahi dawa dadi int . Punika:
Math.toIntExact(value);
Wangsulan: Bab ingkang paling bab cara iki iku kontrol dawa nomer diowahi, lan yen nilai gedhe banget kanggo pas menyang int a , bakal uncalan pangecualian. Ayo ndeleng cara kerjane ing conto kita:
public class intToLong {

   public static void main(String[] args) {

       int myInt = 18;
       long myLong = 16000;
       long oneMoreLong = 2147483648l;
       long myVeryLong = 10000000000l;

       System.out.println(Math.toIntExact(myLong));
       int y = Math.toIntExact(oneMoreLong);
       System.out.println(oneMoreLong);
       System.out.println(Math.toIntExact(myVeryLong));
   }
}
Output yaiku:
16000 Pengecualian ing thread "utama" java.lang.ArithmeticException: integer overflow ing java.base/java.lang.Math.toIntExact(Math.java:1080) ing intToLong.main(intToLong.java:13)
Mangkono, program kasebut mung nyithak nomer siji-sijine sing diowahi kanthi bener 16000, banjur nalika nyoba push out-of-range nomer 2147483648l menyang int , cara kasebut mbuwang pengecualian. Dadi kita ora duwe masalah bit dibuwak, kaya ing kasus Jawa klasik long kanggo konversi int .
Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar