Cos'è la stringa in Java?
Nella programmazione, le stringhe sono molto comunemente utilizzate. La stringa in Java è un oggetto che rappresenta una sequenza di caratteri supportata da un array di caratteri. La classe String è immutabile in Java e implementa le interfacce Comparable , Serializable e CharSequence . Facciamo un esempio per capire.String str = "string"
Qui str è la sequenza di 6 caratteri che sono s, t, r, i, n e g.
Indice della matrice di caratteri | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
Valore | S | T | R | io | N | G |
Indirizzo di memoria | 0x12824 | 0x12825 | 0x12826 | 0x12827 | 0x12828 | 0x12829 |
Modi di inizializzazione delle stringhe
Esistono due modi per inizializzare una stringa.- Stringhe letterali
- Nuovo operatore
Stringa letterale
Il modo più semplice e diretto per dichiarare una stringa viene utilizzato nell'esempio precedente. Ogni volta che il compilatore interpreta una stringa letterale, viene sempre convertita nell'oggetto String.String str = "string";
Nuovo operatore
Possiamo anche inizializzare una stringa utilizzando l'operatore new.String strNew = new String("using new operator");
Esempio
import java.io.*;
import java.lang.*;
class StringInitializationExample {
public static void main(String[] args)
{
//declare java string with a string literal
String str = "a string literal";
System.out.println("String str = " + str);
//declare string using new operator
String strNew = new String("using new operator");
System.out.println("String strNew = " + strNew);
}
}
Produzione
String str = una stringa letterale String strNew = utilizza l'operatore new
String contro StringBuilder contro StringBuffer
Abbiamo già discusso cos'è la classe String, quindi discuteremo delle altre due classi e del loro scopo, insieme al motivo per cui Java ha introdotto queste due classi quando dispone già della classe String per noi. È meglio andare all'inizio e fare una revisione della classe String per comprenderla meglio.Motivo
Poiché sappiamo che l'oggetto della classe String è immutabile, quindi ogni volta che dobbiamo modificare la stringa non muta mai l'oggetto corrente ma il valore modificato viene sempre memorizzato come un nuovo oggetto String. Quindi, se dobbiamo modificare il valore, ancora e ancora, anche la memoria verrà consumata. Mantenendo questo punto Java ci ha fornito le classi StringBuilder e StringBuffer . Ora vedremo come sono utili in questo scenario.StringBuffer
String è una rappresentazione di una sequenza immutabile di caratteri ma StringBuffer è una sequenza mutabile di caratteri . Utilizza la maggior parte dei metodi della classe String insieme ad alcuni propri per modificare il contenuto e la sequenza dei caratteri. È thread-safe perché i suoi metodi sono sincronizzati per l'utilizzo da parte di più thread, mantenendo l'ordine seriale. Implementa le interfacce Serializable , Appendable e CharSequence .Sintassi
StringBuffer str = new StringBuffer("Happy Java Programming");
StringBuilder
StringBuilder rappresenta anche la sequenza mutabile di caratteri. Fornisce un'API compatibile con la classe StringBuffer ma non è thread-safe. Pertanto, quando non sono coinvolti più thread, è meglio utilizzare la classe StringBuilder poiché in molti casi è più veloce della classe StringBuffer . I metodi chiave di questa classe sono insert e append. Implementa inoltre le interfacce Serializable , Appendable e CharSequence .Sintassi
StringBuilder str = new StringBuilder("Happy Java Programming");
Operazioni sulle stringhe
In Java possiamo eseguire operazioni sulle stringhe come Concatenazione , Confronto , Divisione , Ricerca della lunghezza , Sostituzione di stringhe e così via.Metodi di stringa
La classe Java String fornisce vari metodi per manipolare le stringhe o eseguire le operazioni sopra discusse. Diamo un'occhiata alla tabella seguente per alcuni di questi metodi di stringa.Metodi | Descrizione |
---|---|
Char charAt(int indice) | Restituisce il valore char nell'indice fornito. |
Stringa concat(String str) | Restituisce una stringa combinando una stringa specificata alla fine di questa stringa. |
booleano contiene(CharSequence s) | Restituisce vero se la stringa contiene una sequenza specificata di valori di caratteri. |
contenuto booleanoUguale(CharSequence cs) | Corrisponde alla stringa con la sequenza di caratteri fornita. |
contenuto booleanoEquals(StringBuffer sb) | Corrisponde alla stringa con il buffer di stringa fornito. |
booleano terminaCon(suffisso stringa) | Confronta la fine della stringa con il suffisso fornito. |
booleano è uguale a(Oggetto anOggetto) | Corrisponde alla stringa con l'oggetto fornito. |
booleano equivale a IgnoreCase(String anotherString) | Questo metodo confronta due stringhe senza prendere in considerazione la distinzione tra maiuscole e minuscole. |
Formato stringa statica (formato stringa, oggetto... argomenti) | Restituisce la stringa formattata utilizzando il formato e gli argomenti forniti. |
byte getBytes() | Questo metodo utilizza il set di caratteri predefinito della piattaforma per codificare la stringa in una sequenza di byte, che viene quindi archiviata in un nuovo array di byte. |
void getChars(int inizio, int fine, char[] dst, int dstBegin) | Copia i caratteri dalla stringa nell'array di caratteri di destinazione. |
int hashCode() | Restituisce il codice hash per la stringa. |
int indiceOf(int ch) | Restituisce l'indice del carattere specificato che ricorre per primo nella stringa. |
int indiceOf(int ch, int daIndice) | Restituisce l'indice per il carattere specificato che ricorre per primo a partire dall'indice fornito in questa stringa. |
int indiceOf(String str) | Cerca la sottostringa fornita nella stringa e restituisce l'indice alla prima occorrenza. |
int indiceOf(String str, int daIndice) | Inizia a cercare la sottostringa fornita nella stringa dall'indice specificato e restituisce l'indice alla prima occorrenza. |
Stagista String() | Questo metodo restituisce la rappresentazione canonica della stringa. |
int lastIndexOf(int ch) | Questo metodo cerca il carattere fornito nella stringa e restituisce l'indice dell'ultima occorrenza. |
int lastIndexOf(int ch, int fromIndex) | Questo metodo cerca all'indietro dall'indice fornito il carattere fornito nella stringa e restituisce l'indice dell'ultima occorrenza. |
int lastIndexOf(String str) | Questo metodo cerca la sottostringa fornita nella stringa e restituisce l'indice dell'ultima occorrenza. |
int lastIndexOf(String str, int fromIndex) | Questo metodo cerca all'indietro dall'indice fornito la sottostringa fornita nella stringa e restituisce l'indice dell'ultima occorrenza. |
lunghezza intera() | Questo metodo restituisce la lunghezza della stringa. |
corrispondenze booleane (stringa regex) | Restituisce vero o falso abbinando la stringa all'espressione regolare fornita. |
Sostituisci stringa (char oldValue, char newValue) | Questo metodo restituisce una stringa dopo aver sostituito tutti i valori oldValue forniti con newValue nella stringa. |
String[] split(String regex) | Questo metodo trova tutte le corrispondenze in base all'espressione regolare fornita nella stringa e la divide attorno a queste corrispondenze. |
booleano iniziaCon(Prefisso stringa) | Restituisce vero o falso testando la stringa che inizia con il prefisso fornito. |
String sottostringa(int BeginIndex) | Questo metodo restituisce una stringa che è la sottostringa di questa stringa. |
Stringa inLowerCase() | Converte tutti i caratteri della stringa in minuscolo utilizzando le regole della locale predefinita. |
Taglio delle corde() | Questo metodo rimuove tutti gli spazi iniziali e finali dalla stringa e la restituisce. |
stringa statica valueOf(char c) | Restituisce la rappresentazione di stringa dell'argomento char. |
Esempio
import java.io.*;
import java.lang.*;
class JavaStringsExample {
public static void main(String[] args) {
//create a string
String greeting = "Hello! World";
System.out.println("String: " + greeting);
//getting the length of greeting object
int length = greeting.length();
System.out.println("Length: " + length);
//create first string
String first = "Java ";
System.out.println("First String: " + first);
//create second string
String second = "Programming";
System.out.println("Second String: " + second);
//joining two strings
String joinedString = first.concat(second);
System.out.println("Joined String: " + joinedString);
String jpf = "Java programming";
String jps = "Java programming";
String jpt = "Python programming";
//compare jpf and jps strings
boolean result1 = jpf.equals(jps);
System.out.println("Strings jpf and jps are equal: " + result1);
//compare jpf and jpt strings
boolean result2 = jpf.equals(jpt);
System.out.println("Strings jpf and jpt are equal: " + result2);
//converting jpf to uppercase
System.out.println("Upper case jpf: " + jpf.toUpperCase());
//replacing g character with v in jpf
System.out.println("Replacing g with v in jpf: "+jpf.replace("g", "v"));
}
}
Produzione
Stringa: Ciao! Lunghezza mondo: 12 Prima stringa: Java Seconda stringa: Programmazione Stringa unita: Programmazione Java Le stringhe jpf e jps sono uguali: true Le stringhe jpf e jpt sono uguali: false Maiuscolo jpf: PROGRAMMAZIONE JAVA Sostituzione di g con v in jpf: java provramminv