V tomto výukovém programu se na příkladech seznámíme s Java Strings, jejich tvorbou a různými metodami String.
V Javě je řetězec posloupností znaků. Například „ahoj“ je řetězec obsahující posloupnost znaků „h“, „e“, „l“, „l“ a „o“.
K vyjádření řetězce v Javě používáme uvozovky . Například,
// create a string String type = "Java programming";
Zde jsme vytvořili řetězcovou proměnnou s názvem typ. Proměnná je inicializována řetězcem Java Programming
.
Poznámka : Řetězce v Javě nejsou primitivní typy (podobně int
, char
atd.) Místo toho jsou všechny řetězce objekty předdefinované třídy s názvem String
.
A všechny řetězcové proměnné jsou instancemi String
třídy.
Příklad: Vytvořte řetězec v Javě
class Main ( public static void main(String() args) ( // create strings String first = "Java"; String second = "Python"; String third = "JavaScript"; // print strings System.out.println(first); // print Java System.out.println(second); // print Python System.out.println(third); // print JavaScript ) )
Ve výše uvedeném příkladu jsme vytvořili tři řetězce pojmenované první, druhý a třetí. Tady přímo vytváříme řetězce jako primitivní typy.
Existuje však jiný způsob vytváření řetězců Java (pomocí new
klíčového slova). O tom se dozvíme dále v tomto tutoriálu.
Řetězcové operace Java
Java String poskytuje různé metody pro provádění různých operací s řetězci. Podíváme se na některé z běžně používaných řetězcových operací.
1. Získejte délku řetězce
Chcete-li zjistit délku řetězce, použijeme length()
metodu řetězce. Například,
class Main ( public static void main(String() args) ( // create a string String greet = "Hello! World"; System.out.println("String: " + greet); // get the length of greet int length = greet.length(); System.out.println("Length: " + length); ) )
Výstup
Řetězec: Ahoj! Délka světa: 12
Ve výše uvedeném příkladu length()
metoda vypočítá celkový počet znaků v řetězci a vrátí jej. Další informace najdete na webu Java String length ().
2. Spojte dva řetězce
Můžeme spojit dva řetězce v Javě pomocí této concat()
metody. Například,
class Main ( public static void main(String() args) ( // create first string String first = "Java "; System.out.println("First String: " + first); // create second String second = "Programming"; System.out.println("Second String: " + second); // join two strings String joinedString = first.concat(second); System.out.println("Joined String: " + joinedString); ) )
Výstup
První řetězec: Java Druhý řetězec: Programování Připojený řetězec: Programování Java
Ve výše uvedeném příkladu jsme vytvořili dva řetězce pojmenované první a druhý. Všimněte si prohlášení,
String joinedString = first.concat(second);
Zde se concat()
metoda spojí první a druhá a přiřadí ji proměnné joinString.
Můžeme také spojit dva řetězce pomocí +
operátoru v Javě. Další informace najdete na stránce Java String concat ().
3. Porovnejte dva řetězce
V Javě můžeme pomocí equals()
metody provést srovnání mezi dvěma řetězci . Například,
class Main ( public static void main(String() args) ( // create 3 strings String first = "java programming"; String second = "java programming"; String third = "python programming"; // compare first and second strings boolean result1 = first.equals(second); System.out.println("Strings first and second are equal: " + result1); // compare first and third strings boolean result2 = first.equals(third); System.out.println("Strings first and third are equal: " + result2); ) )
Výstup
Řetězce první a druhý jsou stejné: true Řetězce první a třetí jsou stejné: false
Ve výše uvedeném příkladu jsme vytvořili 3 řetězce pojmenované první, druhý a třetí. Zde používáme equal()
metodu ke kontrole, zda se jeden řetězec rovná druhému.
Tyto equals()
kontroly metoda obsah řetězce při jejich porovnávání. Další informace najdete na stránce Java String equals ().
Poznámka : Můžeme také porovnat dva řetězce pomocí ==
operátoru v Javě. Tento přístup se však liší od equals()
metody. Další informace najdete na stránce Java String == vs equals ().
Metody Java String
Kromě výše zmíněných existují v Javě různé řetězcové metody. Zde jsou některé z těchto metod:
Metody | Popis |
---|---|
podřetězec () | vrací podřetězec řetězce |
nahradit() | nahradí zadaný starý znak zadaným novým znakem |
charAt () | vrací znak přítomný v zadaném umístění |
getBytes () | převede řetězec na pole bajtů |
indexOf () | vrací pozici zadaného znaku v řetězci |
porovnat s() | porovnává dva řetězce v pořadí slovníku |
trim () | odstraní všechny přední a koncové mezery |
formát() | vrací formátovaný řetězec |
rozdělit() | rozdělí řetězec na pole řetězců |
toLowerCase () | převede řetězec na malá písmena |
toUpperCase () | převede řetězec na velká písmena |
hodnota() | vrací řetězcové vyjádření zadaného argumentu |
toCharArray () | převede řetězec na char pole |
Úniková postava v řetězcích Java
Únikový znak se používá k úniku z některých znaků přítomných uvnitř řetězce.
Předpokládejme, že do řetězce musíme zahrnout uvozovky.
// include double quote String example = "This is the "String" class";
Vzhledem k tomu, že řetězce jsou reprezentovány uvozovkami , bude kompilátor považovat řetězec „This is the“ za řetězec. Výše uvedený kód proto způsobí chybu.
K vyřešení tohoto problému používáme v jazyce Java znak escape . Například,
// use the escape character String example = "This is the "String " class.";
Nyní únikové znaky řeknou kompilátoru, aby unikl uvozovkám a přečetl celý text.
Řetězce Java jsou nezměnitelné
V Javě jsou řetězce neměnné . To znamená, že jakmile vytvoříme řetězec, nemůžeme jej změnit.
Abyste tomu porozuměli hlouběji, zvažte příklad:
// create a string String example = "Hello! ";
Zde jsme vytvořili řetězcovou proměnnou s názvem příklad. Proměnná obsahuje řetězec „Hello!“.
Nyní předpokládejme, že chceme změnit řetězec.
// add another string "World" // to the previous tring example example = example.concat(" World");
Zde používáme concat()
metodu k přidání dalšího řetězce World do předchozího řetězce.
It looks like we are able to change the value of the previous string. However, this is not true
.
Let's see what has happened here,
- JVM takes the first string "Hello! "
- creates a new string by adding "World" to the first string
- assign the new string "Hello! World" to the example variable
- the first string "Hello! " remains unchanged
Creating strings using the new keyword
So far we have created strings like primitive types in Java.
Since strings in Java are objects, we can create strings using the new
keyword as well. For example,
// create a string using the new keyword String name = new String("Java String");
In the above example, we have created a string name using the new
keyword.
Here, when we create a string object, the String()
constructor is invoked. To learn more about constructor, visit Java Constructor.
Note: The String
class provides various other constructors to create strings. To learn more, visit Java String (official Java documentation).
Example: Create Java Strings using the new keyword
class Main ( public static void main(String() args) ( // create a string using new String name = new String("Java String"); System.out.println(name); // print Java String ) )
Create String using literals vs new keyword
Now that we know how strings are created using string literals and the new
keyword, let's see what is the major difference between them.
In Java, the JVM maintains a string pool to store all of its strings inside the memory. The string pool helps in reusing the strings.
While creating strings using string literals, the value of the string is directly provided. Hence, the compiler first checks the string pool to see if the string already exists.
- Pokud řetězec již existuje , nový řetězec se nevytvoří. Místo toho nový odkaz ukazuje na existující řetězec.
- Pokud řetězec neexistuje , vytvoří se nový řetězec.
Avšak při vytváření řetězce pomocí nové klíčové slovo , není přímo za předpokladu, že hodnota řetězce. Proto je nový řetězec vytvářen neustále.