Atšķirība starp stīgu un StringBuffer klasi Java

Autors: Laura McKinney
Radīšanas Datums: 3 Aprīlis 2021
Atjaunināšanas Datums: 15 Maijs 2024
Anonim
Atšķirība starp stīgu un StringBuffer klasi Java - Tehnoloģija
Atšķirība starp stīgu un StringBuffer klasi Java - Tehnoloģija

Saturs


Stīgas un StringBuffer ir klases, kuras darbojas ar stīgām. StringBuffer klase ir Sting klases vienaudžu klase. Stīgu klases objekts ir noteikta garuma. StringBuffer klases priekšmets ir pieaudzis. Galvenā atšķirība starp Stīgu un StringBuffer ir tā, ka “Stīgu” klases objekts ir negrozāms. Klases “StringBuffer” objekts mainīgs.

  1. Salīdzināšanas tabula
  2. Definīcija
  3. Galvenās atšķirības
  4. Secinājums

Salīdzināšanas tabula

Salīdzināšanas pamatsStīguStringBuffer
PamataObjekta Stīgas garums ir noteikts.StringBuffer garumu var palielināt.
ModifikācijaStīgu priekšmets nav mainīgs.Objekts StringBuffer ir mainīgs.
PerformanceKonkatenācijas laikā tas ir lēnāks.Konkatenācijas laikā tas ir ātrāks.
AtmiņasPatērē vairāk atmiņas.Patērē mazāk atmiņas.
UzglabāšanaStīgu pastāvīgais baseins.Kaudzes atmiņa.


Stīgas definīcija

“Stīga” ir Java klase. Stīgas klases objektam ir noteikts garums, un vissvarīgāk atcerēties, ka stīgas klases objekts ir “negrozāms”. Kad esat inicializējis stīgas objektu, to vairs nevarat modificēt. Klases priekšmets tiek glabāts nemainīgā virknes virknē.

Vispirms sapratīsim to, katru reizi izveidojot virkni; jūs izveidojat objekta tipa virkni. Virkņu konstantes ir arī virkņu objekti.

System.out.ln ("Sveiki, tas ir Teckpix risinājums");

Iepriekš minētajā virknē “Sveiki, tas ir Teckpix risinājums” ir virknes konstante.

Tagad, izmantojot piemēru, sapratīsim Sting objekta mainīgumu.

Stīga str = jauna stīga ("Teckpix"); str.concat ("Risinājums"); system.out.ln (str); // izejas Teckpix

Iepriekš tekstā es mēģināju savienot abas virknes “Teckpix” un “Solution”. Kā mēs zinām, kad tiek izveidota virkne, tas nozīmē, ka tiek izveidots objekta tips String. Tādējādi virkne “Teckpix” rada objektu, kura atsauce tiek piešķirta virknes objektam “str”. Pēc tam es mēģināju savienot citu virkni “Solution” ar virkni “Teckpix”, izmantojot klases stīgas metodi “concat ()”.


Tā kā virknes objekti nav mainīgi, virknē “Teckpix” netiek veiktas nekādas modifikācijas, un jaunā virkne “Risinājums” virknes nemainīgajā baseinā rada citu objektu. Bet atsauci uz objektu “Risinājums” neaptver neviens objekts, tāpēc atsauce uz objektu Risinājums tiek zaudēta, lai arī tā joprojām atrodas virknes nemainīgajā baseinā. Tā kā objekts Teckpix netiek modificēts, kad es objektam, kuram es iepriekš piešķīru atsauci uz Teckpix, tiks izmantota tikai virkne “Teckpix”.

StringBuffer definīcija

Klase “StringBuffer” ir klases “String” vienaudžu klase. Klase StringBuffer nodrošina virknēm lielāku funkcionalitāti. StringBuffer klases objekts ir mainīgs, tātad tā objektu var modificēt. Objekta StringBuffer garums ir pieaudzis. Rakstzīmes vai apakšvirknes var ievietot virknes burtus vidū, kas ir piešķirti objektam StringBuffer, vai tā beigās. StringBuffer atvēl vietu 16 papildu rakstzīmēm, kad netiek prasīts noteikts garums.

Ļaujiet mums saprast objekta StringBuffer mainīgumu, izmantojot piemēru:

StringBuffer Sb = jauns StringBuffer ("Teckpix"); Sb.append ("Risinājums"); system.out.ln (Sb); // Outck Teckpix risinājums

Kā mēs zinām, ka StringBuffer objekts ir mainīgs. Metodes papildinājumā () tiek mainīts objekts StringBuffer Sb, kuram sākotnēji objekta atsauce “Teckpix” tiek piešķirta agrāk. Metode append () pievieno virknes burtam “Solution” virknes burtam “Teckpix” beigas. Tagad, kad es objekts Sb, tas būs modificēts virknes objekts “Teckpix Solutions”.

  1. String objekta garums ir noteikts, bet StringBuffer objekta garumu var palielināt pēc nepieciešamības.
  2. Stīgu objekts nav mainīgs, t.i., to nevar atkārtoti piešķirt, savukārt StringBuffer objekts ir mainīgs.
  3. Stīgu objekta veiktspēja ir lēnāka, turpretī objekta StringBuffer darbība ir ātrāka.
  4. Stīgu objekts patērē vairāk atmiņas, turpretī StringBuffer objekti patērē mazāk atmiņas.
  5. Stīgu objekti tiek glabāti nemainīgā baseinā, turpretī StringBuffer objekti tiek glabāti kaudzes atmiņā.

Secinājums:

Objekti StringBuffer nodrošina virknēm lielāku funkcionalitāti, salīdzinot ar klases stīgām. Tāpēc ir vēlams strādāt ar StringBuffer, nevis klases String.