1. Senarai jenis primitif
Java mempunyai 8 jenis primitif asas. Ia dipanggil primitif kerana nilai jenis ini bukan objek dan disimpan terus di dalam pembolehubah.
Berikut ialah jadual dengan beberapa maklumat ringkas tentang jenis ini:
taip | Saiz dalam bait |
Julat nilai | Nilai asal | Penerangan |
---|---|---|---|---|
byte |
1 | -128 .. 127 | 0 |
Jenis integer terkecil ialah bait tunggal |
short |
2 | -32,768 .. 32.767 | 0 |
Integer pendek, dua bait |
int |
4 | -2*10 9 .. 2*10 9 | 0 |
Integer, 4 bait |
long |
8 | -9*10 18 .. 9*10 18 | 0L |
Integer panjang, 8 bait |
float |
4 | -10 38 .. 10 38 | 0.0f |
Nombor titik terapung, 4 bait |
double |
8 | -10 308 .. 10 308 | 0.0d |
Nombor titik terapung berketepatan dua kali, 8 bait |
boolean |
1 | true ,false |
false |
Jenis Boolean (hanya true dan false ) |
char |
2 | 0 .. 65.535 | '\u0000' |
Aksara, 2 bait, semuanya lebih besar daripada 0 |
By the way, inilah nuansa penting. Jika anda mengisytiharkan pembolehubah contoh (medan) atau pembolehubah kelas statik dan tidak segera memberikan sebarang nilai kepadanya, maka ia dimulakan dengan nilai lalai . Jadual membentangkan senarai nilai ini.
Pembolehubah tempatan dalam kaedah tidak mempunyai nilai lalai. Jika anda tidak memberikan nilai kepada pembolehubah tersebut, ia dianggap tidak dimulakan dan tidak boleh digunakan.
Tetapi mari kita kembali kepada jenis primitif dan melihatnya dengan lebih dekat.
2. Jenis integer
Java mempunyai 4 jenis integer: byte
, short
, int
dan long
. Mereka berbeza dalam saiz dan julat nilai yang boleh disimpan.
int
taip
Yang paling biasa digunakan ialah int
jenis. Nama itu berasal daripada perkataan int eger (nombor bulat). Semua literal integer (nombor bulat) dalam kod adalah ints
(jika ia tidak berakhir dengan L
, F
, atau D
).
Pembolehubah jenis ini boleh mengambil nilai dari -2,147,483,648
hingga +2,147,483,647
.
Itu banyak dan mencukupi untuk hampir setiap kesempatan. Hampir setiap fungsi yang mengembalikan nombor mengembalikan int
.
Contoh:
Kod | Penjelasan |
---|---|
|
Kaedah length() mengembalikan panjang rentetan |
|
Medan length mengandungi panjang tatasusunan. |
short
taip
Jenis short
mendapat namanya daripada short int
. Ia juga sering dipanggil integer pendek . Tidak seperti int
jenis, panjangnya hanya dua bait dan julat nilai yang mungkin adalah dari -32,768
hingga +32,767
.
Ini bermakna anda tidak boleh menyimpan nombor satu juta di dalamnya. Atau 50,000. Ini adalah jenis integer yang paling jarang digunakan di Jawa. Motivasi utama untuk menggunakannya adalah untuk memelihara ingatan.
Katakan anda mempunyai situasi di mana anda tahu lebih awal bahawa anda akan bekerja dengan nilai yang tidak pernah melebihi 30,000, dan akan terdapat berjuta-juta nilai ini.
Sebagai contoh, katakan anda sedang menulis aplikasi yang memproses gambar definisi ultra tinggi yang menggunakan 10
-bit setiap warna. Dan anda mempunyai sejuta piksel dalam gambar anda. Ini adalah senario di mana keputusan untuk menggunakan int
atau short
penting.
long
taip
Jenis ini mendapat namanya daripada long int
dan juga dipanggil integer panjang . Tidak seperti int
jenis, ia mempunyai julat nilai yang sangat besar: dari hingga .-9*1018
+9*1018
Mengapa ia bukan jenis integer asas?
Kerana Java muncul pada pertengahan 90-an, apabila kebanyakan komputer adalah 32-bit. Ini bermakna semua pemproses telah dioptimumkan untuk bekerja dengan nombor yang terdiri daripada 32 bit. Pemproses boleh berfungsi dengan integer 64-bit, tetapi operasi dengan mereka adalah lebih perlahan.
Akibatnya, pengaturcara secara munasabah memutuskan untuk membuat int
jenis integer standard, dan menggunakan long
jenis itu hanya apabila benar-benar perlu.
byte
taip
Ini adalah jenis integer terkecil di Jawa, tetapi jauh daripada yang paling kurang digunakan. Namanya, byte
, juga merupakan perkataan untuk blok ingatan terkecil yang boleh dialamatkan di Jawa.
Tidak banyak nilai yang sah untuk byte
jenis: dari -128
hingga +127
. Tetapi itu bukan kekuatannya. Jenis ini byte
paling kerap digunakan apabila anda perlu menyimpan data gumpalan besar dalam ingatan. Tatasusunan byte
s sesuai untuk tujuan ini.
Katakan anda perlu menyalin fail di suatu tempat.
Anda tidak perlu memproses kandungan fail: anda hanya mahu mencipta kawasan memori (penampan), salin kandungan fail ke dalamnya, dan kemudian tulis data itu daripada penimbal ke fail lain. Array byte
adalah apa yang anda perlukan untuk ini.
Perlu diingat bahawa pembolehubah tatasusunan hanya menyimpan rujukan kepada kawasan memori. Apabila pembolehubah dihantar ke beberapa kaedah, hanya alamat memori yang diluluskan. 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. Jenis sebenar
Jenis primitif termasuk dua jenis untuk nombor nyata. Walaupun tidak tepat sepenuhnya untuk menggunakan istilah itu. Apabila komputer mengendalikan nombor nyata, kami memanggilnya nombor terapung . Nama itu berasal daripada piawai untuk mewakili nombor, di mana bahagian integer dan pecahan nombor dipisahkan oleh noktah (titik, bukan koma).
Setiap negara mempunyai piawaian tersendiri untuk menulis nombor (kejutan!).
Ramai orang terbiasa menggunakan noktah untuk memisahkan ribuan dan koma sebagai pemisah perpuluhan: contohnya, mereka akan menulis one million ones and 153 thousandths
sebagai 1.000.000,153
. Tetapi di Amerika Syarikat, tempat pencipta Java tinggal, standard yang berbeza telah diterima pakai:1000000.153
Java mempunyai dua jenis primitif titik terapung: double
dan float
.
Seperti yang kami katakan sebelum ini, jenis ini mempunyai susunan dalaman yang sangat spesifik: sebenarnya, di dalam setiap pembolehubah jenis ini bukan satu nombor, tetapi dua:
Sebagai contoh, nombor titik terapung 987654.321
boleh diwakili sebagai . Kemudian dalam ingatan ia akan diwakili sebagai dua nombor ( mantissa , iaitu bahagian penting nombor) dan ( eksponen , iaitu kuasa sepuluh)0.987654321*106
987654321
6
float
taip
Nama float
jenis berasal daripada nombor titik ing terapung . Saiz jenis ini agak kecil — hanya 4 bait (32 bit) — tetapi ia boleh menyimpan nilai dari hingga . 24 bit diperuntukkan untuk mewakili mantissa, dan 8 bit untuk eksponen. Jenis ini mampu menyimpan hanya 8 digit bererti.-3.4*1038
3.4*1038
Pendekatan ini memungkinkan untuk menyimpan nombor yang jauh lebih besar daripada int
, sambil menggunakan 4 bait yang sama. Tetapi untuk berbuat demikian, kami mengorbankan ketepatan. Kerana sebahagian daripada memori menyimpan mantissa, pembolehubah ini hanya menyimpan 6-7 tempat perpuluhan manakala selebihnya dibuang.
Contoh:
Kod | Nilai |
---|---|
|
123.45679 |
|
12346.0 |
|
-1.2345679 |
Seperti yang anda lihat, kelemahan utama jenis ini ialah bilangan digit bererti yang sangat kecil, dan kehilangan ketepatan sebaik sahaja digit kelapan. Itulah sebabnya float
jenis ini tidak begitu popular di kalangan pengaturcara Java.
double
taip
Jenisnya double
ialah jenis titik terapung standard. Nama itu berasal daripada nombor titik terapung berketepatan ganda . Semua literal sebenar ialah double
s secara lalai.
Jenis ini menggunakan 8 bait memori (64 bit) dan boleh menyimpan nilai dari hingga . Perkara penting yang perlu diketahui ialah 53 bit diperuntukkan untuk mantissa, manakala baki 11 adalah untuk eksponen.-1.7*10308
1.7*10308
Ini membolehkan 15-17 digit penting disimpan.
Contoh:
Kod | Nilai |
---|---|
|
1234567890.1234567 |
|
1234567890.1234512 |
|
1234567890.1357913 |
Ketepatan ini, terutamanya jika dibandingkan dengan float
jenis, adalah penentu: 99% daripada semua operasi dengan nombor nyata dilakukan menggunakan double
jenis tersebut.
11
bit diperuntukkan untuk eksponen, yang bermaksud anda boleh menyimpan kuasa sepuluh dari -323
hingga +308
(itu kuasa dua dari -1024
hingga +1023
). Jenis ini double
boleh menyimpan nombor dengan ratusan sifar dengan mudah selepas titik perpuluhan:
Kod | Nilai |
---|---|
|
600.0 |
4. Infiniti
Nombor titik terapung mempunyai satu lagi ciri menarik: ia boleh menyimpan nilai khas yang menandakan infiniti . Dan anda boleh mewakili infiniti positif dan infiniti negatif .
Contoh:
Kod | Catatan |
---|---|
|
|
|
|
|
|
Jika infiniti didarab dengan nombor, anda mendapat infiniti. Jika anda menambah nombor kepada infiniti, anda mendapat infiniti. Itu sangat mudah.
Bukan nombor ( NaN
)
Sebarang operasi yang melibatkan infiniti menghasilkan infiniti. Nah, kebanyakan tetapi bukan semua.
Nombor titik terapung boleh menyimpan nilai istimewa lain: NaN
. Ia adalah singkatan untuk N ot a N umber (bukan nombor).
Dalam matematik, jika anda membahagikan infiniti dengan infiniti, hasilnya tidak ditentukan.
Tetapi, di Jawa, jika anda membahagikan infiniti dengan infiniti, hasilnya ialah NaN
.
Contoh:
Kod | Catatan |
---|---|
|
|
|
|
|
|
Sebarang operasi dengan NaN
hasil NaN
.
5. char
jenis
Di antara jenis primitif Javachar
, seseorang memerlukan perhatian khusus: jenis. Namanya berasal daripada perkataan char acter , dan jenis itu sendiri digunakan untuk menyimpan aksara.
Watak ialah rentetan yang diperbuat daripada apa, bukan? Rentetan ialah susunan aksara.
Tetapi yang lebih menarik ialah hakikat bahawa char
jenis itu juga merupakan jenis angka ! Ia adalah jenis dwi-tujuan, boleh dikatakan.
Realitinya ialah char
jenis itu sebenarnya bukan watak. Sebaliknya, ia menyimpan kod aksara daripada pengekodan Unicode. Setiap aksara sepadan dengan nombor: kod angka watak itu.
Setiap char
pembolehubah menduduki dua bait dalam ingatan (sama dengan jenisnya short
). Tetapi tidak seperti short
jenis, char
jenis integer tidak ditandatangani dan boleh menyimpan nilai dari 0
hingga 65,535
.
Jenisnya char
adalah jenis hibrid. Nilainya boleh ditafsirkan sebagai nombor (cthnya boleh ditambah dan didarab) dan sebagai aksara. Ini dilakukan kerana walaupun aksara adalah representasi visual, bagi komputer ia adalah di atas semua hanya nombor. Dan lebih mudah untuk bekerja dengan mereka sebagai nombor.
Unicode
Unicode ialah jadual khas (pengekodan) yang mengandungi semua aksara di dunia. Dan setiap watak mempunyai nombor sendiri. Ia kelihatan lebih kurang seperti ini:
Terdapat cara yang berbeza untuk menetapkan nilai kepada char
pembolehubah.
Kod | Penerangan |
---|---|
|
Pembolehubah a akan mengandungi huruf Latin A . |
|
Pembolehubah a akan mengandungi huruf Latin A . Kodnya ialah 65 . |
|
Pembolehubah a akan mengandungi huruf Latin A . Kodnya ialah 65 , yang sama 41 dalam sistem perenambelasan. |
|
Pembolehubah a akan mengandungi huruf Latin A . Kodnya ialah 65 , yang sama 41 dalam sistem perenambelasan. Dua sifar tambahan tidak mengubah apa-apa. |
|
Pembolehubah a akan mengandungi huruf Latin A . Satu lagi cara untuk menentukan watak dengan kodnya. |
Selalunya, orang hanya menunjukkan watak dalam tanda petikan (seperti dalam baris pertama jadual). Yang berkata, kaedah terakhir juga popular. Kelebihannya ialah ia boleh digunakan dalam rentetan.
Dan seperti yang kami katakan, char
jenis itu juga merupakan jenis integer, jadi anda boleh menulis sesuatu seperti ini:
Kod | Output konsol |
---|---|
|
Huruf Latin B akan dipaparkan pada skrin. Kerana: A – 65 B – 66 C –67 |
Bekerja dengan char
s
Setiap satu char
adalah pertama sekali nombor (kod aksara), dan kemudian aksara. Jika anda mengetahui kod aksara, anda sentiasa boleh mendapatkan watak dalam program anda. Contoh:
Kod | Output konsol |
---|---|
|
|
Kod standard
Berikut ialah kod aksara yang paling terkenal:
Watak | Kod |
---|---|
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 jenis primitif yang terakhir ialah boolean
.
Seperti yang anda sedia maklum, ia hanya boleh mengambil dua nilai: true
dan false
.
Dan dengan itu, anda sudah tahu semua yang perlu diketahui tentang jenis ini.
GO TO FULL VERSION