Strenge i Java

Strenge

Strenge er sekvenser af tegn. I Java er a Stringet Object. Strenge bør ikke forveksles med, charda tegn bogstaveligt talt er 1 værdi snarere end en sekvens af tegn. Du kan stadig bruge 1 værdi inden for en streng, men det foretrækkes at bruge, charnår du kontrollerer for 1 tegn.

String course = "FCC"; System.out.println(course instanceof Object);

Produktion:

true

Du kan oprette et strengobjekt på følgende måder:

  1. String str = "I am a String"; //as a String literal
  2. String str = "I am a " + "String"; //as a constant expression
  3. String str = new String("I am a String"); //as a String Object using the constructor

Du tænker måske: Hvad er forskellen mellem de tre?

Brug af newnøgleordet garanterer, at Stringder oprettes et nyt objekt, og at en ny hukommelsesplacering tildeles i Heaphukommelsen (klik her for at lære mere). Strenglitteraler og konstante strengudtryk caches ved kompileringstidspunktet. Compileren placerer dem i String Literal Pool for at forhindre duplikater og forbedre hukommelsesforbruget. Objektallokering er dyr, og dette trick øger ydeevnen, mens du strammer straks. Hvis du bruger den samme bogstavelige igen, bruger JVM det samme objekt. Brug af konstruktøren som ovenfor er næsten altid et dårligere valg.

Hvor mange strengobjekter oprettes i dette kodestykke?

String str = "This is a string"; String str2 = "This is a string"; String str3 = new String("This is a string");

Svaret er: Der oprettes 2 strengobjekter. strog str2begge henviser til det samme objekt. str3har det samme indhold, men ved hjælp af newtvunget oprettelse af et nyt, tydeligt objekt.

Når du opretter en streng bogstavelig, kontrollerer JVM internt, hvad der er kendt som den String pool, for at se om den kan finde et lignende (indholdsmæssigt) strengobjekt. Hvis den finder den, returnerer den samme reference. Ellers fortsætter det bare og opretter et nyt strengobjekt i puljen, så den samme kontrol kan udføres i fremtiden.

Du kan teste dette ved hjælp af sluge, hurtig sammenligning af objekter ==og implementeret 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'

Her er et andet eksempel på, hvordan du opretter en streng i Java ved hjælp af de forskellige metoder:

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); } }

Sammenligning af strenge

Hvis du vil sammenligne værdien af ​​to strengvariabler, kan du ikke bruge ==. Dette skyldes, at dette sammenligner referencerne for variablerne og ikke de værdier, der er knyttet til dem. For at sammenligne de lagrede værdier af strengene bruger du metoden lig.

boolean equals(Object obj)

Det returnerer sandt, hvis to objekter ellers er lige og falske.

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

Den første sammenligning er falsk, fordi ”==” ser på referencerne, og de er ikke de samme.

Den anden sammenligning er sand, fordi variablerne gemmer de samme værdier. I dette tilfælde “Hej verden”.

Vi har flere indbyggede metoder i String. Følgende er et eksempel på metoden 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 ); } }

Dette vil resultere i - String Length is : 17

Svaret er: Der oprettes 2 strengobjekter. Bemærkninger

  1. Strengmetoder bruger nulbaserede indekser, undtagen det andet argument for substring().
  2. String-klassen er endelig - dens metoder kan ikke tilsidesættes.
  3. Når String-bogstavelig er fundet af JVM, føjes den til streng-bogstavet.
  4. Strengklasse har et metodenavn length(), mens arrays har en attributnavngivningslængde.
  5. I java er strengobjekter uforanderlige. Uforanderlig betyder simpelthen umodificerbar eller uforanderlig. Når strengobjekt er oprettet, kan dets data eller tilstand ikke ændres, men der oprettes et nyt strengobjekt.

Strenglængde

"Strengens" længde er bare antallet af tegn i den. Så “hej” er længde 2 og “Hej” er længde 5. Metoden længde () på en streng returnerer sin længde, således:

String a = "Hello"; int len = a.length(); // len is 5

Andre sammenligningsmetoder, som også kan bruges på strengen, er:

  1. equalsIgnoreCase (): - sammenligner strengen uden at tage højde for store og små bogstaver.
String a = "HELLO"; String b = "hello"; System.out.println(a.equalsIgnoreCase(b)); // It will print true
  1. CompareTo: - sammenligner værdien leksikografisk og returnerer et heltal.
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