Rumah > Java > javaTutorial > Kuasai sepenuhnya kelas String Java

Kuasai sepenuhnya kelas String Java

WBOY
Lepaskan: 2022-05-25 13:41:33
ke hadapan
1697 orang telah melayarinya

Artikel ini membawa anda pengetahuan yang berkaitan tentang java, yang terutamanya memperkenalkan isu berkaitan tentang kelas rentetan, termasuk kumpulan rentetan yang berterusan, kebolehubah rentetan, dll. Mari lihat kandungan di bawah Saya harap ia akan membantu semua orang.

Kuasai sepenuhnya kelas String Java

Pembelajaran yang disyorkan: "tutorial video java"

1. Memahami Rentetan

1

Pertama sekali, mari kita lihat kod sumber kelas String dalam JDK Ia melaksanakan banyak antara muka Anda boleh melihat bahawa kelas String diubah suai, yang bermaksud kelas String tidak boleh diwarisi dan tiada subkelas String Dengan cara ini, semua orang yang menggunakan JDK menggunakan kelas String yang sama Kelas rentetan. Kaedah menunjukkan hasil yang berbeza, yang menjadikannya mustahil untuk membangunkan kod
Walaupun pewarisan dan penggantian kaedah membawa fleksibiliti, mereka juga membawa banyak masalah kelakuan tidak konsisten subkelas
Kuasai sepenuhnya kelas String Java

2. Empat cara untuk mencipta rentetan

Kaedah 1: Tugasan langsung (biasa digunakan)
String str = " hello word "

Kaedah 2: Lulus Kaedah pembinaan menjana objek
String str1 = new String(" hello word ");

Kaedah 3: Hasilkan objek
char[] data = new char[]{'a', 'b','c' };

Kaedah 4: Gunakan String's static method valueOf (sebarang jenis data) = >Tukar kepada rentetan (biasa digunakan)
String str2 = String.valueOf(10 ; > 10.1 --> double literal
true --> boolean literal Kuasai sepenuhnya kelas String Java " abc " – > String literal

String literal ialah objek rentetan

String str = “hello word”;

String str2 = str;

Pada masa ini, ini adalah rentetan literal dan objek rentetan Untuk memudahkan pemahaman, lukiskan gambar Ini untuk memudahkan pemahaman kita buat sementara waktu . Sebenarnya,


disimpan dalam kawasan kaedah Jika kita biarkan str2 = "Hello" pada masa ini, ia tidak akan menjejaskan output str kerana ia disertakan dengan " " juga objek rentetan, yang bermaksud ruang baharu dibuka pada timbunan pada masa ini, dan str2 menyimpan ruang alamat objek baharu pada masa ini, yang tidak mempunyai kesan pada str



4 .Perbandingan rentetan adalah sama

Apabila membandingkan semua jenis data rujukan untuk kesamaan, gunakan kaedah sama untuk perbandingan kelas yang biasa digunakan dalam JDK telah mengatasi kaedah sama dan boleh digunakan terusKuasai sepenuhnya kelas String Java Data rujukan. jenis Apa yang dibandingkan menggunakan == ialah alamat
Gambar di bawah menunjukkan dua rujukan yang menunjuk ke ruang alamat yang sama, yang berkaitan dengan kumpulan rentetan berterusan
Kuasai sepenuhnya kelas String Java

Gambar di bawah menghasilkan dua objek dan dua alamat Space, menggunakan == mengembalikan palsu

Perbandingan sama adalah perbandingan sensitif huruf besar/kecil


Kaedah equalsIgnoreCase ialah perbandingan tidak sensitif huruf besar/kecil Kuasai sepenuhnya kelas String Java

2. Kolam pemalar rentetan

1 Apakah itu kolam pemalar rentetan

Kuasai sepenuhnya kelas String Java
Apabila digunakan Apabila kaedah penetapan langsung menjana objek rentetan, JVM akan mengekalkan kolam pemalar rentetan Jika objek tidak wujud dalam timbunan, objek rentetan akan dijana dan ditambah ke kolam pemalar rentetan apabila kaedah penetapan langsung terus digunakan Apabila menjana objek rentetan, JVM mendapati bahawa kandungan yang ditunjukkan oleh rujukan sudah wujud dalam kumpulan malar Pada masa ini, ia tidak lagi mencipta objek rentetan baharu, tetapi secara langsung menggunakan semula objek sedia ada dalam rajah di atas Rujukan menunjuk ke alamat yang sama
Kuasai sepenuhnya kelas String Java
Apabila objek dijana buat kali pertama, tiada apa-apa dalam kolam malar, jadi objek rentetan dijana dalam kolam malar dan disimpan . Apabila yang kedua Apabila objek dijana tiga kali, JVM mendapati bahawa kandungan yang sama telah wujud dalam kumpulan malar, jadi ia tidak lagi menghasilkan objek baharu, menunjuk terus ke ruang alamat yang sama seperti str1

Kuasai sepenuhnya kelas String Java
Program ini dilaksanakan dari kanan ke kiri Pada masa ini, sebelah kanan baris pertama kod ialah pemalar rentetan, yang juga rentetan objek, jadi mula-mula buka ruang dalam kolam malar, dan kemudian buat yang baharu Objek rentetan disimpan, dan program dilaksanakan ke kiri Apabila kata kunci baharu ditemui, objek baharu dicipta dan disimpan dalam heap. Kemudian str1 menunjuk ke objek dalam timbunan Apabila menunjuk ke baris kedua dan ketiga kod, kumpulan pemalar ditemui dalam objek dan tidak akan dibuat lagi. objek baharu akan dibuat. Gambar rajah memori adalah seperti berikut:
Kuasai sepenuhnya kelas String Java

2 Kaedah pengumpulan manual

yang disediakan oleh kelas String Kaedah intern, yang merupakan tempatan. kaedah:
Kuasai sepenuhnya kelas String Java
Memanggil kaedah pelatih akan menyimpan objek yang ditunjuk oleh rujukan rentetan semasa ke kolam pemalar rentetan Terdapat dua situasi:
1. Jika Jika objek sudah wujud dalam kolam pemalar semasa, tiada objek baru akan dihasilkan, dan objek String dalam kolam pemalar akan dikembalikan
2. Jika objek tidak wujud dalam kolam pemalar semasa, objek akan dimasukkan ke dalam kolam dan dikembalikan ke kolam tersebut.

1 Lihat pada output baris kod berikut
Kuasai sepenuhnya kelas String Java
Oleh kerana kaedah pelatih mempunyai nilai pulangan, str1 hanya memanggil kaedah pelatih pada masa ini dan tidak menerima nilai pulangan. Jadi str1 masih menunjuk ke objek dalam timbunan, str2 menunjuk ke objek dalam kumpulan malar, jadi palsu dikembalikan
Kuasai sepenuhnya kelas String Java
Selagi anda menerima nilai pulangan untuk memanggil pelatih. kaedah, ia akan kembali benar;
Kuasai sepenuhnya kelas String Java
Pada ketika ini, objek yang ditunjuk oleh str1 ditambah secara manual pada kolam tersebut >
Kuasai sepenuhnya kelas String Java 2. Lihat baris Output kod berikut

Kuasai sepenuhnya kelas String Java Apabila memasuki kolam secara manual, tiada apa-apa di dalam kolam, jadi ia dialihkan terus ke dalam kolam malar

Kuasai sepenuhnya kelas String Java


3. Ketidakbolehubahan rentetan

1. Mengapa ia tidak berubah

Nota: Apa yang dipanggil kebolehubah rentetan bermakna kandungan rentetan tidak berubah, dan Rujukan yang bukan rentetan tidak boleh diubah
Kuasai sepenuhnya kelas String Java
Kekal di sini merujuk kepada "hello", "world", "helloworld", "!!!", dan "helloworld!!!" yang disambungkan. "Objek rentetan yang telah dibuat ini tidak boleh mengubah suai kandungannya setelah diisytiharkan, tetapi rujukannya boleh ditukar. Satu akan menunjuk ke hello, satu lagi akan menunjuk ke helloworld, dan satu lagi akan menunjuk ke hello world! ! ! , ini semua mungkin
Kuasai sepenuhnya kelas String Java
Rentetan hanyalah tatasusunan aksara—> char[] dan rentetan itu sebenarnya disimpan dalam tatasusunan aksara. Mengapa kandungan rentetan tidak boleh diubah? Mari kita lihat kod sumber rentetan dan ketahui.
Kuasai sepenuhnya kelas String Java
Kita dapat melihat bahawa tatasusunan aksara di dalam String dikapsulkan tatasusunan aksara ini tidak boleh diakses dari luar kelas String, apatah lagi menukar kandungan rentetan
String str = " hello ". ;
Kuasai sepenuhnya kelas String Java

2. Bagaimana untuk mengubah suai kandungan rentetan

1. Musnahkan enkapsulasi tatasusunan nilai melalui pantulan pada masa jalan
2. Sebaliknya gunakan StringBuilder atau StringBuffer. Kelas - - bukan lagi jenis
a.StringBuilder: thread-safe, strong performance
b.StringBuffer: thread-safe, poor performance
Selain daripada itu, penggunaan kedua-dua kelas adalah betul-betul sama

Jika anda perlu menyambung rentetan dengan kerap, gunakan kaedah tambah kelas StringBuilder Hanya satu objek dijana di sini, yang menjadi hello untuk seketika dan hello world untuk seketika
Kuasai sepenuhnya kelas String Java<.>

3. Penggunaan khusus kelas StringBuilder

Kelas StringBuilder dan String ialah dua kelas bebas StringBuilder dicipta untuk menyelesaikan masalah penyambungan rentetan

Penukaran bersama antara kelas StringBuilder dan kelas String :

1. StringBuilder menjadi kelas String dan memanggil kaedah String


Kuasai sepenuhnya kelas String Java

2 Kelas String diubah menjadi kelas StringBuilder, gunakan kaedah pembinaan StringBuilder atau kaedah tambah


Kuasai sepenuhnya kelas String Java
Kaedah lain yang biasa digunakan: Kuasai sepenuhnya kelas String Java a. Operasi pembalikan rentetan () disediakan oleh sb; data, padam (int mula, int tamat); ): Mula memasukkan dari kedudukan indeks permulaan Indeks permulaan sisipan ialah mula


Kuasai sepenuhnya kelas String JavaPembelajaran yang disyorkan: "

tutorial video java

"

Atas ialah kandungan terperinci Kuasai sepenuhnya kelas String Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:csdn.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan