"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 StringBuilder
bagay 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 StringBuilder
klase ay may dalawang dosenang mga kapaki-pakinabang na pamamaraan. Narito ang mga pinakamahalaga:
Pamamaraan | Paglalarawan |
---|---|
|
Kino-convert ang naipasa na bagay sa isang string at idinadagdag ito sa kasalukuyang string |
|
Kino-convert ang ipinasang bagay sa isang string at ipinapasok sa gitna ng kasalukuyang string |
|
Pinapalitan ang bahagi ng string na tinukoy ng start..end interval ng naipasa na string |
|
Tinatanggal ang character na may tinukoy na index mula sa string |
|
Tinatanggal ang mga character sa loob ng tinukoy na agwat mula sa string |
|
Naghahanap ng substring sa kasalukuyang string |
|
Naghahanap ng substring sa kasalukuyang string, simula sa dulo |
|
Ibinabalik ang character sa string sa naipasa na index |
|
Ibinabalik ang substring na tinukoy ng tinukoy na agwat |
|
Binabaliktad ang kasalukuyang string. |
|
Binabago ang character sa tinukoy na index sa naipasa na character |
|
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 |
---|---|
|
Hi |
Pag-convert sa isang karaniwang string
"Upang i-convert ang isang StringBuilder
bagay sa isang String object, kailangan mo lang tawagan ang toString()
pamamaraan nito. Halimbawa
Code | Output |
---|---|
|
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 |
---|---|
|
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 |
---|---|
|
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 |
---|---|
|
olleH |
"Bukod sa StringBuilder
klase, ang Java ay may isa pang string-like class na tinatawag na StringBuffer
. Ito ay isang analogue ng StringBuilder
klase, ngunit ang mga pamamaraan nito ay minarkahan ng synchronized
modifier."
"Anong ibig sabihin niyan?"
"Ito ay nangangahulugan na ang StringBuffer
bagay 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 StringBuffer
pagkatapos?"
"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’.
GO TO FULL VERSION