"Pagbati, Amigo!"

"Hello, Rishi!"

"Sapat na ang alam mo tungkol sa mga string para matuto ng isang bagay na kawili-wili. Mas partikular, isang bagong klase na katulad ng, ngunit hindi eksaktong kapareho ng, ang String class."

"Mukhang nakakaintriga, bagama't hindi lubos na malinaw sa akin kung paano nahuhulog ang mga ordinaryong string at kung bakit kailangan ang iba pang mga klase na parang string."

"Magsimula tayo sa katotohanan na ang mga string ay mga hindi nababagong bagay sa Java."

"Paano 'yan? Nakalimutan ko... O hindi ko alam na magsimula sa..."

"Hayaan mong ipaalala ko sa iyo na ang mga hindi nababagong bagay ay ang mga hindi mababago ang mga estado pagkatapos nilang malikha."

"Ahhh... Bakit hindi nababago ang mga string sa Java?"

"Ginawa ito upang gawing lubos na na-optimize ang klase ng String at upang payagan itong magamit kahit saan. Halimbawa, ang mga hindi nababagong uri lamang ang inirerekomenda para gamitin bilang mga susi sa koleksyon ng HashMap .

"Gayunpaman, madalas na lumitaw ang mga sitwasyon kung kailan makikita ng mga programmer na mas maginhawa para sa klase ng String na maging nababago. Gusto nila ang isang klase na hindi gumagawa ng bagong substring sa tuwing tinatawag ang isa sa mga pamamaraan nito."

"Ngunit para saan ito mabuti?"

"Well, ipagpalagay na mayroon tayong napakalaking string at kailangan nating madalas na magdagdag ng isang bagay sa dulo nito. Sa kasong ito, kahit na ang isang koleksyon ng mga character ( ) ay maaaring maging mas mahusay ArrayList<Character>kaysa sa patuloy na paggawa at pagsasama-sama ng mga String object."

"At iyon ang dahilan kung bakit kailangan natin ng mga string na hindi masyadong String class?"

"Eksakto. Ang wikang Java ay nagdagdag ng isang String-tulad ng uri na maaaring mabago. Ito ay tinatawag na StringBuilder".

Paglikha ng isang bagay

"Upang lumikha ng isang StringBuilderbagay batay sa isang umiiral na string, kailangan mong magsagawa ng isang pahayag tulad ng:

StringBuilder name = new StringBuilder(string);

"Upang lumikha ng walang laman na nababagong string, kailangan mong gumamit ng pahayag na tulad nito:

StringBuilder name = new StringBuilder();

Listahan ng mga pamamaraan

"Ang StringBuilderklase ay may dalawang dosenang mga kapaki-pakinabang na pamamaraan. Narito ang mga pinakamahalaga:

Pamamaraan Paglalarawan
StringBuilder append(obj)
Kino-convert ang naipasa na bagay sa isang string at idinadagdag ito sa kasalukuyang string
StringBuilder insert(int index, obj)
Kino-convert ang ipinasang bagay sa isang string at ipinapasok sa gitna ng kasalukuyang string
StringBuilder replace(int start, int end, String str)
Pinapalitan ang bahagi ng string na tinukoy ng start..end interval ng naipasa na string
StringBuilder deleteCharAt(int index)
Tinatanggal ang character na may tinukoy na index mula sa string
StringBuilder delete(int start, int end)
Tinatanggal ang mga character sa loob ng tinukoy na agwat mula sa string
int indexOf(String str, int index)
Naghahanap ng substring sa kasalukuyang string
int lastIndexOf(String str, int index)
Naghahanap ng substring sa kasalukuyang string, simula sa dulo
char charAt(int index)
Ibinabalik ang character sa string sa naipasa na index
String substring(int start, int end)
Ibinabalik ang substring na tinukoy ng tinukoy na agwat
StringBuilder reverse()
Binabaliktad ang kasalukuyang string.
void setCharAt(int index, char)
Binabago ang character sa tinukoy na index sa naipasa na character
int length()
Ibinabalik ang haba ng string sa mga character

"At ngayon ay ilalarawan ko nang maikli ang bawat isa sa mga pamamaraang ito sa iyo.

Nagdaragdag sa isang string

"Upang magdagdag ng isang bagay sa isang nababagong string ( StringBuilder), gamitin ang append()pamamaraan. Halimbawa:

Code Paglalarawan
StringBuilder builder = new StringBuilder("Hi");
builder.append("Bye");
builder.append(123);
Hi
HiBye
HiBye123

Pag-convert sa isang karaniwang string

"Upang i-convert ang isang StringBuilderbagay sa isang String object, kailangan mo lang tawagan ang toString()pamamaraan nito. Halimbawa

Code Output
StringBuilder builder = new StringBuilder("Hi");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Hi123

Paano ko tatanggalin ang isang character?

"Upang tanggalin ang isang character sa isang nababagong string, kailangan mong gamitin ang deleteCharAt()paraan. Halimbawa:

Code Output
StringBuilder builder = new StringBuilder("Hello");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Helo

Paano ko papalitan ang bahagi ng isang string ng isa pang string?

"Para dito mayroong replace(int begin, int end, String str)paraan. Halimbawa:

Code Output
StringBuilder builder = new StringBuilder("Mellow");
builder.replace(2, 5, "Hello!");
String result = builder.toString();
System.out.println(result);
MeHello!w

"Mukhang maginhawa. Salamat, Rishi."

"Don't mention it. How about this, kaya mo bang mag-flip ng string backwards? How would you do it?"

"Buweno... Gagawa ako ng StringBuilder, maglalagay ng string dito... Pagkatapos ay lumikha ng bagong string, at sa isang loop mula sa huling character hanggang sa una... O baka isang bitwise shift...

"Hindi masama. Ngunit maaari itong maging mas mabilis. May espesyal na paraan para gawin ito — reverse();Halimbawa:

Code Output
String str = "Hello";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
olleH

"Bukod sa StringBuilderklase, ang Java ay may isa pang string-like class na tinatawag na StringBuffer. Ito ay isang analogue ng StringBuilderklase, ngunit ang mga pamamaraan nito ay minarkahan ng synchronizedmodifier."

"Anong ibig sabihin niyan?"

"Ito ay nangangahulugan na ang StringBufferbagay ay maaaring ma-access nang sabay-sabay mula sa maraming mga thread."

"Hindi pa ako masyadong pamilyar sa mga thread. Ngunit 'maaaring ma-access mula sa maraming mga thread' ay malinaw na mas mahusay kaysa sa 'hindi ma-access mula sa maraming mga thread'... Bakit hindi palaging gamitin StringBufferpagkatapos?"

"Dahil ito ay mas mabagal kaysa sa StringBuilder. Maaaring kailanganin mo ang ganitong klase kapag nagsimula kang aktibong tuklasin ang multithreading sa Java Multithreading quest.

“Isusulat ko ‘yan sa alaala ko para hindi makalimutan. Minarkahan ng ‘para sa hinaharap’.