Java >> Tutoriel Java >  >> Tag >> String

Pourquoi la chaîne est-elle immuable ou finale en Java ?

Nous allons d'abord comprendre les concepts de mutabilité et d'immuabilité.

1) Mutable

Lorsque nous créons un objet. Si nous sommes en mesure de modifier l'objet existant , ce comportement n'est rien d'autre que la nature mutabilité de StringBuffer.

La classe StringBuffer est de nature immuable.

Exemple :

class mutable{
	public static void main(String[] args){
		StringBuffer sb = new StringBuffer("Preeti");
		sb.append("Jain");
		System.out.println(sb);
	}
}

Sortie

D:\Java Articles>java mutable
PreetiJain

Dans l'exemple ci-dessus, un seul objet est créé et chaque fois que nous effectuons des modifications dans un objet existant, les modifications seront reflétées. Cela signifie que nous obtiendrons un résultat comme PreetiJain .

2) Immuable

Lorsque nous créons un objet. Si nous ne sommes pas en mesure de modifier l'objet existant , ce comportement n'est rien d'autre que la nature immuable de String.

La classe String est de nature immuable.

Exemple :

class immutable{
	public static void main(String[] args){
		String s = new String("Preeti");
		s.concat("Jain");
		System.out.println(s);
	}
}

Sortie

D:\Java Articles>java immutable
Preeti

Dans l'exemple ci-dessus, un seul objet est créé et pointe vers une chaîne d'origine et chaque fois que nous effectuons des modifications dans un objet existant, les modifications ne seront pas reflétées. Cela signifie que nous obtiendrons un résultat comme Preeti .

Pourquoi String est immuable ?

Dans le cas de String, plusieurs références peuvent pointer vers le même objet. Si des modifications effectuées par quelqu'un font référence, d'autres références seront affectées. Ainsi, String est de nature immuable.

Pour stocker l'objet chaîne en tant que clé dans la table de hachage chaque fois que nous essayons d'accéder à la valeur clé par clé, c'est pourquoi la chaîne est de nature immuable. Chaque fois que vous modifiez un objet existant, créez un objet à la place en modifiant l'objet existant.

Exemple :

import java.util.*;

class Immutability{
	public static void main(String[] args){
		Hashtable ht = new Hashtable();
		ht.put("preeti",10);
		ht.put("Rahul",20);
		ht.put("Rajeev",30);
		ht.put("Avinash",40);

		int getValue = (int)ht.get("preeti");
		System.out.println("value of 1st key value :"+getValue);
	}
}

Sortie

D:\Java Articles>java Immutability
value of 1st key value :10

Balise Java