1. Di Java, tidak ada pernyataan GOTO. Karena banyaknya penggunaan pernyataan GOTO akan mengurangi keterbacaan dan pemeliharaan program, bahasa Java membatalkan penggunaan Goto. Pada saat yang sama, untuk menghindari kebingungan yang disebabkan oleh pemrogram menggunakan Goto sendiri, bahasa Java masih mendefinisikan Goto sebagai kata kunci, tetapi tidak mendefinisikan sintaks apa pun, jadi itu disebut "kata -kata yang dicadangkan".
2 Meskipun benar, false dan nol ditampilkan dalam warna yang berbeda dalam IDE, mereka bukan kata kunci, tetapi "konstanta literal", sama seperti ABC dari tipe string.
3 Cobalah untuk menghindari menggunakan $ saat mendefinisikan nama, karena ketika kompiler mengkompilasi file .java, itu akan mengkompilasi "$" menjadi konektor tipe tingkat atas dan tipe tingkat bawah. Lihat contoh berikut:
Saat menyusun (javac test3.java) kode ini, kompiler akan melaporkan kesalahan berikut: test.java:12: Kesalahan: Duplikasi kelas: com.javastack.test.outer.inner kelas dalam { ^
4 Karakter Unicode Escape diproses sangat awal, sebelum mem -parsing program. Misalnya:
Dua baris kesalahan kompilasi kode ini terjadi dalam program. Dua kode unicode ini masing -masing mewakili "bungkus garis" dan "carriage return", jadi ketika kompiler kompilasi, kode terlihat seperti ini:
5 Kode Unicode dikodekan menggunakan karakter 16-bit dan diwakili oleh jenis char di java. Unicode sekarang telah berkembang menjadi satu juta karakter, dan mereka yang melebihi batas 16-bit menjadi karakter pelengkap. Semua karakter komplementer tidak dapat diwakili oleh konstanta karakter.
6 Ketika pendek, byte, char berpartisipasi dalam operasi, hasilnya adalah tipe int, tidak sama dengan tipe yang lebih tinggi. Jika variabel adalah tipe byte, pendek, dan byte, ketika diberi konstanta dari waktu kompilasi, dan konstanta tidak melebihi kisaran nilai variabel, kompiler dapat melakukan konversi menyusut implisit. Konversi menyusut implisit ini aman karena konversi menyusut hanya berlaku untuk penugasan variabel, bukan untuk pernyataan panggilan metode, yaitu tidak untuk parameter lewat selama panggilan metode. (Lihat masalah kecil dengan konversi tipe default di java untuk detailnya)
7 Perhatikan jenis char, yang merupakan tipe yang tidak ditandatangani. Oleh karena itu, konversi antara char dan pendek atau char dan byte harus ditampilkan menggunakan konversi tipe. Konversi dari byte ke char ke konversi menyusut diperpanjang cukup istimewa, yaitu konversi diperluas ke byte ke int terlebih dahulu, dan kemudian menyusut ke char.
8 Dalam konversi yang diperluas antara data integer, jika operan adalah tipe char (tipe unsigned), ekspansi yang tidak ditandatangani dilakukan, dengan bit ekspansi adalah 0. Jika operan byte, pendek atau int (tipe yang ditandatangani), ekspansi yang ditandatangani dilakukan, dengan ekspansi bit menjadi tanda bit variabel.
9 Konversi menyusut antara data integer hanya untuk memotong dan membuang bit tinggi tanpa melakukan pemrosesan lain.
10 0,1+0,2 tidak sama dengan 0.3.system.out.println ((ganda) 0.1+ (ganda) 0.2); Hasil output dari pernyataan ini adalah 0,30000000000000000000004. Karena komputer menggunakan biner untuk menyimpan data, dan banyak desimal tidak dapat diwakili secara akurat dalam biner (pada kenyataannya, sebagian besar desimal adalah perkiraan), seperti menggunakan desimal desimal tidak dapat secara akurat mewakili 1/3. Sebagian besar tipe titik mengambang hanya menyimpan nilainya kira -kira di komputer, bukan secara akurat sebagai tipe integer. Contoh lain adalah loop mati: untuk (float f = 10.1f; f! = 11; f+= 0.1f) {}
11 Jenis float dapat mempertahankan 7 hingga 8 angka signifikan, sedangkan tipe ganda dapat mempertahankan 15 hingga 16 angka signifikan. Oleh karena itu, ketika nilai jenis int atau tipe panjang lebih dari jumlah valid ganda atau float, beberapa bit signifikan terendah dari nilai akan hilang, yang mengakibatkan hilangnya akurasi. Pada saat ini, mode pembulatan IEEE754 baru -baru ini akan digunakan untuk mengekstrak nilai titik mengambang yang paling dekat dengan nilai integer. Meskipun konversi dari bilangan bulat ke tipe floating point adalah konversi yang diperluas, ketika nilainya besar atau kecil (nilai absolut besar), kerugian akurasi tertentu akan terjadi.
12 Bagaimana cara menghitung i ++ j? (Pertanyaan ini tidak terlalu berarti untuk dibahas dalam C/C ++), karena C/C ++ tergantung pada implementasi struktur perangkat keras, dan hasilnya akan berbeda di lingkungan yang berbeda. Namun, di Java, hasil ini diperbaiki dan tidak terpengaruh oleh lingkungan dan platform perangkat keras yang dijalankannya). Jawaban: Menurut aturan keserakahan, front + + + lebih baik dari belakang + +, dan hasilnya adalah (i ++) + j
13 I ++ dan ++ I sebenarnya +1 pertama dan kemudian ditugaskan. ++ I, tidak ada yang bisa dikatakan; i ++, mengambil j = i ++; Sebagai contoh, implementasi di tingkat yang mendasarinya adalah: temp = i; i = i + 1; j = temp; Jadi, i = 15; i = i ++; Hasil dari ekspresi ini adalah 15. (Karena setelah menambahkan satu, tugas lain dilakukan, berubah dari 16 menjadi 15)
14 +0 dan -0 dalam penyimpanan variabel tipe floating -point, bit tanda berbeda. Ketika -0 dan +0 berpartisipasi dalam operasi terkait jenis titik mengambang (seperti operasi divisi dan sisa), hasil yang berbeda dapat diproduksi.
15 Pembagian fase dan perhitungan keseimbangan titik mengambang berbeda dari pembagian fase dan perhitungan keseimbangan bilangan bulat. Ketika pembagi adalah 0, operasi titik mengambang tidak akan menghasilkan pengecualian ArithMeticException.
16 Kelas string adalah kelas yang tidak dapat diputar, dan begitu objeknya dibuat, mereka tidak dapat dihancurkan. Metode yang tampaknya memodifikasi urutan karakter di kelas string sebenarnya mengembalikan objek string yang baru dibuat alih -alih memodifikasi objeknya sendiri.
17 Karena objek string tidak dapat diubah, mereka aman dan dapat diimplementasikan secara bebas untuk berbagi.
18 Di dalam kelas string, array karakter (char []) digunakan untuk mempertahankan urutan karakter. Panjang maksimum string adalah panjang maksimum array karakter. Secara teori, panjang maksimum adalah nilai maksimum tipe int, yaitu, 2147483647. Dalam praktiknya, nilai maksimum yang dapat diperoleh umumnya kurang dari nilai maksimum teoritis.
19 Metode utama () pada dasarnya sama dengan metode lain dalam hal perilaku kinerja. Ini dapat kelebihan beban, disebut, diwarisi, disembunyikan dengan metode lain, atau dilemparkan pengecualian dengan parameter tipe. Kami juga dapat memanggil metode utama (atau metode lain) melalui refleksi dalam suatu program.
20 Ketika nama dua atau lebih metode sama dan daftar parameter berbeda, metode ini merupakan kelebihan beban. Metode yang kelebihan beban dapat dibedakan berdasarkan jenis yang sesuai dengan daftar parameter dan jumlah parameter. Namun, nama parameter, jenis pengembalian metode, daftar pengecualian dan parameter tipe metode tidak dapat digunakan sebagai kondisi untuk membedakan metode yang kelebihan beban.
21 Metode mana yang harus dipilih, pesanan adalah sebagai berikut:
22 Perbedaan penting antara penulisan ulang dan tersembunyi adalah bahwa penulisan ulang terikat secara dinamis, dan anggota kelas yang relevan ditentukan berdasarkan jenis objek aktual yang ditunjukkan oleh referensi runtime. Bersembunyi terikat secara statis, dan anggota panggilan yang relevan ditentukan berdasarkan jenis statis yang dirujuk pada waktu kompilasi. Dengan kata lain, jika subkelas mengesampingkan metode kelas induk, ketika referensi kelas induk menunjuk ke objek kelas anak, metode subclass dipanggil melalui referensi kelas induk. Jika kelas anak menyembunyikan metode kelas induk (variabel anggota), metode kelas induk (variabel anggota) masih dipanggil melalui referensi ke kelas induk.
23 Konstruktor disebut rekursif. Konstruktor subclass akan memanggil konstruktor kelas induk sampai konstruktor kelas objek dipanggil.
24 Konstruktor tidak membuat objek. Konstruktor dipanggil oleh sistem saat membuat objek menggunakan yang baru dan digunakan untuk menginisialisasi anggota instance dari kelas. Secara berurutan, objek dibuat terlebih dahulu, dan kemudian konstruktor dipanggil. (Konstruktor tidak menghasilkan objek baru)
25 Konstruktor default tidak kosong. Konstruktor ini akan memanggil konstruktor tanpa parameter kelas induk dan dapat melakukan inisialisasi variabel anggota instan. Oleh karena itu, konstruktor default memanggil setidaknya konstruktor kelas induk, dan dapat melakukan lebih banyak pekerjaan, termasuk inisialisasi deklarasi variabel instance dan blok inisialisasi instance, keduanya dieksekusi dalam konstruktor.
26 Ketika jenis dari dua operan == atau! = Operator adalah salah satu tipe data dasar dan yang lainnya adalah tipe referensi kelas pembungkus, membuka kotak jenis referensi ke dalam tipe data dasar, dan kemudian membandingkan apakah nilai -nilai dari dua tipe data dasar sama.
27 Di Java, array juga merupakan kelas, dan variabel referensi yang dinyatakan oleh array titik ke objek jenis array. Semua array mewarisi kelas objek dan mengimplementasikan antarmuka java.lang.clonable dan java.io.serializable. Anggota array termasuk panjang variabel (ada secara implisit) dan anggota yang diwarisi dari kelas objek. Kloning dan serial adalah dua antarmuka yang ditandai, dan tidak ada anggota yang secara eksplisit dinyatakan dalam antarmuka ini.
28 Antarmuka adalah desain yang sepenuhnya abstrak dan tidak dapat dipakai. Jenis alasan yang dibuat oleh cara baru sebenarnya adalah membuat kelas anonim yang mengimplementasikan jenis antarmuka.
29 Jika dua antarmuka mendeklarasikan variabel x yang sama, kesalahan kompilasi akan terjadi ketika antarmuka mewarisi kedua antarmuka secara bersamaan, atau kelas tertentu mengimplementasikan kedua antarmuka pada saat yang sama.
30 Jika metode m dari nama yang sama dinyatakan dalam kedua antarmuka, dan kedua metode tersebut tidak merupakan kelebihan beban, ketika suatu antarmuka dapat mewarisi kedua antarmuka pada saat yang sama, atau kelas tertentu dapat mewarisi kedua antarmuka pada waktu yang sama, harus ada tipe yang sama dengan tipe yang sama, dan tipe yang sama dengan tipe yang sama, dan tipe yang sama, dan tipe yang sama, dan tipe yang sama, dan tipe yang sama, dan tipe yang sama, dan tipe yang sama, dan tipe yang sama, dan tipe yang sama, dan tipe yang sama, dan tipe yang sama, dan tipe yang sama, dan tipe yang sama, dan tipe ALMETICE adalah tipe ATIGE ATIGNATURE dari Dua M METODE MOTODE pada saat yang sama, dan dalam waktu yang sama, dan tipe A adalah tipe ATIGNATURE ATIGA DUA METEKUS DUA M METYE SERIMA SEDERA A DALAM SERIMA DALAM A DALAM SERIPA YANG SANGAT SING. dari dua metode M.