Java String

Java String is een van de meest gebruikte klassen. Java String klasse is gedefinieerd in het java.lang pakket.

Java String

  • In principe is een string een opeenvolging van tekens, maar het is geen primitief type.
  • Wanneer we een string in Java maken, wordt er eigenlijk een object van het type String aangemaakt.
  • String is een onveranderlijk object, wat betekent dat het niet kan worden gewijzigd nadat het is gemaakt.
  • String is de enige klasse waar operator overbelasting wordt ondersteund in Java. We kunnen twee strings samenvoegen met behulp van de + operator. Bijvoorbeeld "a"+"b"="ab".
  • Java biedt twee handige klassen voor het manipuleren van strings – StringBuffer en StringBuilder.

Laten we doorgaan en meer leren over de Java String klasse.

Verschillende manieren om String te maken

Er zijn veel manieren om een stringobject te maken in Java, enkele van de populaire zijn hieronder gegeven.

  1. Gebruik van string literal

    Dit is de meest voorkomende manier om een string te maken. In dit geval wordt een string letterlijk tussen dubbele aanhalingstekens geplaatst.

    String str = "abc"; 
    

    Wanneer we een String maken met behulp van dubbele aanhalingstekens, kijkt de JVM in de String pool of er al een andere String is opgeslagen met dezelfde waarde. Als dat het geval is, retourneert het gewoon de verwijzing naar dat String-object, anders maakt het een nieuw String-object met de opgegeven waarde en slaat het op in de String pool.

  2. Gebruik van het nieuwe trefwoord

    We kunnen een String-object maken met behulp van de nieuwe operator, net zoals bij elke normale Java-klasse. Er zijn verschillende constructors beschikbaar in de String-klasse om een String te krijgen vanuit een tekenreeksarray, byte-array, StringBuffer en StringBuilder.

    String str = new String("abc");
    char[] a = {'a', 'b', 'c'};
    String str2 = new String(a);
    

Java String vergelijken

De String-klasse biedt equals() en equalsIgnoreCase() methoden om twee strings te vergelijken. Deze methoden vergelijken de waarde van de string om te controleren of twee strings gelijk zijn of niet. Het retourneert true als twee strings gelijk zijn en false als dat niet het geval is.

package com.journaldev.string.examples;

/**
 * Java String Example
 * 
 * @author pankaj
 *
 */
public class StringEqualExample {

	public static void main(String[] args) {
		// het maken van twee string-objecten
		String s1 = "abc";
		String s2 = "abc";
		String s3 = "def";
		String s4 = "ABC";
		
		System.out.println(s1.equals(s2));//true
		System.out.println(s2.equals(s3));//false
		
		System.out.println(s1.equals(s4));//false;
		System.out.println(s1.equalsIgnoreCase(s4));//true
	}

}

De output van het bovenstaande programma is:

true
false
false
true

String-klasse implementeert de interface Comparable, die compareTo() en compareToIgnoreCase() methoden biedt en twee strings lexicografisch vergelijkt. Beide strings worden omgezet naar Unicode-waarden voor vergelijking en retourneren een geheel getal dat groter dan, kleiner dan of gelijk aan nul kan zijn. Als de strings gelijk zijn, wordt nul geretourneerd, anders wordt een waarde groter of kleiner dan nul geretourneerd.

package com.journaldev.examples;

/**
 * Java String compareTo Example
 * 
 * @author pankaj
 *
 */
public class StringCompareToExample {

	public static void main(String[] args) {
		
		String a1 = "abc";
		String a2 = "abc";
		String a3 = "def";
		String a4 = "ABC";
		
		System.out.println(a1.compareTo(a2));//0
		System.out.println(a2.compareTo(a3));//less than 0
		System.out.println(a1.compareTo(a4));//greater than 0
		System.out.println(a1.compareToIgnoreCase(a4));//0
	}

}

De uitvoer van het bovenstaande programma is:

0
-3
32
0

Lees hier meer over op String compareTo voorbeeld.

Java String-methoden

Laten we eens kijken naar enkele populaire methoden van de String-klasse met een voorbeeldprogramma.

  1. split()

    Java String split() methode wordt gebruikt om de string te splitsen met behulp van de opgegeven expressie. Er zijn twee varianten van de split() methode.

    • split(String regex): Deze methode splitst de string met behulp van de opgegeven regex expressie en retourneert een array van strings.
    • split(String regex, int limit): Deze methode splitst de string met behulp van de opgegeven regex expressie en retourneert een array van strings, maar het element van de array is beperkt door de gespecificeerde limiet. Als de gespecificeerde limiet 2 is, retourneert de methode een array van grootte 2.
    package com.journaldev.examples;
    
    /**
     * Java String split voorbeeld
     * 
     * @author pankaj
     *
     */
    public class StringSplitVoorbeeld {
    
    	public static void main(String[] args) {
    		
    		String s = "a/b/c/d";
    		String[] a1 = s.split("/");
    		System.out.println("string splitsen met alleen regex:");
    		for (String string : a1) {
    			System.out.println(string);
    		}
    		System.out.println("string splitsen met regex en limiet:");
    		String[] a2 = s.split("/", 2);
    		for (String string : a2) {
    			System.out.println(string);
    		}
    	}
    
    }
    

    Output van bovenstaand programma is:

    string splitsen met alleen regex:
    a
    b
    c
    d
    string splitsen met regex en limiet:
    a
    b/c/d
    
  2. contains(CharSequence s)

    De Java String contains() methode controleert of een string de opgegeven sequentie van tekens bevat of niet. Deze methode geeft true terug als de string de opgegeven sequentie van tekens bevat, anders geeft het false terug.

    package com.journaldev.examples;
    
    /**
     * Java String contains() Voorbeeld
     * 
     * @author pankaj
     *
     */
    public class StringContainsExample {
    
    	public static void main(String[] args) {
    		String s = "Hello World";
    		
    		System.out.println(s.contains("W"));//true
    		System.out.println(s.contains("X"));//false
    	}
    
    }
    

    De uitvoer van het bovenstaande programma is:

    true
    false
    
  3. lengte()

    De Java String lengte() methode retourneert de lengte van de string.

    package com.journaldev.examples;
    
    /**
     * Java String lengte
     * 
     * @author pankaj
     *
     */
    public class StringLengteVoorbeeld {
    
    	public static void main(String[] args) {
    		
    		String s1 = "abc";
    		String s2 = "abcdef";
    		String s3 = "abcdefghi";
    		
    		System.out.println(s1.length());//3
    		System.out.println(s2.length());//6
    		System.out.println(s3.length());//9
    
    	}
    
    }
    
  4. replace()

    De Java String replace() methode wordt gebruikt om een specifiek deel van een string te vervangen door een andere string. Er zijn vier varianten van de replace() methode.

    • replace(char oldChar, char newChar): Deze methode vervangt alle voorkomens van oldChar door newChar in de string.
    • replace(CharSequence target, CharSequence replacement): Deze methode vervangt elk doel-literal door vervangende literals in de string.
    • replaceAll(String regex, String replacement): Deze methode vervangt alle voorkomens van substrings die overeenkomen met het opgegeven regex-patroon door de opgegeven vervanging in de string.
    • replaceFirst(String regex, String replacement): Deze methode vervangt het eerste voorkomen van een substring die overeenkomt met het opgegeven regex-patroon door de opgegeven vervanging in de string.
    package com.journaldev.examples;
    
    /**
     * Java String replace
     * 
     * @author pankaj
     *
     */
    public class StringReplaceExample {
    
    	public static void main(String[] args) {
    		
    		//replace(char oldChar,  char newChar)
    		String s = "Hallo Wereld";
    		s = s.replace('l', 'm');
    		System.out.println("Na vervanging van l door m :");
    		System.out.println(s);
    		
    		//replaceAll(String regex, String replacement)
    		String s1 = "Hallo journaldev, Hallo pankaj";
    		s1 = s1.replaceAll("Hallo", "Hi");
    		System.out.println("Na vervanging :");
    		System.out.println(s1);
    		
    		//replaceFirst(String regex, String replacement) 
    		String s2 = "Hallo mensen, Hallo wereld";
    		s2 = s2.replaceFirst("Hallo", "Hi");
    		System.out.println("Na vervanging :");
    		System.out.println(s2);
    
    	}
    
    }
    

    De output van het bovenstaande programma is:

    Na vervanging van l door m :
    Hammo Wered
    Na vervanging :
    Hi journaldev, Hi pankaj
    Na vervanging :
    Hi mensen, Hallo wereld
    
  5. format()

    De Java Sting format() methode wordt gebruikt om de string op te maken. Er zijn twee varianten van de Java String format() methode.

    • format(Locale l, String format, Object… args): Deze methode formatteert de string met behulp van de opgegeven taalinstelling, stringformaat en argumenten.
    • format(String format, Object… args): Deze methode formatteert de string met behulp van het opgegeven stringformaat en argumenten.
    package com.journaldev.examples;
    
    import java.util.Locale;
    
    /**
     * Java String format
     * 
     * @author pankaj
     *
     */
    public class StringFormatExample {
    
    	public static void main(String[] args) {
    		
    		String s = "journaldev.com";
    		// %s wordt gebruikt om de string toe te voegen
    		System.out.println(String.format("Dit is %s", s));
    		
    		// met taalinstelling als Locale.US
    		System.out.println(String.format(Locale.US, "%f", 3.14));
    	}
    }
    

    De uitvoer van het bovenstaande programma is:

    Dit is journaldev.com
    3.140000
    
  6. substring()

    Deze methode retourneert een deel van de string op basis van opgegeven indexen.

    package com.journaldev.examples;
    
    /**
     * Java String substring
     *
     */
    public class StringSubStringExample {
    
    	public static void main(String[] args) {
    		
    		String s = "Dit is journaldev.com";
    		s = s.substring(8,18);
    		System.out.println(s);
    	}
    }
    

String Concatenatie

String concatenatie is een zeer basale operatie in Java. Strings kunnen worden geconcateneerd door de “+” operator te gebruiken of door de concat() methode te gebruiken.

package com.journaldev.examples;

/**
 * Java String concatenation
 * 
 * @author pankaj
 *
 */
public class StringConcatExample {

	public static void main(String[] args) {
		
		String s1 = "Hello";
		String s2 = "World";
		String s3 = s1 + s2;
		//gebruikmakend van de + operator
		System.out.println("Using + operator: ");
		System.out.println(s3);
		
		//gebruikmakend van de concat methode
		System.out.println("Using concat method: ");
		System.out.println(s1.concat(s2));

	}

}

De output van het bovenstaande programma is:

Using + operator: 
HelloWorld
Using concat method: 
HelloWorld

Bekijk deze post voor meer informatie over String Concatenatie in Java.

Java String Pool

Geheugenbeheer is het belangrijkste aspect van elke programmeertaal. Geheugenbeheer in het geval van een string in Java is een beetje anders dan bij elke andere klasse. Om Java geheugenefficiënter te maken, heeft de JVM een speciaal geheugen gebied geïntroduceerd voor de string genaamd String Constant Pool. Wanneer we een stringliteral maken, controleert het of er al een identieke string bestaat in de stringpool of niet. Als het er is, geeft het de referentie van de bestaande string in de stringpool terug. Laten we eens kijken naar het onderstaande voorbeeldprogramma.

package com.journaldev.examples;

/**
 * Java String Pool Example
 * 
 */
public class StringPoolExample {

	public static void main(String[] args) {
		
		String a = "abc";
		String b = "abc";
		String c = "def";
		
		//dezelfde referentie
		if (a==b) {
			System.out.println("Both string refer to the same object");
		}
		
		//verschillende referentie
		if (a==c) {
			System.out.println("Both strings refer to the same object");
		}else {
			System.out.println("Both strings refer to the different object");
		}

	}

}

De uitvoer van het bovenstaande programma is:

Both string refer to the same object
Both strings refer to the different object

Bekijk deze post voor meer informatie over Java String Pool.

String intern() Methode

Wanneer we een string maken met een stringliteral, wordt deze gemaakt in de stringpool, maar wat als we een string maken met het nieuwe trefwoord met dezelfde waarde die al in de stringpool bestaat? Kunnen we de String van heapgeheugen naar de stringpool verplaatsen? Hiervoor wordt de intern() methode gebruikt en deze retourneert een canonieke voorstelling van het stringobject. Wanneer we de intern() methode aanroepen op een stringobject dat is gemaakt met het nieuwe trefwoord, controleert het of er al een String met dezelfde waarde in de pool staat. Zo ja, dan geeft het de referentie van dat Stringobject uit de pool terug. Zo niet, dan maakt het een nieuwe String met dezelfde inhoud in de pool en geeft het de referentie terug.

package com.journaldev.examples;

/**
 * Java String intern
 * 
 * @author pankaj
 *
 */
public class StringInternExample {

	public static void main(String[] args) {
		
		String s1 = "pankaj";
		String s2 = "pankaj";
		String s3 = new String("pankaj");
		
		System.out.println(s1==s2);//true
		System.out.println(s2==s3);//false
		
		String s4 = s3.intern();
		System.out.println(s1==s4);//true

	}

}

Bekijk deze post om meer te weten te komen over de Java String intern methode.

Voordelen van String Onveranderlijkheid

Enkele voordelen van de String als een onveranderlijke klasse zijn:

  1. String Constant Pool, dus bespaart geheugen.
  2. Beveiliging omdat het niet kan worden gewijzigd.
  3. Thread safe
  4. Klasse Laden beveiliging

Bekijk deze post voor meer informatie over String Onveranderlijkheid Voordelen.

Java 8 String join()

A new static method join() has been added in String class in Java 8. This method returns a new String composed of copies of the CharSequence elements joined together with a copy of the specified delimiter. Let’s look at an example to understand it easily.

List<String> words = Arrays.asList(new String[]{"Hello", "World", "2019"});
String msg = String.join(" ", words);
System.out.println(msg);

Output: Hallo Wereld 2019

Java 9 String Methoden

Er zijn twee methoden toegevoegd aan de String klasse in de Java 9 release. Ze zijn – codePoints() en chars(). Beide methoden retourneren een IntStream object waarop we enkele bewerkingen kunnen uitvoeren. Laten we snel naar deze methoden kijken.

String s = "abc";

s.codePoints().forEach(x -> System.out.println(x));

s.chars().forEach(x -> System.out.println(x));

Output:

97
98
99
97
98
99

Java 11 String Class Nieuwe Methoden

Er zijn veel nieuwe methoden toegevoegd aan de String-klasse in de Java 11-release.

  • isBlank() – retourneert waar als de string leeg is of alleen witruimte-codepunten bevat, anders onwaar.
  • lines() – retourneert een stream van regels die zijn geëxtraheerd uit deze string, gescheiden door regelafbrekers.
  • strip(), stripLeading(), stripTrailing() – voor het verwijderen van voorloop- en achterloopwitruimte uit de string.
  • repeat() – retourneert een string waarvan de waarde de concatenatie is van deze string herhaald een gegeven aantal keren.

Laten we eens kijken naar een voorbeeldprogramma voor deze methoden.

package com.journaldev.strings;

import java.util.List;
import java.util.stream.Collectors;

/**
 * JDK 11 New Functions in String class
 * 
 * @author pankaj
 *
 */
public class JDK11StringFunctions {

	public static void main(String[] args) {
		// isBlank()
		String s = "abc";
		System.out.println(s.isBlank());
		s = "";
		System.out.println(s.isBlank());

		// lines()
		String s1 = "Hi\nHello\rHowdy";
		System.out.println(s1);
		List lines = s1.lines().collect(Collectors.toList());
		System.out.println(lines);

		// strip(), stripLeading(), stripTrailing()
		String s2 = "  Java,  \tPython\t ";
		System.out.println("#" + s2 + "#");
		System.out.println("#" + s2.strip() + "#");
		System.out.println("#" + s2.stripLeading() + "#");
		System.out.println("#" + s2.stripTrailing() + "#");

		// repeat()
		String s3 = "Hello\n";
		System.out.println(s3.repeat(3));
		s3 = "Co";
		System.out.println(s3.repeat(2));

	}

}

Output:

false
true
Hi
Hello
Howdy
[Hi, Hello, Howdy]
#  Java,  	Python	 #
#Java,  	Python#
#Java,  	Python	 #
#  Java,  	Python#
Hello
Hello
Hello

CoCo

Dat is alles over de Java String-klasse, de methoden en voorbeelden van stringmanipulatie.

Je kunt meer voorbeelden van strings bekijken op onze GitHub Repository.

Referentie: API Doc

Source:
https://www.digitalocean.com/community/tutorials/java-string