Explication super détaillée de la chaîne Java

Table des matières

1. API

1.1 Présentation de l'API

2. Chaîne

2.1 Aperçu des chaînes

2.2 Constructeur de chaînes

2.3 Caractéristiques des objets String

2.4 Comparaison des chaînes

2.5 Méthodes en chaîne

3. Générateur de chaînes

3.1 Présentation de StringBuilder

3.2 Méthode de construction de StringBuilder

 3.3 Ajout et inversion de StringBuilder

3.4 Conversion entre StringBuilder et String

 3.5 Méthodes dans StringBuilder

1. API

1.1 Présentation de l'API

API (Application Programming Interface) : interface de programmation d'applications. Il s'agit de fonctions prédéfinies conçues pour fournir aux applications et aux développeurs la possibilité d'accéder à un ensemble de routines basées sur un logiciel ou un matériel sans avoir à accéder au code source ou à comprendre les détails du fonctionnement interne .

JavaAPI : fait référence aux différentes classes Java fonctionnelles fournies dans le JDK. Ces classes encapsulent l'implémentation sous-jacente, et nous n'avons pas besoin de nous soucier de la façon dont ces classes sont implémentées.

2. Chaîne

2.1 Aperçu des chaînes

La classe String représente des chaînes. Tous les littéraux de chaîne (tels que « abc ») dans un programme Java sont implémentés en tant qu'instances de cette classe.

Toutes les chaînes entre guillemets dans un programme Java sont des objets de la classe String

La classe String se trouve sous le package java.lang, il n'est donc pas nécessaire d'importer le package lors de son utilisation.

Caractéristiques des chaînes :

  • Les chaînes sont immuables, leur valeur ne peut pas être modifiée après la création
  • Bien que les valeurs String soient immuables, elles peuvent être partagées
  • Les chaînes sont effectivement équivalentes aux tableaux de caractères (char[]), mais le principe sous-jacent est celui des tableaux d'octets (byte[]) (JDK8 et avant sont des tableaux de caractères, JDK9 et versions ultérieures sont des tableaux d'octets)

2.2 Constructeur de chaînes

nom de la méthode illustrer
chaîne publique() Crée un objet chaîne vide sans contenu
chaîne publique (char[] chs) Créer un objet chaîne à partir du contenu d'un tableau de caractères
chaîne publique (octet [] bys) Créer un objet caractère basé sur le contenu du tableau d'octets
Chaîne s = "abc" Créez un objet personnage par affectation directe et le contenu est abc

Par exemple:

public class Demo05 {
	public static void main(String[] args) {
		// public String() 创建一个空白字符串对象,不含有任何内容
		String s1 = new String();
		System.out.println("s1:" + s1); // 无内容

		// public String(char[] chs) 根据字符数组的内容,来创建字符串对象
		char[] c = { 'a', 'b', 'c' };
		String s2 = new String(c);
		System.out.println("s2:" + s2);// abc

		// public String(byte[] bys) 根据字节数组的内容,来创建字符里对象
		byte[] b = { 97, 98, 99 };
		String s3 = new String(b);
		// 97 98 99对应的底层字符分别为a b c 。
		// a b c 三个字符在计算机底层存储的是数据分别为97 98 99的值
		System.out.println("s3:" + s3);// abc

		// String s = “abc" 直接赋值的方式创建字符用对象,内容就是abc
		String s4 = "abc";
		System.out.println("s4:" + s4);// abc
	}
}

résultat:

2.3 Caractéristiques des objets String

1. Pour l'objet chaîne créé par new, chaque new s'appliquera à un espace mémoire. Bien que le contenu soit le même, la valeur de l'adresse est différente.

char[] chs ={'a','b','c'};
String s1 = new String(chs);
String s2 = new String(chs);

Dans le code ci-dessus, JVM créera d'abord un tableau de caractères, puis il y aura une nouvelle adresse à chaque fois, mais le contenu de la chaîne référencé par s1 et s2 est le même.

2. Tant que la chaîne de caractères donnée sous la forme " " est la même (ordre et casse), quel que soit le nombre de fois où elle apparaît dans le code du programme, la JVM créera uniquement un objet String et le conservera dans la chaîne. piscine

String s3 = "abc";
String s4 = "abc";

Dans le code ci-dessus, pour la première ligne de code, JVM créera un objet String dans le pool de chaînes et fera référence à s3, et la deuxième ligne laissera s4 se référer directement à l'objet String dans le pool de chaînes, c'est-à-dire : ils sont essentiellement le même objet

2.4 Comparaison des chaînes

Utilisez == pour comparer
les types de base : comparez si les valeurs des données sont les mêmes

Type de référence : la comparaison consiste à savoir si la valeur de l'adresse est la même

String est un objet, il compare si le contenu est le même, il est réalisé via une méthode, equals()

public boolean equals(0bject anObject) : compare cette chaîne avec l'objet spécifié. Puisque nous comparons des objets chaîne, le paramètre transmet directement une chaîne

Par exemple:

public class Demo07 {
	public static void main(String[] args) {
		char[] c = { 'a', 'b', 'c' };
		String s1 = new String(c);
		String s2 = new String(c);

		String s3 = "abc";
		String s4 = "abc";

		System.out.println(s1 == s2);
		System.out.println(s1 == s3);
		System.out.println(s3 == s4);
		System.out.println("---------");
		System.out.println(s1.equals(s2));
		System.out.println(s1.equals(s3));
		System.out.println(s3.equals(s4));

	}
}

résultat:

Exemple 2 : Parcours d'une chaîne

public char charAt(int index) : renvoie la valeur char à l'index spécifié, et l'index de la chaîne commence également à 0

En parcourant la chaîne, deuxièmement, la longueur de la chaîne peut être obtenue

public int length() : renvoie la longueur de cette chaîne

La longueur du tableau : array name.length
La longueur de la chaîne : string object.length()

 

import java.util.Scanner;

public class Demo10 {
	public static void main(String[] args) {
		System.out.println("输入字符串");
		Scanner sc = new Scanner(System.in);
		String line = sc.next();
		// 获取字符串的每一个字符
		for (int i = 0; i < line.length(); i++) {
			System.out.print(line.charAt(i) + " ");
		}
	}
}

résultat:

 Exemple 3 : compter le nombre de caractères

import java.util.Scanner;

public class Demo06 {
	public static void main(String[] args) {
		System.out.println("输入字符串");
		Scanner sc = new Scanner(System.in);
		String line = sc.next();
		int a = 0;
		int b = 0;
		int c = 0;
		for (int i = 0; i < line.length(); i++) {
			if (line.charAt(i) >= '0' && line.charAt(i) <= '9') {
				a++;
			} else if (line.charAt(i) >= 'a' && line.charAt(i) <= 'z') {
				b++;
			} else if (line.charAt(i) >= 'A' && line.charAt(i) <= 'Z') {
				c++;
			}
		}
		System.out.println("数字有" + a + "位");
		System.out.println("小写字母有" + b + "位");
		System.out.println("大写字母有" + c + "位");
	}
}

résultat:

 Exemple 4 : concaténation de chaînes

public class Demo08 {
	public static void main(String[] args) {
		int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
		ToString(arr);
	}

	public static void ToString(int[] arr) {
		System.out.print("[");
		for (int i = 0; i < arr.length; i++) {
			if (i == arr.length - 1) {
				System.out.print(arr[i]);
			} else {
				System.out.print(arr[i] + ",");
			}
		}
		System.out.println("]");
	}
}

résultat:

 Exemple 5 : inversion de chaîne

import java.util.Scanner;

public class Demo09 {
	public static void main(String[] args) {
		System.out.println("输入字符串");
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		for (int i = s.length() - 1; i >= 0; i--) {
			System.out.print(s.charAt(i)+" ");
		}
	}
}

résultat:

2.5 Méthodes en chaîne

nom de la méthode illustrer
public booléen égal (Objet anObject) Comparez le contenu des chaînes, strictement sensible à la casse (nom d'utilisateur et mot de passe)
char public charAt (index int) Renvoie la valeur char à l'index spécifié
public int longueur() Renvoie la longueur de cette chaîne

3. Générateur de chaînes

3.1 Présentation de StringBuilder

Si des chaînes sont concaténées, un nouvel objet String sera construit à chaque fois qu'elles sont concaténées, ce qui prend du temps et gaspille de l'espace mémoire, et cette opération est inévitable. Alors, existe-t-il une meilleure façon de résoudre ce problème ? La réponse est oui, nous pouvons résoudre ce problème grâce à la classe StringBuilder fournie par Java.

StringBuilder est une classe de chaîne variable. Nous pouvons la considérer comme un conteneur. La variable ici signifie que le contenu de l'objet StringBuilder est variable.

La différence entre String et StringBuilder

  • String : le contenu est immuable
  • StringBuilder : le contenu est mutable

3.2 Méthode de construction de StringBuilder

nom de la méthode illustrer
public StringBuilder() Crée un objet chaîne mutable vide sans contenu
public StringBuilder (chaîne de caractères) Créer des objets chaîne mutables en fonction du contenu de la chaîne

 Par exemple:

public class Demo11 {
	public static void main(String[] args) {
		// public StringBuilder() 创建一个空白可变字符串对象,不含有任何内容
		StringBuilder s = new StringBuilder();
		System.out.println("s:" + s);
		System.out.println("s.length()" + s.length());// 长度
		// public StringBuilder(String str) 根据字符串的内容,来创建可变字符串对象
		StringBuilder s1 = new StringBuilder("abc");
		System.out.println("s1:" + s1);
		System.out.println("s1.length()" + s1.length());// 长度

	}
}

résultat:

 3.3 Ajout et inversion de StringBuilder

nom de la méthode illustrer
ajout public StringBuilder (n'importe quel type) Ajouter des données et renvoyer l'objet lui-même
public StringBuilder inverse() renvoie la séquence de caractères inverse

Par exemple:

public class Demo12 {
	public static void main(String[] args) {
		// public StringBuilder append(任意类型) 添加数据,并返回对象本身
		StringBuilder s = new StringBuilder();
		StringBuilder ss = new StringBuilder();
		// StringBuilder s2 = s.append("abcd");
		// System.out.println("s:" + s);
		// System.out.println("s2:" + s2);//s2:abcd
		// System.out.println("--------");
		s.append("abc");
		s.append("def");
		s.append("ghi");
		s.append(123456);
		System.out.println(s);
		System.out.println("--------");
		// 链式编程
		ss.append("abc").append("def").append("ghi").append(123456);
		System.out.println(ss);
		System.out.println("-----------");

		// public StringBuilder reverse() 返回相反的字符序列
		s.reverse();
		ss.reverse();
		System.out.println(s);
		System.out.println(ss);

	}
}

résultat:

3.4 Conversion entre StringBuilder et String

1. Convertir StringBuilder en String
public String toString() : Convertir StringBuilder en String via toString()
2. Convertir String en StringBuilder :

public StringBuilder(String s) : convertir String en StringBuilder via la méthode de construction

Par exemple:

public class Demo14 {
	public static void main(String[] args) {
		// 1.StringBuilder转换为 String
		StringBuilder s = new StringBuilder();
		s.append("hello");
		String st = s.toString();
		System.out.println(st);

		// 2.String 转换为 StringBuilder:
		String st2 = "hello123";
		StringBuilder s2 = new StringBuilder(st2);
		System.out.println(s2);
	}
}

résultat:

 Exemple 1 : concaténation de chaînes

public class Demo15 {
	public static void main(String[] args) {
		int[] arr = { 1, 2, 3 };
		String s = ToStirng(arr);
		System.out.println(s);
	}

	public static String ToStirng(int[] arr) {
		StringBuilder sb = new StringBuilder();
		sb.append("[");
		for (int i = 0; i < arr.length; i++) {
			if (i == arr.length - 1) {
				sb.append(arr[i]);
			} else {
				sb.append(arr[i]).append(",");
			}
		}
		sb.append("]");
		String s = sb.toString();
		return s;
	}
}

résultat:

Exemple 2 : inversion de chaîne

public class Demo13 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("输入字符串");
		String line = sc.next();
		String s = info(line);
		System.out.println(s);
	}

	public static String info(String s) {
		// StringBuilder sb=new StringBuilder();
		// sb.reverse();
		// String ss = sb.toString();
		// return ss;
		return new StringBuilder(s).reverse().toString();
	}
}

résultat:

 3.5 Méthodes dans StringBuilder

nom de la méthode illustrer
ajout public StringBuilder (n'importe quel type) Ajouter des données et renvoyer l'objet lui-même
public StringBuilder inverse() renvoie la séquence de caractères inverse
chaîne publique versString() Convertir StringBuilder en String par toString()

Je suppose que tu aimes

Origine blog.csdn.net/m0_52896041/article/details/132120266
conseillé
Classement