Žice
Nizovi su nizovi znakova. U Javi String
je a Object
. Sa char
nizovima se ne smije brkati jer su znakovi doslovno 1 vrijednost, a ne slijed znakova. I dalje možete koristiti 1 vrijednost u nizu, no poželjno je koristiti char
kada provjeravate ima li 1 znak.
String course = "FCC"; System.out.println(course instanceof Object);
Izlaz:
true
String objekt možete stvoriti na sljedeće načine:
String str = "I am a String"; //as a String literal
String str = "I am a " + "String"; //as a constant expression
String str = new String("I am a String"); //as a String Object using the constructor
Možda mislite: Koja je razlika između njih tri?
Pa, korištenje new
ključne riječi jamči da String
će se stvoriti novi objekt i u memoriji će biti dodijeljeno novo memorijsko mjesto Heap
(kliknite ovdje da biste saznali više). String literali i konstantni stringovi izrazi se memoriraju u vrijeme sastavljanja. Prevoditelj ih stavlja u String Literal Pool kako bi spriječio duplikate i poboljšao potrošnju memorije. Dodjela objekata skupa je i ovaj trik povećava izvedbu tijekom instanciranja nizova. Ako ponovno upotrijebite isti literal, JVM koristi isti objekt. Korištenje gornjeg konstruktora gotovo je uvijek lošiji izbor.
U ovom isječku koda, koliko je String objekata stvoreno?
String str = "This is a string"; String str2 = "This is a string"; String str3 = new String("This is a string");
Odgovor je: Stvorena su 2 string objekta. str
i str2
oba se odnose na isti objekt. str3
ima isti sadržaj, ali je upotreba new
prisiljena na stvaranje novog, različitog predmeta.
Kada stvorite String literal, JVM interno provjerava, ono što je poznato kao String pool
, da li može pronaći sličan (sadržajno) String objekt. Ako ga pronađe, vraća istu referencu. U suprotnom, jednostavno ide dalje i stvara novi objekt String u spremištu tako da se ista provjera može izvoditi u budućnosti.
To možete testirati pomoću lastavice, brze usporedbe objekata ==
i implementirane equals()
.
System.out.println(str == str2); // This prints 'true' System.out.println(str == str3); // This prints 'false' System.out.println(str.equals(str3)); // This prints 'true'
Evo još jednog primjera kako stvoriti niz u Javi pomoću različitih metoda:
public class StringExample{ public static void main(String args[]) { String s1 = "java"; // creating string by Java string literal char ch[] = {'s','t','r','i','n','g','s'}; String s2 = new String(ch); // converting char array to string String s3 = new String("example"); // creating Java string by new keyword System.out.println(s1); System.out.println(s2); System.out.println(s3); } }
Uspoređujući žice
Ako želite usporediti vrijednost dvije string varijable, ne možete koristiti ==. To je zbog činjenice da će se uspoređivati reference varijabli, a ne vrijednosti koje su s njima povezane. Za usporedbu pohranjenih vrijednosti Nizova koristite metodu jednako.
boolean equals(Object obj)
Vraća true ako su dva objekta jednaka, a inače false.
String str = "Hello world"; String str2 = "Hello world"; System.out.println(str == str2); // This prints false System.out.println(str.equals(str2); // This prints true
Prva je usporedba netačna jer "==" gleda reference, a one nisu iste.
Druga je usporedba istinita jer varijable pohranjuju iste vrijednosti. U ovom slučaju “Hello world”.
U Stringu imamo nekoliko ugrađenih metoda. Slijedi primjer metode String Length ().
public class StringDemo { public static void main(String args[]) { String palindrome = "Dot saw I was Tod"; int len = palindrome.length(); System.out.println( "String Length is : " + len ); } }
To će rezultirati - String Length is : 17
Odgovor je: Stvorena su 2 string objekta. Bilješke
- String metode koriste indekse koji se temelje na nuli, osim drugog argumenta
substring()
. - Klasa String je konačna - metode se ne mogu nadjačati.
- Kada JVM pronađe String literal, on se dodaje u spremište literal stringa.
- Klasa string ima naziv metode
length()
, dok nizovi imaju duljinu imenovanja atributa. - U javi su objekti niza nepromjenjivi. Nepromjenjiv jednostavno znači neizmijenjiv ili nepromjenjiv. Jednom kada je stvoren objekt niza, njegovi podaci ili stanje ne mogu se mijenjati, već se stvara novi objekt niza.
Duljina niza
"Duljina" niza samo je broj znakova u njemu. Dakle, "hi" je duljina 2, a "Hello" duljina 5. Metoda length () na nizu vraća mu duljinu, poput ove:
String a = "Hello"; int len = a.length(); // len is 5
Ostale metode usporedbe koje se također mogu koristiti na nizu su:
- equalsIgnoreCase (): - uspoređuje niz bez uzimanja u obzir osjetljivosti na mala i velika slova.
String a = "HELLO"; String b = "hello"; System.out.println(a.equalsIgnoreCase(b)); // It will print true
- compareTo: - uspoređuje vrijednost leksikografski i vraća cijeli broj.
String a = "Sam"; String b = "Sam"; String c = "Ram"; System.out.println(a.compareTo(b)); // 0 System.out.prinltn(a.compareTo(c)); // 1 since (a>b) System.out.println(c.compareTo(a)); // -1 since (c

Original text