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 true dan 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
, int
dan long
. Mereka berbeda dalam ukuran dan rentang nilai yang dapat mereka simpan.
int
jenis
Yang paling umum digunakan adalah int
jenisnya. 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,648
hingga +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 length berisi panjang array. |
short
jenis
Jenis short
mendapatkan namanya dari short int
. Ini juga sering disebut bilangan bulat pendek . Berbeda dengan int
tipe, panjangnya hanya dua byte dan kisaran nilai yang mungkin adalah dari -32,768
hingga +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 int
atau short
penting.
long
jenis
Tipe ini mendapatkan namanya dari long int
dan disebut juga long integer . Berbeda dengan int
tipe, 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 int
tipe bilangan bulat standar, dan menggunakan long
tipe tersebut hanya jika benar-benar diperlukan.
byte
jenis
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 byte
tipe: from -128
to +127
. Tapi bukan itu kekuatannya. Jenis ini byte
paling sering digunakan saat Anda perlu menyimpan data gumpalan besar di memori. Array byte
s 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 byte
adalah 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 thousandths
menulis 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: double
dan 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.321
dapat direpresentasikan sebagai . Kemudian dalam memori itu akan direpresentasikan sebagai dua angka ( mantissa , yaitu bagian penting dari angka) dan ( eksponen , yaitu kekuatan sepuluh)0.987654321*106
987654321
6
float
jenis
Nama float
tipe 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*1038
3.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 float
tipe ini tidak terlalu populer di kalangan programmer Java.
double
jenis
Jenisnya double
adalah tipe floating-point standar. Namanya berasal dari angka floating-point presisi ganda . Semua literal nyata adalah double
s 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*10308
1.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
.
11
bit dialokasikan untuk eksponen, yang berarti Anda dapat menyimpan pangkat sepuluh dari -323
to +308
(itu adalah pangkat dua dari -1024
to +1023
). Jenis double
dapat 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 NaN
hasil NaN
.
5. char
jenis
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 char
tipe tersebut juga merupakan tipe numerik ! Ini adalah tipe tujuan ganda, jadi untuk berbicara.
Kenyataannya adalah bahwa char
tipe itu sebenarnya bukan karakter. Sebaliknya, ia menyimpan kode karakter dari pengkodean Unicode. Setiap karakter sesuai dengan angka: kode numerik karakter.
Setiap char
variabel menempati dua byte dalam memori (sama dengan jenisnya short
). Namun tidak seperti short
tipenya, char
tipe integer tidak bertanda tangan dan dapat menyimpan nilai dari 0
hingga 65,535
.
Tipe tersebut char
adalah 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 char
variabel.
Kode | Keterangan |
---|---|
|
Variabel a akan berisi huruf Latin A . |
|
Variabel a akan berisi huruf Latin A . Kodenya adalah 65 . |
|
Variabel a akan berisi huruf Latin A . Kodenya adalah 65 , yang sama 41 dengan sistem heksadesimal. |
|
Variabel a akan berisi huruf Latin A . Kodenya adalah 65 , yang sama 41 dengan sistem heksadesimal. Dua angka nol tambahan tidak mengubah apa pun. |
|
Variabel a akan 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, char
tipenya juga merupakan tipe integer, jadi Anda bisa menulis sesuatu seperti ini:
Kode | Keluaran konsol |
---|---|
|
Huruf Latin B akan ditampilkan di layar. Karena: A – 65 B – 66 C –67 |
Bekerja dengan char
s
Masing-masing char
pertama-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. boolean
jenis
Dan tipe primitif terakhir adalah boolean
.
Seperti yang sudah Anda ketahui, ini hanya dapat mengambil dua nilai: true
dan false
.
Dan dengan itu, Anda sudah tahu semua yang perlu diketahui tentang tipe ini.
GO TO FULL VERSION