1. Istruktura ng Stringklase

Ngayon ay pag-uusapan natin ang tungkol sa Stringklase. Pagkatapos ng ints, ang String class ay ang pinakasikat na klase sa Java. Ito ay ganap na ginagamit sa lahat ng dako. Mayroon itong isang grupo ng mga kapaki-pakinabang na pamamaraan na mas mahusay mong malaman.

Ang Stringklase ay ang tanging klase maliban sa mga primitive na uri na ang mga literal ay maaaring gamitin sa isang switchpahayag; pinangangasiwaan ng compiler ang pagdaragdag ng string at mga String na bagay sa isang espesyal na paraan; StringAng mga bagay ay inilalagay sa memorya sa isang espesyal na paraan. Talaga, ang Stringklase ay isang napaka-espesyal na klase.

Gayundin, ang Stringklase ay may isang grupo ng mga klase ng katulong na ang layunin ay upang higit pang gawing simple ang pagtatrabaho sa mga string sa Java. Kapag natutunan mo ang lahat ng ito, maraming bagay ang talagang magiging mas madali para sa iyo na gawin. Well, magsisimula tayo mula sa pinakaubod ng ecosystem na ito — ang organisasyon ng Stringklase.

Array ng mga character

Ang istraktura ng Stringklase ay talagang napaka-simple: sa loob nito ay isang character array (char array) na nag-iimbak ng lahat ng mga character ng string. Halimbawa, ito ay kung paano iniimbak ang salitang 'Hello':

Istraktura ng klase ng String
Mahalaga!

Sa totoo lang, hindi ito masyadong tumpak. Dahil ang Stringklase ay napakahalaga, ito ay gumagamit ng maraming mga pag-optimize, at ang data ay panloob na nakaimbak hindi bilang isang array ng character, ngunit bilang isang byte array lamang.


2. Pamamaraan ng Stringklase

Ang Stringklase ay may maraming mga pamamaraan: mayroon itong 18 mga konstruktor lamang! Kaya sa ibaba ay binanggit lamang namin ang pinakapangunahing mga ito:

Paraan Paglalarawan
int length()
Ibinabalik ang bilang ng mga character sa string
boolean isEmpty()
Sinusuri kung ang string ay isang walang laman na string
boolean isBlank()
Sinusuri na ang string ay naglalaman lamang ng mga character na whitespace: space, tab, bagong linya, atbp.
char charAt(int index)
Ibinabalik ang character sa posisyon ng index sa string.
char[] toCharArray()
Nagbabalik ng array ng mga character (isang kopya) na bumubuo sa string
byte[] getBytes()
Kino-convert ang isang string sa isang hanay ng mga byte at ibinabalik ang hanay ng mga byte.
String[] split(String regex)
Hinahati ang isang string sa maraming substring.
String join(CharSequence delimiter, elements)
Pinagsasama-sama ang maraming substrings
String intern()
Naglalagay ng string sa string pool.

Maaari kang matuto nang higit pa tungkol sa mga konstruktor sa artikulong Java Constructors .

Sumulat tayo ng program na nagko-convert ng file path mula sa Unix style patungo sa Windows style. Ginagamit ng Unix ang /character upang paghiwalayin ang mga folder, habang ginagamit ng Windows ang \character.

Solusyon 1: gamit ang isang char array

Code Mga Tala
Scanner console = new Scanner(System.in);
String path = console.nextLine();

char[] chars = path.toCharArray();
for (int i = 0; i < chars.length; i++)
   if (chars[i] == '/')
      chars[i] = '\\';

String result = new String(chars);
System.out.println(result);
Lumikha ng isang bagay na Scanner
Magbasa ng linya mula sa console

Mag-convert ng string sa array ng character
I-loop ang mga character
Kung ang character ay /,
palitan ito ng \. Huwag kalimutan ang tungkol sa pagtakas.

Gumawa ng bagong string batay sa array ng character.
Ipakita ang string.

Solusyon 2: — gamit ang split()at join()mga pamamaraan

Code Mga Tala
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String[] array = path.split("/");


String result = String.join("\\", array);


System.out.println(result);
Lumikha ng isang bagay na Scanner
Magbasa ng isang linya mula sa console

I-convert ang string sa isang array ng mga string . Ang /karakter ay ginagamit bilang isang separator (ang dagdag na dalawang slash ay resulta ng double escaping).
Pagsamahin ang lahat ng mga string sa hanay ng mga string . Ang \ay ginagamit bilang isang separator (nakikita natin itong nakatakas).

Ipakita ang string.

Solusyon 3: — gamit ang replace(char oldChar, char newChar)pamamaraan

Code Mga Tala
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String result = path.replace('/', '\\');

System.out.println(result);
Lumikha ng isang bagay na Scanner
Magbasa ng isang linya mula sa console

Palitan lang ang isang character ng isa pa
(ang pangalawa ay nakatakas)
Ipakita ang string.