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 |
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 |
|---|---|
|
Metode length()mengembalikan panjang string |
|
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).
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 |
|---|---|
|
123.45679 |
|
12346.0 |
|
-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 |
|---|---|
|
1234567890.1234567 |
|
1234567890.1234512 |
|
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 |
|---|---|
|
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 |
|---|---|
|
|
|
|
|
|
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 |
|---|---|
|
|
|
|
|
|
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:

Ada berbagai cara untuk menetapkan nilai ke charvariabel.
| Kode | Keterangan |
|---|---|
|
Variabel aakan berisi huruf Latin A. |
|
Variabel aakan berisi huruf Latin A. Kodenya adalah 65. |
|
Variabel aakan berisi huruf Latin A. Kodenya adalah 65, yang sama 41dengan sistem heksadesimal. |
|
Variabel aakan berisi huruf Latin A. Kodenya adalah 65, yang sama 41dengan sistem heksadesimal. Dua angka nol tambahan tidak mengubah apa pun. |
|
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 |
|---|---|
|
Huruf Latin Bakan ditampilkan di layar. Karena: A– 65B– 66C–67 |
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 |
|---|---|
|
|
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.
GO TO FULL VERSION