1. Daftar tipe primitif

Java memiliki 8 tipe primitif dasar. Disebut primitif karena nilai dari tipe ini bukan objek dan disimpan langsung di dalam variabel.

Berikut adalah tabel dengan beberapa informasi singkat tentang jenis ini:

Jenis Ukuran
dalam byte
Kisaran nilai Nilai default Keterangan
byte 1 -128 .. 127 0 Tipe integer terkecil adalah satu byte
short 2 -32.768 .. 32.767 0 Bilangan bulat pendek, dua byte
int 4 -2*10 9 ..2*10 9 0 Bilangan bulat, 4 byte
long 8 -9*10 18 .. 9*10 18 0L Bilangan bulat panjang, 8 byte
float 4 -10 38 .. 10 38 0.0f Angka floating-point, 4 byte
double 8 -10 308 .. 10 308 0.0d Angka floating point presisi ganda, 8 byte
boolean 1 true,false false Tipe Boolean (hanya truedan false)
char 2 0 .. 65.535 '\u0000' Karakter, 2 byte, semuanya lebih besar dari 0
Nilai default

Omong-omong, inilah nuansa penting. Jika Anda mendeklarasikan variabel instan (bidang) atau variabel kelas statis dan tidak segera menetapkan nilai apa pun padanya, maka itu diinisialisasi dengan nilai default . Tabel menyajikan daftar nilai-nilai ini.

Variabel lokal dalam metode tidak memiliki nilai default. Jika Anda tidak menetapkan nilai ke variabel tersebut, variabel tersebut dianggap tidak diinisialisasi dan tidak dapat digunakan.

Tapi mari kita kembali ke tipe primitif dan melihatnya lebih dekat.



2. Jenis bilangan bulat

Java memiliki 4 tipe integer: byte, short, intdan long. Mereka berbeda dalam ukuran dan rentang nilai yang dapat mereka simpan.

intjenis

Yang paling umum digunakan adalah intjenisnya. Namanya berasal dari kata int eger (bilangan bulat). Semua literal bilangan bulat (bilangan bulat) dalam kode adalah ints(jika tidak diakhiri dengan L, F, atau D).

Variabel jenis ini dapat mengambil nilai dari -2,147,483,648hingga +2,147,483,647.

Itu banyak dan cukup untuk hampir setiap kesempatan. Hampir setiap fungsi yang mengembalikan angka mengembalikan int.

Contoh:

Kode Penjelasan
int n = "String".length();
Metode length()mengembalikan panjang string
String[] array = {"Tic", "Tac", "Toe"};
int n = array.length;
Bidang lengthberisi panjang array.

shortjenis

Jenis shortmendapatkan namanya dari short int. Ini juga sering disebut bilangan bulat pendek . Berbeda dengan inttipe, panjangnya hanya dua byte dan kisaran nilai yang mungkin adalah dari -32,768hingga +32,767.

Itu berarti Anda tidak dapat menyimpan angka satu juta di dalamnya. Atau bahkan 50.000. Ini adalah tipe integer yang paling jarang digunakan di Java. Motivasi utama untuk menggunakannya adalah untuk menghemat memori.

Misalkan Anda memiliki situasi di mana Anda tahu sebelumnya bahwa Anda akan bekerja dengan nilai yang tidak pernah melebihi 30.000, dan akan ada jutaan nilai ini.

Misalnya, Anda sedang menulis aplikasi yang memproses gambar definisi ultra tinggi yang menggunakan 10-bit per warna. Dan Anda memiliki sejuta piksel dalam gambar Anda. Ini adalah skenario di mana keputusan untuk menggunakan intatau shortpenting.

longjenis

Tipe ini mendapatkan namanya dari long intdan disebut juga long integer . Berbeda dengan inttipe, ia memiliki rentang nilai yang sangat besar: dari hingga .-9*1018+9*1018

Mengapa bukan tipe integer dasar?

Karena Java muncul di pertengahan 90-an, ketika sebagian besar komputer masih 32-bit. Artinya, semua prosesor dioptimalkan untuk bekerja dengan angka yang terdiri dari 32 bit. Prosesor dapat bekerja dengan bilangan bulat 64-bit, tetapi operasi dengannya lebih lambat.

Akibatnya, pemrogram secara wajar memutuskan untuk membuat inttipe bilangan bulat standar, dan menggunakan longtipe tersebut hanya jika benar-benar diperlukan.

bytejenis

Ini adalah tipe bilangan bulat terkecil di Jawa, tetapi jauh dari yang paling jarang digunakan. Namanya, byte, juga merupakan kata untuk blok memori terkecil yang dapat dialamatkan di Jawa.

Tidak banyak nilai valid untuk bytetipe: from -128to +127. Tapi bukan itu kekuatannya. Jenis ini bytepaling sering digunakan saat Anda perlu menyimpan data gumpalan besar di memori. Array bytes sangat ideal untuk tujuan ini.

Misalkan Anda perlu menyalin file di suatu tempat.

Anda tidak perlu memproses konten file: Anda hanya ingin membuat area memori (buffer), menyalin konten file ke dalamnya, lalu menulis data tersebut dari buffer ke file lain. Array byteadalah apa yang Anda butuhkan untuk ini.

Ingatlah bahwa variabel array hanya menyimpan referensi ke area memori. Ketika variabel diteruskan ke beberapa metode, hanya alamat memori yang diteruskan. Blok memori itu sendiri tidak 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. Tipe nyata

Tipe primitif mencakup dua tipe untuk bilangan real. Meskipun tidak sepenuhnya akurat untuk menggunakan istilah itu. Saat komputer menangani bilangan real, kami menyebutnya bilangan floating-point . Namanya berasal dari standar untuk merepresentasikan angka, di mana bagian bilangan bulat dan pecahan dari suatu angka dipisahkan oleh titik (titik, bukan koma).

Beberapa informasi bermanfaat:

Setiap negara memiliki standar sendiri untuk menulis angka (kejutan!).

Banyak orang terbiasa menggunakan titik untuk memisahkan ribuan dan koma sebagai pemisah desimal: misalnya, mereka akan one million ones and 153 thousandthsmenulis 1.000.000,153. Namun di Amerika Serikat, tempat tinggal pencipta Java, standar yang berbeda diadopsi:1000000.153

Java memiliki dua tipe primitif floating-point: doubledan float.

Seperti yang kami katakan sebelumnya, tipe-tipe ini memiliki pengaturan internal yang sangat spesifik: sebenarnya, di dalam setiap variabel tipe-tipe ini bukan hanya satu angka, tetapi dua:

Misalnya, angka floating-point 987654.321dapat direpresentasikan sebagai . Kemudian dalam memori itu akan direpresentasikan sebagai dua angka ( mantissa , yaitu bagian penting dari angka) dan ( eksponen , yaitu kekuatan sepuluh)0.987654321*1069876543216

floatjenis

Nama floattipe berasal dari float ing-point number . Ukuran jenis ini cukup kecil — hanya 4 byte (32 bit) — tetapi dapat menyimpan nilai dari to . 24 bit dialokasikan untuk mewakili mantissa, dan 8 bit untuk eksponen. Jenis ini hanya mampu menyimpan 8 angka penting.-3.4*10383.4*1038

Pendekatan ini memungkinkan untuk menyimpan angka yang jauh lebih besar daripada an int, sambil menggunakan 4 byte yang sama. Tetapi untuk melakukannya, kami mengorbankan akurasi. Karena sebagian memori menyimpan mantissa, variabel-variabel ini hanya menyimpan 6-7 tempat desimal sedangkan sisanya dibuang.

Contoh:

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

Seperti yang Anda lihat, kelemahan utama tipe ini adalah jumlah digit signifikan yang sangat kecil, dan hilangnya presisi segera setelah digit kedelapan. Itu sebabnya floattipe ini tidak terlalu populer di kalangan programmer Java.

doublejenis

Jenisnya doubleadalah tipe floating-point standar. Namanya berasal dari angka floating-point presisi ganda . Semua literal nyata adalah doubles secara default.

Jenis ini membutuhkan 8 byte memori (64 bit) dan dapat menyimpan nilai dari hingga . Hal penting yang perlu diketahui adalah bahwa 53 bit dialokasikan untuk mantissa, sedangkan 11 sisanya untuk eksponen.-1.7*103081.7*10308

Ini memungkinkan 15-17 digit signifikan untuk disimpan.

Contoh:

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

Ketepatan ini, terutama dibandingkan dengan jenisnya float, sangat menentukan: 99% dari semua operasi dengan bilangan real dilakukan dengan menggunakan jenisnya double.

11bit dialokasikan untuk eksponen, yang berarti Anda dapat menyimpan pangkat sepuluh dari -323to +308(itu adalah pangkat dua dari -1024to +1023). Jenis doubledapat dengan mudah menyimpan angka dengan ratusan nol setelah titik desimal:

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


4. Tak terhingga

Bilangan floating-point memiliki fitur lain yang menarik: mereka dapat menyimpan nilai khusus yang menunjukkan infinity . Dan Anda dapat mewakili tak terhingga positif dan tak terhingga negatif .

Contoh:

Kode Catatan
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

Jika infinity dikalikan dengan angka, Anda mendapatkan infinity. Jika Anda menambahkan angka hingga tak terhingga, Anda mendapatkan tak terhingga. Itu sangat nyaman.

Bukan angka ( NaN)

Setiap operasi yang melibatkan tak terhingga menghasilkan tak terhingga. Yah, sebagian besar tapi tidak semua.

Angka floating-point dapat menyimpan nilai khusus lainnya: NaN. Ini adalah kependekan dari N ot a N umber (bukan angka).

Dalam matematika, jika Anda membagi tak terhingga dengan tak terhingga, hasilnya tidak terdefinisi.

Tapi, di Jawa, jika Anda membagi tak terhingga dengan tak hingga, hasilnya adalah NaN.

Contoh:

Kode Catatan
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

Setiap operasi dengan NaNhasil NaN.



5. charjenis

Di antara tipe-tipe primitif Java , ada yang patut mendapat perhatian khusus: tipe char. Namanya berasal dari kata char acter , dan tipe itu sendiri digunakan untuk menyimpan karakter.

Karakter terbuat dari apa string itu, bukan? String adalah array dari karakter.

Tetapi yang lebih menarik adalah fakta bahwa chartipe tersebut juga merupakan tipe numerik ! Ini adalah tipe tujuan ganda, jadi untuk berbicara.

Kenyataannya adalah bahwa chartipe itu sebenarnya bukan karakter. Sebaliknya, ia menyimpan kode karakter dari pengkodean Unicode. Setiap karakter sesuai dengan angka: kode numerik karakter.

Setiap charvariabel menempati dua byte dalam memori (sama dengan jenisnya short). Namun tidak seperti shorttipenya, chartipe integer tidak bertanda tangan dan dapat menyimpan nilai dari 0hingga 65,535.

Tipe tersebut charadalah tipe hybrid. Nilainya dapat diartikan baik sebagai angka (misalnya dapat ditambahkan dan dikalikan) dan sebagai karakter. Ini dilakukan karena meskipun karakter adalah representasi visual, bagi komputer mereka hanyalah angka. Dan jauh lebih nyaman untuk bekerja dengan mereka sebagai angka.

Unicode

Unicode adalah tabel khusus (encoding) yang berisi semua karakter di dunia. Dan setiap karakter memiliki nomornya sendiri. Tampilannya kira-kira seperti ini:

Tipe primitif di Jawa

Ada berbagai cara untuk menetapkan nilai ke charvariabel.

Kode Keterangan
char a = 'A';
Variabel aakan berisi huruf Latin A.
char a = 65;
Variabel aakan berisi huruf Latin A. Kodenya adalah 65.
char a = 0x41;
Variabel aakan berisi huruf Latin A.
Kodenya adalah 65, yang sama 41dengan sistem heksadesimal.
char a = 0x0041;
Variabel aakan berisi huruf Latin A.
Kodenya adalah 65, yang sama 41dengan sistem heksadesimal.
Dua angka nol tambahan tidak mengubah apa pun.
char a = '\u0041';
Variabel aakan berisi huruf Latin A.
Cara lain untuk mendefinisikan karakter dengan kodenya.

Paling sering, orang hanya menunjukkan karakter dalam tanda kutip (seperti pada baris pertama tabel). Konon, metode terakhir juga populer. Keuntungannya adalah dapat digunakan dalam string.

Dan seperti yang kami katakan, chartipenya juga merupakan tipe integer, jadi Anda bisa menulis sesuatu seperti ini:

Kode Keluaran konsol
char a = 'A';
a++;
System.out.println(a);
Huruf Latin Bakan ditampilkan di layar.
Karena:
A65
B66
C67

Bekerja dengan chars

Masing-masing charpertama-tama adalah angka (kode karakter), dan kemudian karakter. Jika Anda mengetahui kode karakter, Anda selalu bisa mendapatkan karakter tersebut di program Anda. Contoh:

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

Ѩ

Kode standar

Berikut adalah kode karakter yang paling terkenal:

Karakter Kode
0, 1, 2, ...9 48, 49, 50, ...57
a, b, c, ...z 97, 98, 99, ...122
A, B, C, ...Z 65, 66, 67, ...90


6. booleanjenis

Dan tipe primitif terakhir adalah boolean.

Seperti yang sudah Anda ketahui, ini hanya dapat mengambil dua nilai: truedan false.

Dan dengan itu, Anda sudah tahu semua yang perlu diketahui tentang tipe ini.