Rumah  >  Artikel  >  Java  >  Belum mempelajari jenis data Java? Sebab postur tak guna!

Belum mempelajari jenis data Java? Sebab postur tak guna!

Java学习指南
Java学习指南ke hadapan
2023-07-26 17:24:001427semak imbas

Cerita kecil

Salam semua, saya abang node, dikenali sebagai Brother Qing di dunia Baru-baru ini saya sangat tertarik dengan buku popular "Java from Beginners to Burial". senarai kedai buku utama Mantap di tempat pertama? Nampaknya masih ramai kawan yang suka belajar! Dikatakan bahawa pengetahuan mengubah takdir dan Java membuat kehidupan Nampaknya keputusan saya untuk belajar Java adalah tepat!

Belum mempelajari jenis data Java? Sebab postur tak guna!

Tetapi setelah mengatakan itu, buku ini ditulis dengan baik, tetapi lagipun, saya baru sahaja bermula, dan saya masih keliru tentang beberapa perkara kecil pengetahuan, seperti jenis data yang baru saya pelajari, yang masih agak sukar bagi saya dengan pengetahuan sifar.

Pada hari ini, saya bosan dan merayau-rayau di CSDN dan ternampak blog: [Struktur Data dan Algoritma 05, Pokok Merah-Hitam Selepas membaca pakejFaham~]. Sejujurnya, saya sangat keji apabila melihat artikel seperti ini? pokok apa tu? Mengapa ia separuh merah dan separuh hitam? Adakah anda faham selepas membaca ini? Bagaimana jika saya memahami separuh daripadanya? Bukankah itu distosia? mendengus! Biar saya tunjukkan awak raksasa jenis apa.

Dengan ketukan tangan kecil saya, saya masuk. Saya sangat tidak bersetuju pada mulanya, tetapi semakin jauh ke bawah, semakin terkejut saya... Dua minit kemudian, saya hampir melutut! Ini ditulis dengan sangat baik, saya rasa ia lebih terperinci daripada apa yang ada dalam buku (walaupun saya tidak memahaminya)! Lihatlah maklumat yang penuh dengan maklumat berguna ini, teks yang segar dan halus ini, skrin penuh [pengetahuan] ini, bagaimana saya boleh merinduinya? Mengapa anda tidak membiarkan dia cepat pergi ke kegemaran saya untuk makan abu? Tonton saya mengikuti, suka, dan tambah pada kegemaran, satu demi satu, untuk menjelaskan segala-galanya untuk bos.

Dengan rasa teruja, saya secara senyap-senyap mengklik pada kotak dialog bos.

Saya: Boss, awak ada ke?

Setelah beberapa ketika, bos sebenarnya membalas!

Abang Wu: Ada apa~?

Saya: (Saya tidak tahu bagaimana untuk menyusun kata-kata) Um... Boss... awak sangat kacak! sangat hebat!

Abang Wu: Memudaratkan! Tidakkah ini diterima?

Saya: (Saya ada garis hitam di dahi saya. Saya yakin lelaki ini agak narsis. Saya hanya cuba menyanjungnya dalam perniagaan. Dia cukup bangga dengan dirinya sendiri?) Haha~ Bos, begini. Saya seorang yang baru belajar Java, boleh awak bawa saya?

Abang Wu: Nah...ni...boleh juga, saya kenakan bayaran

Saya: (Berfikir bahawa saya memang bos besar, dan saya masih mengenakan bayaran) Kakak, saya sangat suka Java baru-baru ini saya membeli buku untuk belajar. . Saya rasa buku ini agak bagus Okay, saya cuma ada sedikit keraguan dan ingin bertanya beberapa soalan tentang pembelajaran.

Abang Wu: Kalau begitu... okay. Oleh kerana anda sangat berminat untuk belajar, saya akan memberi anda beberapa petunjuk Di manakah anda telah belajar sekarang?

Saya: Saya baru belajar asas Java, dan saya agak keliru apabila melihat struktur data~

Abang Wu: Senang cakap, saya mengambil masa lebih setengah tahun untuk belajar asas Java! Asasnya sangat kukuh, saya boleh membawa anda melalui titik pengetahuan ini bersama-sama.

Saya: Betul ke? Bos! Terima kasih banyak-banyak! Saya akan layan awak makan malam nanti!

Abang Wu: Masalah kecil, masalah kecil. Saya nampak awak ada di Hefei juga?

Saya: Ya~ (Agak panik, saya senyap-senyap klik pada profil bos, bolehkah...)

Abang Wu: Haha, kebetulan! Saya di sini juga!

Saya: Hah? Kebetulan begitu? Bagaimana pula... (Nampaknya hidangan tidak boleh lari, saya menangis...)

Abang Wu: Awak add saya di WeChat, saya akan hantarkan lokasi kepada awak, dan kita boleh bercakap secara terperinci.

Saya: (Adakah ini... perjumpaan muka? Hanya beberapa minit komunikasi? Adakah semua orang besar sangat lembap? Walaupun hati saya tidak rela, badan saya sangat jujur) emm. .. Okay, saya akan pergi ke sana...

Abang Wu: Okay, saya tunggu awak~

Saya terketar-ketar... Saya rasa sedikit panik di dalam hati!

Setengah jam kemudian, saya menaiki teksi mengikut alamat yang diberikan oleh Abang Wu.

Apabila saya melihat Abang Wu, seperti yang dijangka, dia sangat marah!

Saya melihat Saudara Wu dengan rambut belakang yang disisir dan sedikit minyak, bersandar pada kereta pada 45°, memandang ke langit, menyalakan rokok, dengan perubahan yang tidak berkesudahan dan kesunyian.

Saya: (Saya gigit peluru dan naik untuk bertanya khabar) Abang Wu?

Abang Wu: (berhenti merokok dan memandang saya dengan pandangan kabur): Hello? Adakah anda seorang lelaki nod?

Saya: Emm...ya (senyap-senyap berundur beberapa langkah)

Abang Wu: (melangkah dan memeluk bahu saya) Jom ke kedai kopi, minum kopi dan berbual. . Jawa, bagaimana? . .

Saya rasa anda boleh meneka adegan seterusnya...Ahem! Seriuslah! Kami di sini untuk membincangkan pembelajaran!

Apa? Tidakkah anda percaya?

Kemudian lihat di bawah,

makluman maklumat! Terdapat banyak jenis data Java Artikel ini terutamanya meringkaskannya daripada empat aspek: jenis asas, jenis pakej, jenis rujukan dan kumpulan cache.

Jenis data asas

Jenis data asas termasuk bait, pendek, int, panjang, terapung, berganda, boolean dan char. Saya melukis gambar tentang pengelasannya.

Jenis asas

Seterusnya, saya akan meringkaskannya ke dalam jadual daripada aspek kiraan bait, julat data, nilai lalai dan tujuan, supaya ia jelas sekali imbas. Jenis data pembungkusan

Jenis asas yang dinyatakan di atas mempunyai jenis pembungkusan yang sepadan untuk memudahkan pembaca melihat, saya juga telah menyusun jadual.

Belum mempelajari jenis data Java? Sebab postur tak guna!

Jenis rujukan

Di Java, pembolehubah jenis rujukan sangat serupa dengan penunjuk C/C++. Jenis rujukan menunjuk ke objek, dan pembolehubah yang menunjuk ke objek ialah pembolehubah rujukan. Pembolehubah ini diberikan jenis tertentu apabila diisytiharkan, seperti Pelajar, Anjing, dsb. Setelah pembolehubah diisytiharkan, jenisnya tidak boleh diubah.

Objek dan tatasusunan ialah jenis data rujukan. Nilai lalai untuk semua jenis rujukan adalah nol. Pembolehubah rujukan boleh digunakan untuk merujuk kepada mana-mana jenis yang serasi. Contohnya:

Dog dog = new Dog("旺财")。

Penukaran jenis data

Bagaimana untuk menukar antara jenis pakej dan jenis asas?

Integer x = 2;     // 装箱 调用了 Integer.valueOf(2)
int y = x;         // 拆箱 调用了 X.intValue()

Bagaimana untuk menukar antara jenis asas? Terdapat dua perkara:

  1. Penukaran jenis paksa mesti digunakan apabila menukar jenis kapasiti besar kepada jenis kapasiti kecil.

  2. Tukar jenis kapasiti kecil kepada jenis kapasiti besar boleh ditukar secara automatik.

Contohnya:

int i =128;   
byte b = (byte)i;
long c = i;

Kolam cache

Mari kita fikirkan soalan: new Integer(123)Integer.valueOf(123) Apakah perbezaannya?

Mungkin ada yang tahu, ada yang tidak. Malah, mereka sangat berbeza.

  1. new Integer(123) 每次都会新建一个对象;

  2. Integer.valueOf(123) 会使用缓存池中的对象,多次调用会取得同一个对象的引用。

我写个demo大家就知道了

Integer x = new Integer(123);
Integer y = new Integer(123);
System.out.println(x == y);    // false
Integer z = Integer.valueOf(123);
Integer k = Integer.valueOf(123);
System.out.println(z == k);   // true

编译器会在自动装箱过程调用valueOf()方法,因此多个值相同且值在缓存池范围内的 Integer 实例使用自动装箱来创建,那么就会引用相同的对象。如:

Integer m = 123;
Integer n = 123;
System.out.println(m == n); // true

valueOf()方法的实现比较简单,就是先判断值是否在缓存池中,如果在的话就直接返回缓存池的内容。我们看下源码就知道。

public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}

根据数据类型的不一样,这个缓存池的上下限也不同,比如这个 Integer,就是 -128~127。不过这个上界是可调的,在启动 jvm 的时候,通过 -XX:AutoBoxCacheMax=来指定这个缓冲池的大小,该选项在 JVM 初始化的时候会设定一个名为 java.lang.IntegerCache.high 系统属性,然后 IntegerCache 初始化的时候就会读取该系统属性来决定上界。

参考自StackOverflow:

https://stackoverflow.com/questions/9030817/differences-between-new-integer123-integer-valueof123-and-just-123

 

OK,关于Java数据类型的小知识就分享到这了,虽然我还有点意犹未尽…

Java 的数据类型虽然简单,但是里面还是有很多小细节值得我们玩味的,希望这篇文章能给大家带来一些帮助。

Atas ialah kandungan terperinci Belum mempelajari jenis data Java? Sebab postur tak guna!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:Java学习指南. Jika ada pelanggaran, sila hubungi admin@php.cn Padam