Ieteicams, 2025

Redaktora Izvēle

Starp Sting un StringBuffer Class atšķirība Java

String un StringBuffer ir gan klases, kas darbojas uz virknēm. StringBuffer klase ir klases virknes vienaudžu klase. String klases objekts ir fiksēts garums. StringBuffer klases objekts ir augošs. Galvenā atšķirība starp String un StringBuffer ir tāda, ka “String” klases objekts ir nemainīgs . Klases “StringBuffer” objekts ir mainīgs .

Salīdzinājuma diagramma

Salīdzinājuma pamatsStringStringBuffer
PamataString objekta garums ir fiksēts.StringBuffer garumu var palielināt.
IzmaiņasStīgu objekts ir nemainīgs.StringBuffer objekts ir mainīgs.
VeiktspējaKoncentrācijas laikā tas ir lēnāks.Tas ir ātrāks savienojuma laikā.
AtmiņaPatērē vairāk atmiņas.Patērē mazāk atmiņas.
GlabāšanaString pastāvīgs baseins.Atmiņas kaudze.

String definīcija

“String” ir klase Java. Klases String objekts ir fiksēts garums, un vissvarīgākais ir atcerēties, ka Stīgu klases objekts ir “nemainīgs”. Kad esat inicializējis String objektu, jūs nevarat to mainīt. Klases String objekts tiek saglabāts virknes konstantā grupā.

Vispirms sapratīsim, ka, veidojot jebkuru virkni; jūs izveidojat tipa virknes objektu. Stīgu konstantes ir arī stīgu objekti.

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

Iepriekš minētajā paziņojumā virkne “Hello this is Teckpix Solution” ir virknes konstante.

Tagad ļaujiet mums izprast String objekta savstarpējo atbilstību, izmantojot piemēru.

 String str = jauna virkne ("Teckpix"); str.concat ("Solution"); system.out.println (str); // izeja Teckpix 

Iepriekš minētajā kodā es mēģināju savienot abas virknes “Teckpix” un “Solution”. Kā mēs zinām, kad tiek izveidota virkne, kas nozīmē, ka tiek veidots String tipa objekts. Līdz ar to virkne “Teckpix” izveido objektu, kura atsauce ir piešķirta virknes objektam “str”. Pēc tam es mēģināju savienot citu virkni “Solution” ar virkni “Teckpix”, izmantojot klases “String” metodi “concat ()”.

Tā kā String objekti ir nemainīgi, virkne “Teckpix” netiek mainīta, un jaunā virkne “Solution” izveido vēl vienu objektu virknes konstantā baseinā. Taču atsauce uz objektu “Solution” netiek uztverta nevienam objektam, tāpēc atsauce uz objektu Solution tiek zaudēta, lai gan tā joprojām ir virknes konstanta baseinā. Tā kā objekts Teckpix nav izdarīts nekādas izmaiņas, tad, kad izdrukāju objektu, uz kuru es iepriekš norādīju Teckpix atsauci, drukāt tikai “Teckpix”.

StringBuffer definīcija

Klase “StringBuffer” ir klases “String” vienaudžu klase. StringBuffer klase nodrošina vairāk stīgu funkciju. StringBuffer klases objekts ir maināms, jo tā objektu var mainīt. StringBuffer objekta garums ir augams. Varat ievietot rakstzīmes vai apakšvirsrakstus virknes burtu vidū, kas piešķirts StringBuffer objektam vai tā beigās. StringBuffer piešķir vietu 16 papildu rakstzīmēm, ja nav pieprasīts konkrēts garums.

Ļaujiet mums saprast StringBuffer objekta piemērotību, izmantojot piemēru:

 StringBuffre Sb = jauns StringBuffer ("Teckpix"); Sb.append ("Risinājums"); system.out.println (Sb); // Output Teckpix risinājums 

Kā zināms, StringBuffer objekts ir mainīgs. Metode pievieno () modificē StringBuffer objektu Sb, uz kuru sākotnēji ir piešķirts objekta “Teckpix” atsauce. Metodes pielikums () pievieno jaunu virknes literāro “Solution”, līdz virknes literāram “Teckpix”. Tagad, kad es izdrukāju objektu Sb, tā izdrukās modificēto virknes objektu “Teckpix Solutions”.

Galvenā atšķirība starp virkni un StringBuffer

  1. Stringobjekta garums ir fiksēts, bet nepieciešamības gadījumā StringBuffer objekta garumu var palielināt.
  2. Stīgu objekts ir nemainīgs, ti, tā objektu nevar atkārtoti piešķirt, bet StringBuffer objekts ir mainīgs.
  3. Stringobjekts darbojas lēnāk, bet StringBuffer objekts ir ātrāks.
  4. String objekts patērē vairāk atmiņas, bet StringBuffer objekti patērē mazāk atmiņas.
  5. Stringobjekti tiek saglabāti nemainīgā baseinā, bet StringBuffer objekti tiek glabāti kaudzes atmiņā.

Secinājums:

StringBuffer objekti nodrošina virknei vairāk funkcionalitātes, salīdzinot ar klases virkni. Tādēļ ir ieteicams strādāt ar StringBuffer, nevis klases virkni.

Top