国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Rumah Java JavaAsas string、stringbuffer和stringbuilder的區(qū)別是什么?

string、stringbuffer和stringbuilder的區(qū)別是什么?

Nov 20, 2020 am 09:54 AM
java string stringbuffer stringbuilder

區(qū)別:String類(lèi)是不可變類(lèi),當(dāng)一個(gè)String對(duì)象被創(chuàng)建,則包含在對(duì)象中的字符序列是不可改變的,直至對(duì)象被銷(xiāo)毀;StringBuffer對(duì)象代表可變字符串對(duì)象,且線程安全;StringBuilder類(lèi)代表可變字符串對(duì)象,且非線程安全。

string、stringbuffer和stringbuilder的區(qū)別是什么?

String、StringBuffer和StringBuilder的區(qū)別:

String

??String類(lèi)是不可變類(lèi),即一旦一個(gè)String對(duì)象被創(chuàng)建以后,包含在這個(gè)對(duì)象中的字符序列是不可改變的,直至這個(gè)對(duì)象被銷(xiāo)毀。

??這個(gè)是String類(lèi)的解釋,之前小咸兒看到這個(gè)情況,不能理解上述的解釋,如下

String?a?=?"123";
a?=?"456";
//?打印出來(lái)的a為456
System.out.println(a)

??看到這里,小咸兒不明白了,這不是明明已經(jīng)對(duì)他進(jìn)行修改了嗎?為什么還說(shuō)他是一個(gè)不可變類(lèi)呢?

??經(jīng)過(guò)小咸兒和小伙伴們的學(xué)習(xí),明白String類(lèi)不可變?cè)谀睦矬w現(xiàn)出來(lái)的,接下來(lái)就看一張上述a對(duì)象的內(nèi)存存儲(chǔ)空間圖
在這里插入圖片描述

??可以看出來(lái),再次給a賦值時(shí),并不是對(duì)原來(lái)堆中實(shí)例對(duì)象進(jìn)行重新賦值,而是生成一個(gè)新的實(shí)例對(duì)象,并且指向“456”這個(gè)字符串,a則指向最新生成的實(shí)例對(duì)象,之前的實(shí)例對(duì)象仍然存在,如果沒(méi)有被再次引用,則會(huì)被垃圾回收。

StringBuffer

??StringBuffer對(duì)象則代表一個(gè)字符序列可變的字符串,當(dāng)一個(gè)StringBuffer被創(chuàng)建以后,通過(guò)StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改變這個(gè)字符串對(duì)象的字符序列。一旦通過(guò)StringBuffer生成了最終想要的字符串,就可以調(diào)用它的toString()方法將其轉(zhuǎn)換為一個(gè)String對(duì)象。

StringBuffer?b?=?new?StringBuffer("123");
b.append("456");
//?b打印結(jié)果為:123456
System.out.println(b);

??在看一下b對(duì)象的內(nèi)存空間圖:
在這里插入圖片描述

??所以說(shuō)StringBuffer對(duì)象是一個(gè)字符序列可變的字符串,它沒(méi)有重新生成一個(gè)對(duì)象,而且在原來(lái)的對(duì)象中可以連接新的字符串。

StringBuilder

??StringBuilder類(lèi)也代表可變字符串對(duì)象。實(shí)際上,StringBuilder和StringBuffer基本相似,兩個(gè)類(lèi)的構(gòu)造器和方法也基本相同。不同的是:StringBuffer是線程安全的,而StringBuilder則沒(méi)有實(shí)現(xiàn)線程安全功能,所以性能略高。

StringBuffer是如何實(shí)現(xiàn)線程安全的呢?

StringBuffer類(lèi)中實(shí)現(xiàn)的方法:

在這里插入圖片描述

StringBuilder類(lèi)中實(shí)現(xiàn)的方法:

在這里插入圖片描述

??由此可見(jiàn),StringBuffer類(lèi)中的方法都添加了synchronized關(guān)鍵字,也就是給這個(gè)方法添加了一個(gè)鎖,用來(lái)保證線程安全。

Java9的改進(jìn)

??Java9改進(jìn)了字符串(包括String、StringBuffer、StringBuilder)的實(shí)現(xiàn)。在Java9以前字符串采用char[]數(shù)組來(lái)保存字符,因此字符串的每個(gè)字符占2字節(jié);而Java9的字符串采用byte[]數(shù)組再加一個(gè)encoding-flag字段來(lái)保存字符,因此字符串的每個(gè)字符只占1字節(jié)。所以Java9的字符串更加節(jié)省空間,字符串的功能方法也沒(méi)有受到影響。

更多編程相關(guān)知識(shí),請(qǐng)?jiān)L問(wèn):編程入門(mén)??!

Atas ialah kandungan terperinci string、stringbuffer和stringbuilder的區(qū)別是什么?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1502
276
Bagaimana menangani transaksi di Java dengan JDBC? Bagaimana menangani transaksi di Java dengan JDBC? Aug 02, 2025 pm 12:29 PM

Untuk mengendalikan transaksi JDBC dengan betul, anda mesti terlebih dahulu mematikan mod komit automatik, kemudian melakukan pelbagai operasi, dan akhirnya melakukan atau mengembalikan semula hasilnya; 1. Panggil Conn.SetAutOcommit (palsu) untuk memulakan transaksi; 2. Melaksanakan pelbagai operasi SQL, seperti memasukkan dan mengemaskini; 3. Panggil Conn.Commit () jika semua operasi berjaya, dan hubungi conn.rollback () jika pengecualian berlaku untuk memastikan konsistensi data; Pada masa yang sama, cuba-dengan-sumber harus digunakan untuk menguruskan sumber, mengendalikan pengecualian dengan betul dan menutup sambungan untuk mengelakkan kebocoran sambungan; Di samping itu, adalah disyorkan untuk menggunakan kolam sambungan dan menetapkan mata simpan untuk mencapai rollback separa, dan menyimpan urus niaga sesingkat mungkin untuk meningkatkan prestasi.

Bagaimana untuk bekerja dengan kalendar di Jawa? Bagaimana untuk bekerja dengan kalendar di Jawa? Aug 02, 2025 am 02:38 AM

Gunakan kelas dalam pakej Java.Time untuk menggantikan kelas lama dan kelas kalendar; 2. Dapatkan tarikh dan masa semasa melalui LocalDate, LocalDateTime dan Tempatan Tempatan; 3. Buat tarikh dan masa tertentu menggunakan kaedah (); 4. Gunakan kaedah tambah/tolak untuk meningkatkan dan mengurangkan masa; 5. Gunakan zoneddatetime dan zonid untuk memproses zon waktu; 6. Format dan parse date string melalui DateTimeFormatter; 7. Gunakan segera untuk bersesuaian dengan jenis tarikh lama apabila perlu; pemprosesan tarikh di java moden harus memberi keutamaan untuk menggunakan java.timeapi, yang memberikan jelas, tidak berubah dan linear

Membandingkan kerangka Java: Spring Boot vs Quarkus vs Micronaut Membandingkan kerangka Java: Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

Pra-formancetartuptimemoryusage, quarkusandmicronautleadduetocompile-timeprocessingandgraalvsupport, withquarkusoftenperforminglightbetterine serverless scenarios.tyvelopecosyste,

Pergi dengan contoh contoh pembalakan middleware http Pergi dengan contoh contoh pembalakan middleware http Aug 03, 2025 am 11:35 AM

HTTP Log Middleware di GO boleh merakam kaedah permintaan, laluan, IP klien dan memakan masa. 1. Gunakan http.handlerfunc untuk membungkus pemproses, 2. Rekod waktu mula dan masa akhir sebelum dan selepas memanggil next.servehttp, 3. Dapatkan IP pelanggan sebenar melalui r.remoteaddr dan X-forward-for headers, 4. Gunakan log.printf untuk mengeluarkan log permintaan, 5. Kod sampel lengkap telah disahkan untuk dijalankan dan sesuai untuk memulakan projek kecil dan sederhana. Cadangan lanjutan termasuk menangkap kod status, menyokong log JSON dan meminta penjejakan ID.

Bagaimana pengumpulan sampah berfungsi di java? Bagaimana pengumpulan sampah berfungsi di java? Aug 02, 2025 pm 01:55 PM

Koleksi Sampah Java (GC) adalah mekanisme yang secara automatik menguruskan ingatan, yang mengurangkan risiko kebocoran ingatan dengan menuntut semula objek yang tidak dapat dicapai. 1.GC menghakimi kebolehcapaian objek dari objek akar (seperti pembolehubah stack, benang aktif, medan statik, dan lain -lain), dan objek yang tidak dapat dicapai ditandakan sebagai sampah. 2. Berdasarkan algoritma penandaan tanda, tandakan semua objek yang dapat dicapai dan objek yang tidak ditandai. 3. Mengamalkan strategi pengumpulan generasi: Generasi Baru (Eden, S0, S1) sering melaksanakan MinorGC; Orang tua melakukan kurang tetapi mengambil masa lebih lama untuk melakukan MajorGC; Metaspace Stores Metadata kelas. 4. JVM menyediakan pelbagai peranti GC: SerialGC sesuai untuk aplikasi kecil; ParallelGC meningkatkan throughput; CMS mengurangkan

Menggunakan jenis html `input` untuk data pengguna Menggunakan jenis html `input` untuk data pengguna Aug 03, 2025 am 11:07 AM

Memilih jenis htmlinput yang betul dapat meningkatkan ketepatan data, meningkatkan pengalaman pengguna, dan meningkatkan kebolehgunaan. 1. Pilih jenis input yang sepadan mengikut jenis data, seperti teks, e -mel, tel, nombor dan tarikh, yang secara automatik boleh menyemak dan menyesuaikan diri dengan papan kekunci; 2. Gunakan HTML5 untuk menambah jenis baru seperti URL, Warna, Julat dan Carian, yang dapat memberikan kaedah interaksi yang lebih intuitif; 3. Gunakan pemegang tempat dan sifat -sifat yang diperlukan untuk meningkatkan kecekapan dan ketepatan pengisian bentuk, tetapi harus diperhatikan bahawa pemegang tempat tidak dapat menggantikan label.

Membandingkan Java Build Tools: Maven vs Gradle Membandingkan Java Build Tools: Maven vs Gradle Aug 03, 2025 pm 01:36 PM

GradleisthebetterChoiceFormostNewProjectSduetoitSsuperiorflexibility, Prestasi, danModernToolingSupport.1.Gradle'sGroovy/KOT lindslismoreconciseandexpressivethanmaven'sverbosexml.2.GradleOutPerformsMaveninBuildSpeedWithIncrementalcompilation, BuildCac

Pergi dengan contoh penangguhan yang dijelaskan Pergi dengan contoh penangguhan yang dijelaskan Aug 02, 2025 am 06:26 AM

Defer digunakan untuk melaksanakan operasi tertentu sebelum fungsi pulangan, seperti sumber pembersihan; Parameter dinilai dengan serta-merta apabila menangguhkan, dan fungsi-fungsi dilaksanakan mengikut urutan terakhir (LIFO); 1. Pelbagai penahanan dilaksanakan dalam urutan terbalik pengisytiharan; 2. Biasanya digunakan untuk pembersihan yang selamat seperti penutupan fail; 3. Nilai pulangan yang dinamakan boleh diubah suai; 4. Ia akan dilaksanakan walaupun panik berlaku, sesuai untuk pemulihan; 5. Elakkan penyalahgunaan menangguhkan gelung untuk mengelakkan kebocoran sumber; Penggunaan yang betul boleh meningkatkan keselamatan kod dan kebolehbacaan.

See all articles