A snippet kuliah karo mentor minangka bagéan saka kursus Universitas Codegym. Ndaftar kanggo kursus lengkap.


"Hai, Amigo! Dina iki kita bakal njelasno sawetara skenario liyane umum nglibatno nggarap strings. Contone, apa sampeyan ngerti carane pamisah string menyang sawetara bagéan?"

"Aku ora bakal ngomong langsung, Ellie. Nanging sampeyan bakal ngandhani aku, ta?"

split()cara

"Ana sawetara cara kanggo nindakake iki. Cara pisanan kanggo pamisah string dadi pirang-pirang bagean yaiku nggunakake split()metode kasebut. Ekspresi reguler sing nemtokake string pembatas khusus kudu dilewati minangka parameter. Sampeyan bakal sinau babagan ekspresi reguler. pencarian Java Collections .

Tuladha:

Kode asil
String str = "Good news everyone!";
String[] strings = str.split("ne");
System.out.println(Arrays.toString(strings));
Asil bakal dadi array saka telung senar:
["Good ", "ws everyo", "!"]

Prasaja, nanging kadhangkala pendekatan iki kakehan. Yen ana akeh pembatas (contone, spasi, karakter baris anyar, tab, titik), sampeyan kudu nggawe ekspresi reguler sing rada rumit."

“Inggih, mesthi. Lan yen angel diwaca, banjur angel nggawe owah-owahan.

StringTokenizerkelas

A snippet kuliah karo mentor minangka bagéan saka kursus Universitas Codegym. Ndaftar kanggo kursus lengkap.


"Jawa duwe kelas khusus sing kabeh tugase yaiku pamisah string dadi substrings.

"Kelas iki ora nggunakake ekspresi reguler: tinimbang, sampeyan mung ngliwati senar sing kasusun saka delimiters. Kauntungan saka pendekatan iki yaiku ora ngilangi kabeh senar bebarengan, nanging pindhah saka wiwitan nganti pungkasan. langkah ing wektu.

Kelas kasebut nduweni konstruktor lan rong cara. We pass konstruktor senar sing dipérang dadi bagéan, lan senar dumadi saka pesawat saka karakter delimiting.

Metode Katrangan
String nextToken()
Ngasilake substring sabanjure
boolean hasMoreTokens()
Priksa manawa ana luwih akeh substrings.

"Kelas iki piye wae ngelingake aku babagan kelas Scanner, sing uga duwe nextLine()lan hashNextLine()metode.

"Iku pengamatan apik sing wis digawe. Sampeyan bisa nggawe StringTokenizerobyek karo printah iki:

StringTokenizer name = new StringTokenizer(string, delimiters);

Where string punika senar kanggo dibagi dadi bagean. Lan delimiters minangka senar, lan saben karakter ing iku dianggep minangka delimiter a. Tuladha:

Kode Output konsol
String str = "Good news everyone!";

StringTokenizer tokenizer = new StringTokenizer(str,"ne");
while (tokenizer.hasMoreTokens())
{
   String token = tokenizer.nextToken();
   System.out.println(token);
}
Good 
ws 
v
ryo
!

"Elinga yen saben karakter ing senar sing dilewati ing senar kapindho menyang StringTokenizerkonstruktor dianggep minangka pemisah.

String.format()metode lan StringFormatterkelas

"Cara liyane sing menarik saka kelas String yaiku format().

"Ayo sampeyan duwe macem-macem variabel sing nyimpen data. Kepiye carane sampeyan nampilake ing layar ing siji baris? Contone, kita duwe sawetara data (kolom kiwa) lan output sing dikarepake (kolom tengen):

Kode Output konsol
String name = "Amigo";
int age = 12;
String friend = "Diego";
int weight = 200;
User = {name: Amigo, age: 12 years, friend: Diego, weight: 200 kg.}

Kode kanggo program kasebut bakal katon kaya iki:

Kode program
String name = "Amigo";
int age = 12;
String friend = "Diego";
int weight = 200;

System.out.println("User = {name: " + name + ", age:" + age + " years, friend: " + friend+", weight: " + weight + " kg.}");

"Sampeyan bakal setuju karo aku yen kode kasebut ora bisa diwaca. Lan yen jeneng variabel luwih dawa, kode kasebut bakal dadi luwih angel:

Kode program
String name = "Amigo";
int age = 12;
String friend = "Diego";
int weight = 200;

System.out.println("User = {name: " + user.getName() + ", age:" + user.getAge() + " years, friend: " + user.getFriends().get(0) + ", weight: " + user.getExtraInformation().getWeight() + " kg.}");

"Ya, iku angel maca!"

"Aja kuwatir. Iki minangka kahanan umum ing program donya nyata, mula aku pengin ngandhani babagan cara nulis kode iki kanthi luwih gampang lan luwih ringkes.

String.format

" StringKelas kasebut nduweni cara statis format(): ngidini sampeyan nemtokake pola kanggo ngrakit senar kanthi data. Tampilan umum perintah kasebut kaya ing ngisor iki:

String name = String.format(pattern, parameters);

Tuladha:

Kode asil
String.format("Age=%d, Name=%s", age, name);
Age=12, Name=Amigo
String.format("Width=%d, Height=%d", width, height);
Width=20, Height=10
String.format("Fullname=%s", name);
Fullname=Diego

" format()Parameter pisanan metode yaiku senar format sing ngemot kabeh teks sing dikarepake bebarengan karo karakter khusus sing diarani penentu format (kayata %dlan %s) ing panggonan sing sampeyan kudu nglebokake data.

" format()Cara ngganti iki %slan %dformat specifiers karo paramèter sing tindakake format string ing dhaftar parameter. Yen kita arep nglebokake string, banjur kita nulis . %sYen kita pengin nglebokake nomer, banjur format specifier punika %d. Conto:

Kode asil
String s = String.format("a=%d, b=%d, c=%d", 1, 4, 3);
siku padha karo"a=1, b=4, c=3"

"Iki dhaptar singkat saka penentu format sing bisa digunakake ing string format:

Specifier Artine
%s
String
%d
interger : byte,,,, short_intlong
%f
nomer nyata float:,double
%b
boolean
%c
char
%t
Date
%%
%watak

"Specifiers iki nuduhake jinis data, nanging ana uga specifiers sing nuduhake urutan data. Kanggo njaluk argumen kanthi nomer (nomer diwiwiti saka siji), sampeyan kudu nulis "% 1$ d " tinimbang " %d ". Tuladha:

Kode asil
String s = String.format("a=%3$d, b=%2$d, c=%d", 11, 12, 13);
siku padha karo"a=13, b=12, c=11"

%3$dbakal entuk argumen kaping 3, %2$dbakal entuk argumen kaping pindho, lan %dbakal entuk argumen sing pertama. The %slan %dformat specifiers nuduhake bantahan preduli saka specifiers kaya %3$dutawa%2$s

Kolam String

"Saben senar sing ditemtokake ing kode minangka string literal disimpen ing area memori sing diarani nalika StringPoolprogram lagi mlaku. StringPoolminangka array khusus kanggo nyimpen senar. Tujuane kanggo ngoptimalake panyimpenan senar:

"Kaping pisanan, senar sing ditemtokake ing kode kudu disimpen ing endi wae, ta? Kode kasusun saka perintah, nanging data (utamane, senar gedhe) kudu disimpen ing memori kanthi kapisah saka kode kasebut. Mung referensi kanggo obyek senar katon ing kode.

"Kapindho, kabeh literal string identik kudu disimpen ing memori mung sapisan. Lan mung cara kerjane. Nalika kode kelas sampeyan dimuat dening mesin Java, kabeh literal string ditambahake yen durung ana StringPool. wis ana, banjur kita mung nggunakake referensi senar saka StringPool.

Dadi, yen sampeyan nemtokake literal sing padha menyang sawetara variabel String ing kode sampeyan, mula variabel kasebut bakal ngemot referensi sing padha. A literal bakal ditambahake StringPoolmung sapisan. Ing kabeh kasus liyane, kode bakal entuk referensi kanggo senar sing wis dimuat ing file StringPool.

Mangkene kira-kira cara kerjane:

Kode Nggarap StringPoll
String a = "Hello";
String b = "Hello";
String c = "Bye";
String[] pool = {"Hello", "Bye"};
a = pool[0];
b = pool[0];
c = pool[1];

"Mulane variabel alan bbakal nyimpen referensi sing padha."

“Muga-muga aku ngerti kabeh kanthi bener.

intern()cara.

"Lan sisih paling apik iku sampeyan bisa programmatically nambah senar kanggo StringPool. Kanggo nindakake iki, sampeyan mung kudu nelpon cara Stringvariabel intern().

" intern()Cara kasebut bakal nambah senar menyang StringPoolyen durung ana, lan bakal ngasilake referensi menyang senar ing file StringPool.

"Lan apa sing bakal kelakon yen loro strings podho rupo ditambahake menyang StringPoolnggunakake intern()cara?"

"Cara kasebut bakal ngasilake referensi sing padha. Iki bisa digunakake kanggo mbandhingake string kanthi referensi. Conto:

Kode Cathetan
String a = new String("Hello");
String b = new String("Hello");
System.out.println(a == b);


false
String a = new String("Hello");
String b = new String("Hello");

String t1 = a.intern();
String t2 = b.intern();
System.out.println(a == b);
System.out.println(t1 == t2);





false
true

Sampeyan ora bisa nggunakake cara iki asring. Sing jarene, wong seneng takon babagan iki ing wawancara kerja.

"Dadi, luwih becik ngerti babagan iki tinimbang ora ngerti. Matur nuwun, Ellie!"