1. Dhaptar jinis primitif

Basa Jawa nduweni 8 jinis primitif dhasar. Disebut primitif amarga nilai-nilai saka jinis kasebut dudu obyek lan disimpen langsung ing variabel.

Mangkene tabel kanthi sawetara informasi ringkes babagan jinis iki:

Jinis Ukuran
ing bita
Range nilai Nilai standar Katrangan
byte 1 -128 .. 127 0 Jinis integer paling cilik yaiku bait tunggal
short 2 -32.768 .. 32.767 0 Integer cendhak, rong bita
int 4 -2*10 9 .. 2*10 9 0 Integer, 4 bita
long 8 -9*10 18 .. 9*10 18 0L Integer dawa, 8 bita
float 4 -10 38 .. 10 38 0.0f Nomer floating-point, 4 bita
double 8 -10 308 .. 10 308 0.0d Nomer floating point presisi kaping pindho, 8 bita
boolean 1 true,false false Tipe Boolean (mung truelan false)
char 2 0 .. 65.535 '\u0000' Karakter, 2 bita, kabeh luwih saka 0
Nilai standar

Miturut cara, ing kene ana nuansa penting. Yen sampeyan ngumumake variabel conto (lapangan) utawa variabel kelas statis lan ora langsung nemtokake nilai kasebut, mula diinisialisasi kanthi nilai standar . Tabel nampilake dhaptar nilai kasebut.

Variabel lokal ing sawijining metode ora duwe nilai standar. Yen sampeyan ora nemtokake nilai kanggo variabel kasebut, dheweke dianggep ora dikawruhi lan ora bisa digunakake.

Nanging ayo bali menyang jinis primitif lan deleng kanthi luwih rinci.



2. Jinis integer

Jawa nduweni 4 jinis integer: byte, short, intlan long. Padha beda-beda ing ukuran lan sawetara nilai sing bisa disimpen.

intjinis

Sing paling umum digunakake yaiku intjinis. Jeneng kasebut asale saka tembung int eger (wilangan wutuh). Kabeh integer literals (wilangan wutuh) ing kode ints(yen padha ora mungkasi ing L, F, utawa D).

Variabel saka jinis iki bisa njupuk nilai saka -2,147,483,648kanggo +2,147,483,647.

Sing akeh lan cukup kanggo meh kabeh kesempatan. Meh saben fungsi sing ngasilake nomer ngasilake int.

Tuladha:

Kode Panjelasan
int n = "String".length();
Cara kasebut length()ngasilake dawa senar
String[] array = {"Tic", "Tac", "Toe"};
int n = array.length;
Lapangan lengthngemot dawa array.

shortjinis

Jinis kasebut shortentuk jenenge saka short int. Iki uga asring disebut integer cendhak . Ora kaya intjinis, dawane mung rong bita lan sawetara nilai sing bisa ditindakake yaiku saka -32,768nganti +32,767.

Tegese sampeyan ora bisa nyimpen nomer siji yuta ing. Utawa malah 50.000. Iki minangka jinis integer sing paling jarang digunakake ing Jawa. Motivasi utama kanggo nggunakake iku kanggo ngreksa memori.

Upamane sampeyan duwe kahanan sing ngerti sadurunge sampeyan bakal nggarap nilai sing ora bakal ngluwihi 30.000, lan bakal ana jutaan nilai kasebut.

Contone, umpamane sampeyan nulis aplikasi sing ngolah gambar definisi ultra-dhuwur sing nggunakake 10-bit saben warna. Lan sampeyan duwe yuta piksel ing gambar sampeyan. Iki minangka skenario ing ngendi keputusan kanggo nggunakake intutawa shortpenting.

longjinis

Jinis iki entuk jeneng saka long intlan uga disebut integer dawa . Boten kados intjinis, iku wis sawetara fabulously gedhe tenan saka nilai: saka kanggo .-9*1018+9*1018

Napa dudu jinis integer dhasar?

Amarga Jawa muncul ing pertengahan 90s, nalika paling komputer 32-bit. Tegese kabeh pemroses wis dioptimalake kanggo nggarap angka sing dumadi saka 32 bit. Prosesor bisa digunakake kanthi wilangan bulat 64-bit, nanging operasi kasebut luwih alon.

Akibaté, programer cukup mutusake kanggo nggawe intjinis integer standar, lan nggunakake longjinis kasebut mung yen perlu.

bytejinis

Iki minangka jinis integer paling cilik ing Jawa, nanging adoh saka sing paling ora digunakake. Jenenge, byte, uga tembung kanggo blok memori paling cilik sing bisa dialamatake ing Jawa.

Ora ana akeh nilai sing bener kanggo bytejinis kasebut: saka -128nganti +127. Nanging dudu kekuwatane. Jinis iki bytepaling kerep digunakake nalika sampeyan kudu nyimpen data gumpalan gedhe ing memori. Uploaded bytes becik kanggo maksud iki.

Upaminipun sampeyan kudu nyalin file nang endi wae.

Sampeyan ora perlu ngolah isi file: sampeyan mung pengin nggawe area memori (buffer), nyalin isi file kasebut, banjur tulis data kasebut saka buffer menyang file liyane. A bytelarik apa sing perlu kanggo iki.

Elinga yen variabel array mung nyimpen referensi menyang area memori. Nalika variabel liwati kanggo sawetara cara, mung alamat memori liwati. Blok memori dhewe ora disalin.

byte[] buffer = new byte[1024*1024];
FileInputStream sourceFile = new FileInputStream("c:\\data.txt");
FileOutputStream destFile = new FileOutputStream("c:\\output.txt");
while (true)
{
   int size = sourceFile.read(buffer); // Read data from a file into a buffer
   destFile.write(buffer, 0, size); // Write data from the buffer to a file

   // Stop copying if the buffer is not full
   if (size < buffer.length) break;
}
sourceFile.close();
destFile.close();


3. Jinis nyata

Jinis primitif kalebu rong jinis kanggo nomer nyata. Sanajan ora sakabehe akurat nggunakake istilah kasebut. Nalika komputer nangani nomer nyata, kita nelpon nomer floating-point . Jeneng kasebut asalé saka standar kanggo makili nomer, ing ngendi bagéan integer lan pecahan saka nomer dipisahake karo titik (titik, dudu koma).

Sawetara informasi sing migunani:

Saben negara duwe standar dhewe kanggo nulis nomer (kaget!).

Akeh wong sing biasa nggunakake titik kanggo misahake ewu lan koma minangka pemisah desimal: contone, dheweke bakal nulis one million ones and 153 thousandthsminangka 1.000.000,153. Nanging ing Amerika Serikat, ing ngendi para pangripta Jawa manggon, standar sing beda diadopsi:1000000.153

Jawa nduweni rong jinis primitif floating-point: doublelan float.

Kaya sing wis dakkandhakake sadurunge, jinis kasebut duwe susunan internal sing spesifik: nyatane, ing saben variabel jinis kasebut ora ana siji nomer, nanging loro:

Contone, angka floating-point 987654.321bisa dituduhake minangka . Banjur ing memori bakal dituduhake minangka rong nomer ( mantissa , yaiku bagean penting saka nomer) lan ( eksponen , yaiku daya sepuluh)0.987654321*1069876543216

floatjinis

Jeneng floatjinis kasebut asale saka nomer float ing-point . Ukuran jinis iki cukup cilik - mung 4 bita (32 bit) - nanging bisa nyimpen nilai saka nganti . 24 bit dialokasikan kanggo makili mantissa, lan 8 bit kanggo eksponen. Jinis iki mung bisa nyimpen 8 digit penting.-3.4*10383.4*1038

Pendekatan iki ndadekake iku bisa kanggo nyimpen nomer luwih gedhe tinimbang int, nalika nggunakake padha 4 bait. Nanging kanggo nindakake, kita kurban akurasi. Amarga bagéan saka memori nyimpen mantissa, nyimpen variabel iki mung 6-7 panggonan desimal nalika liyane dibuwak.

Tuladha:

Kode Nilai
float a = (float) 123.456789;
123.45679
float a = (float) 12345.9999;
12346.0
float a = (float) -123.456789E-2;
-1.2345679

Nalika sampeyan bisa ndeleng, drawback utama jinis iki nomer banget cilik saka angka pinunjul, lan mundhut saka tliti sanalika digit kawolu. Mulane floatjinis iki ora populer banget ing kalangan programer Java.

doublejinis

Jinis kasebut doubleminangka jinis floating-point standar. Jeneng kasebut asale saka nomer floating-point presisi ganda . Kabeh literals nyata doubleminangka standar.

Jinis iki njupuk 8 bita memori (64 bit) lan bisa nyimpen nilai saka kanggo . Sing penting kanggo ngerti yaiku 53 bit diparengake kanggo mantissa, dene 11 sing isih ana kanggo eksponen.-1.7*103081.7*10308

Iki ngidini 15-17 digit penting kanggo disimpen.

Tuladha:

Kode Nilai
double a = 1234567890.1234567890;
1234567890.1234567
double a = 1234567890.1234512345;
1234567890.1234512
double a = 1234567890.1357913579;
1234567890.1357913

Presisi iki, utamane yen dibandhingake karo floatjinis kasebut, nemtokake: 99% kabeh operasi kanthi nomer nyata ditindakake kanthi nggunakake doublejinis kasebut.

11bit diparengake kanggo exponent, kang tegese sampeyan bisa nyimpen kakuwasan saka sepuluh saka -323kanggo +308(sing daya saka loro saka -1024kanggo +1023). Jinis kasebut doublebisa gampang nyimpen nomer kanthi atusan nol sawise titik desimal:

Kode Nilai
double a = 2E-300 * 3E+302
600.0


4. Tanpa wates

Nomer floating-point duwe fitur liyane sing menarik: bisa nyimpen nilai khusus sing ora ana watese . Lan sampeyan bisa makili tanpa wates positif lan tanpa wates negatif .

Tuladha:

Kode Cathetan
System.out.println( 100.0 / 0.0 );
Infinity
System.out.println( -100.0 / 0.0 );
-Infinity
double a = 1d / 0d;
double b = a * 10;
double c = b - 100;
a == Infinity
b == Infinity
c == Infinity

Yen tanpa wates dikalikake karo nomer, sampeyan bakal entuk tanpa wates. Yen sampeyan nambahake nomer menyang tanpa wates, sampeyan bakal entuk tanpa wates. Sing super trep.

Ora nomer ( NaN)

Sembarang operasi sing nglibatake infinity ngasilake infinity. Inggih, paling nanging ora kabeh.

Nomer floating-point bisa nyimpen nilai khusus liyane NaN:. Iku cendhak kanggo N ot a N nomer (dudu nomer).

Ing matématika, yen dibagi tanpa wates karo tanpa wates, asil ora ditemtokake.

Nanging, ing Jawa, yen dibagi tanpa wates karo tanpa wates, asile NaN.

Tuladha:

Kode Cathetan
System.out.println(0.0 / 0.0);
NaN
double infinity = 1d / 0d;
System.out.println(infinity / infinity);

NaN
double a = 0.0 / 0.0;
double b = a * 10;
double c = b - 100;
double d = a + infinity;
a == NaN
b == NaN
c == NaN
d == NaN

Sembarang operasi kanthi NaNngasilake NaN.



5. charjinis

Ing antarane jinis primitif Jawa , siji kudu diwenehi perhatian khusus: jinis char. Jeneng kasebut asale saka tembung char acter , lan jinis kasebut digunakake kanggo nyimpen karakter.

Karakter yaiku apa sing digawe senar, ta? String minangka susunan karakter.

Nanging sing luwih menarik yaiku kasunyatan manawa charjinis kasebut uga jinis numerik ! Iku jinis dual-tujuan, supaya bisa ngomong.

Kasunyatane yaiku charjinis kasebut dudu karakter. Nanging, nyimpen kode karakter saka enkoding Unicode. Saben karakter cocog karo nomer: kode angka karakter.

Saben charvariabel manggoni rong bait ing memori (padha karo shortjinis). Nanging ora kaya shortjinis, charjinis integer ora ditandatangani lan bisa nyimpen nilai saka 0nganti 65,535.

Jinis kasebut charminangka jinis hibrida. Nilai kasebut bisa diinterpretasikake minangka angka (contone, bisa ditambah lan dikalikan) lan minangka karakter. Iki ditindakake amarga sanajan karakter minangka representasi visual, kanggo komputer, iku mung nomer. Lan luwih trep kanggo nggarap dheweke minangka nomer.

Unicode

Unicode minangka tabel khusus (encoding) sing ngemot kabeh karakter ing jagad iki. Lan saben karakter duwe nomer dhewe. Iku katon kira-kira kaya iki:

Jinis primitif ing basa Jawa

Ana macem-macem cara kanggo nemtokake nilai menyang charvariabel.

Kode Katrangan
char a = 'A';
Variabel kasebut abakal ngemot huruf Latin A.
char a = 65;
Variabel kasebut abakal ngemot huruf Latin A. Kodene yaiku 65.
char a = 0x41;
Variabel kasebut abakal ngemot huruf Latin A.
Kode kasebut yaiku 65, sing padha 41karo sistem heksadesimal.
char a = 0x0041;
Variabel kasebut abakal ngemot huruf Latin A.
Kode kasebut yaiku 65, sing padha 41karo sistem heksadesimal.
Loro nul ekstra ora ngganti apa-apa.
char a = '\u0041';
Variabel kasebut abakal ngemot huruf Latin A.
Cara liya kanggo nemtokake karakter kanthi kode.

Paling asring, wong mung nuduhake karakter ing tandha petik (kaya ing baris pisanan saka tabel). Sing jarene, cara sing terakhir uga populer. Kauntungane yaiku bisa digunakake ing senar.

Lan kaya sing wis dakkandhakake, charjinis kasebut uga minangka jinis integer, supaya sampeyan bisa nulis kaya iki:

Kode Output konsol
char a = 'A';
a++;
System.out.println(a);
Huruf Latin Bbakal ditampilake ing layar. Amarga
:
A--- 65
B_66
C67

Nggarap chars

Saben charnomer pisanan nomer (kode karakter), lan banjur karakter. Yen sampeyan ngerti kode karakter, sampeyan bisa tansah njaluk karakter ing program. Tuladha:

Kode Output konsol
char c = (char) 1128;
System.out.println(c);

Ѩ

Kode standar

Ing ngisor iki kode karakter sing paling misuwur:

aksara Kode
0,,, ... 1_29 48,,, ... 49_5057
a,,, ... b_cz 97,,, ... 98_99122
A,,, ... B_CZ 65,,, ... 66_6790


6. booleanjinis

Lan jinis primitif pungkasan yaiku boolean.

Nalika sampeyan wis ngerti, iku mung bisa njupuk rong nilai: truelan false.

Lan kanthi mangkono, sampeyan wis ngerti kabeh sing kudu dingerteni babagan jinis iki.