Explicación súper detallada de la cadena Java

Tabla de contenido

1.API

1.1 Descripción general de la API

2. cuerda

2.1 Descripción general de cadenas

2.2 Constructor de cadenas

2.3 Características de los objetos String

2.4 Comparación de cadenas

2.5 Métodos en cadena

3. Constructor de cadenas

3.1 Descripción general de StringBuilder

3.2 Método de construcción de StringBuilder

 3.3 Suma e inversión de StringBuilder

3.4 Conversión entre StringBuilder y String

 3.5 Métodos en StringBuilder

1.API

1.1 Descripción general de la API

API (Interfaz de programación de aplicaciones): interfaz de programación de aplicaciones. Estas son funciones predefinidas diseñadas para brindar a las aplicaciones y a los desarrolladores la capacidad de acceder a un conjunto de rutinas basadas en una pieza de software o hardware sin tener que acceder al código fuente o comprender los detalles del funcionamiento interno .

JavaAPI: se refiere a las diversas clases funcionales de Java proporcionadas en el JDK. Estas clases encapsulan la implementación subyacente y no necesitamos preocuparnos por cómo se implementan estas clases.

2. cuerda

2.1 Descripción general de cadenas

La clase String representa cadenas. Todos los literales de cadena (como "abc") en un programa Java se implementan como instancias de esta clase.

Todas las cadenas entre comillas dobles en un programa Java son objetos de la clase String.

La clase String está en el paquete java.lang, por lo que no es necesario importar el paquete cuando se usa.

Características de la cuerda:

  • Las cadenas son inmutables, su valor no se puede cambiar después de la creación.
  • Aunque los valores de String son inmutables, se pueden compartir
  • Las cadenas son efectivamente equivalentes a las matrices de caracteres (char[]), pero el principio subyacente son las matrices de bytes (byte[]) (JDK8 y anteriores son matrices de caracteres, JDK9 y posteriores son matrices de bytes)

2.2 Constructor de cadenas

nombre del método ilustrar
cadena pública() Crea un objeto de cadena vacío sin contenido.
Cadena pública (char[] chs) Crear un objeto de cadena a partir del contenido de una matriz de caracteres
Cadena pública (byte [] bys) Cree un objeto de carácter basado en el contenido de la matriz de bytes
Cadena s = "abc" Cree un objeto de personaje mediante asignación directa y el contenido es abc

Por ejemplo:

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
	}
}

resultado:

2.3 Características de los objetos String

1. Para el objeto de cadena creado por nuevo, cada nuevo solicitará un espacio de memoria, aunque el contenido es el mismo, el valor de la dirección es diferente.

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

En el código anterior, JVM primero creará una matriz de caracteres y luego habrá una nueva dirección cada vez que sea nueva, pero el contenido de la cadena al que hacen referencia s1 y s2 es el mismo.

2. Siempre que la cadena de caracteres proporcionada en forma de "" sea la misma (orden y mayúsculas y minúsculas), no importa cuántas veces aparezca en el código del programa, la JVM solo creará un objeto String y lo mantendrá en la cadena. piscina

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

En el código anterior, para la primera línea de código, JVM creará un objeto String en el grupo de cadenas y se referirá a s3, y la segunda línea permitirá que s4 se refiera directamente al objeto String en el grupo de cadenas, es decir, son esencialmente el mismo objeto

2.4 Comparación de cadenas

Utilice == para comparar
tipos básicos: compare si los valores de los datos son iguales

Tipo de referencia: la comparación es si el valor de la dirección es el mismo

String es un objeto, compara si el contenido es el mismo, se implementa mediante un método, igual ()

público booleano igual (0bject anObject): compara esta cadena con el objeto especificado. Como estamos comparando objetos de cadena, el parámetro pasa una cadena directamente

Por ejemplo:

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));

	}
}

resultado:

Ejemplo 2: atravesar una cadena

public char charAt (índice int): devuelve el valor de carácter en el índice especificado, y el índice de la cadena también comienza desde 0

Atravesando la cuerda, en segundo lugar, se puede obtener la longitud de la cuerda.

public int length(): devuelve la longitud de esta cadena

La longitud de la matriz: nombre de la matriz.longitud
La longitud de la cadena: cadena objeto.longitud()

 

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) + " ");
		}
	}
}

resultado:

 Ejemplo 3: contar el número de caracteres

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 + "位");
	}
}

resultado:

 Ejemplo 4: concatenar cadenas

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("]");
	}
}

resultado:

 Ejemplo 5: inversión de cuerdas

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)+" ");
		}
	}
}

resultado:

2.5 Métodos en cadena

nombre del método ilustrar
público booleano es igual (Objeto y Objeto) Comparar el contenido de las cadenas, distinguiendo estrictamente entre mayúsculas y minúsculas (nombre de usuario y contraseña)
char público charAt (índice int) Devuelve el valor del carácter en el índice especificado.
longitud int pública() Devuelve la longitud de esta cadena.

3. Constructor de cadenas

3.1 Descripción general de StringBuilder

Si se concatenan cadenas, se construirá un nuevo objeto String cada vez que se concatenen, lo que lleva mucho tiempo y desperdicia espacio de memoria, y esta operación es inevitable. Entonces, ¿existe una mejor manera de resolver este problema? La respuesta es sí, podemos resolver este problema a través de la clase StringBuilder proporcionada por Java.

StringBuilder es una clase de cadena variable. Podemos considerarla como un contenedor. La variable aquí significa que el contenido del objeto StringBuilder es variable.

La diferencia entre String y StringBuilder

  • Cadena: el contenido es inmutable
  • StringBuilder: el contenido es mutable

3.2 Método de construcción de StringBuilder

nombre del método ilustrar
constructor de cadenas público() Crea un objeto de cadena mutable vacío sin contenido
StringBuilder público (cadena de cadena) Cree objetos de cadena mutables según el contenido de la cadena

 Por ejemplo:

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());// 长度

	}
}

resultado:

 3.3 Suma e inversión de StringBuilder

nombre del método ilustrar
Anexo público de StringBuilder (cualquier tipo) Agregar datos y devolver el objeto en sí.
reversa pública StringBuilder() devuelve la secuencia inversa de caracteres

Por ejemplo:

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);

	}
}

resultado:

3.4 Conversión entre StringBuilder y String

1. Convierta StringBuilder en String
public String toString(): Convierta StringBuilder en String mediante toString()
2. Convierta String en StringBuilder:

public StringBuilder (String s): convierte String en StringBuilder mediante el método de construcción

Por ejemplo:

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);
	}
}

resultado:

 Ejemplo 1: concatenar cadenas

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;
	}
}

resultado:

Ejemplo 2: inversión de cuerdas

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();
	}
}

resultado:

 3.5 Métodos en StringBuilder

nombre del método ilustrar
Anexo público de StringBuilder (cualquier tipo) Agregar datos y devolver el objeto en sí.
reversa pública StringBuilder() devuelve la secuencia inversa de caracteres
cadena pública a cadena () Convertir StringBuilder a String mediante toString()

Supongo que te gusta

Origin blog.csdn.net/m0_52896041/article/details/132120266
Recomendado
Clasificación