String, StringBuffer y StringBuilder

https://www.journaldev.com/538/string-vs-stringbuffer-vs-stringbuilder

https://stackabuse.com/string-vs-stringbuilder-vs-stringbuffer-in-java/

https://www.javatpoint.com/StringBuffer-class

https://www.javatpoint.com/StringBuilder-class

Ejemplo funciones de cadena:

String s = "JavadesdeCero";
		// o String s= new String ("JavadesdeCero");
		// Devuelve la cantidad de caracteres en la Cadena.
		System.out.println("String length = " + s.length());
		// Devuelve el carácter en el índice i.
		System.out.println("Character at 3rd position = " + s.charAt(3));
		// Devuelve la subcadena del carácter índice i-ésimo
		// al final de la cadena
		System.out.println("Substring " + s.substring(3));
		// Devuelve la subcadena del índice i a j-1.
		System.out.println("Substring  = " + s.substring(2, 5));
		// Concatena string2 hasta el final de string1.
		String s1 = "Java";
		String s2 = "desdeCero";
		String s3="Ja";
		s3+="va";
		System.out.println(s1==s3);
		System.out.println(s1.equals(s3));
		System.out.println(s1.compareTo(s3));
		System.out.println("String concatenado  = " + s1.concat(s2));
		// Devuelve el índice dentro de la cadena de
		// la primera aparición de la cadena especificada.
		String s4 = "Java desde Cero";
		System.out.println("Índice de Cero: " + s4.indexOf("Cero"));
		// Devuelve el índice dentro de la cadena de
		// la primera aparición de la cadena especificada,
		// comenzando en el índice especificado.
		System.out.println("Índice de a  = " + s4.indexOf('a', 4));
		// Comprobando la igualdad de cadenas
		Boolean out = "Java".equals("java");
		System.out.println("Comprobando la igualdad: " + out);
		out = "Java".equals("Java");
		System.out.println("Comprobando la igualdad: " + out);
		out = "Java".equalsIgnoreCase("jaVA");
		System.out.println("Comprobando la igualdad: " + out);
		int out1 = s1.compareTo(s2);
		System.out.println("Si s1 = s2: " + out1);
		// Conversión de cases
		String palabra1 = "JavadesdeCero";
		System.out.println("Cambiando a minúsculas: " + palabra1.toLowerCase());
		// Conversión de cases
		String palabra2 = "JavadesdeCero";
		System.out.println("Cambiando a MAYÚSCULAS: " + palabra1.toUpperCase());
		// Recortando la palabra
		String word4 = " JavadesdeCero ";
		System.out.println("Recortando la palabra: " + word4.trim());
		// Reemplazar caracteres
		String str1 = "YavadesdeCero";
		System.out.println("String Original: " + str1);
		String str2 = "YavadesdeCero".replace('Y', 'J');
		System.out.println("Reemplazando Y por J -> " + str2);

Ejemplos de StringBuffer:

// Siempre es con constructor
		StringBuffer sb=new StringBuffer("Hola ");
		// Añadir cadenas a una cadena con append
		sb.append("que tal"); 
		// Ni StringBuffer ni StringBuilder tienen el operador +
		//sb+=" Mu bien";
		System.out.println(sb);
		// Inserta 'Java' en la posición 1 : HJavaola que tal
		sb.insert(1,"Java");  
		System.out.println(sb);
		// Reemplaza lo que hay entre las posiciones 4 y 6 con '###'
		// El resultado es HJav###la que tal
		sb.replace(4,6,"###");  
		System.out.println(sb);
		// Borra lo que hay entre las posiciones 1 y 3: Hv###la que tal
		sb.delete(1,3);  
		System.out.println(sb);
		// Invertir cadena: lat euq al###vH
		sb.reverse();  
		System.out.println(sb);
		
		String nombre="Eva Pi";
		
		StringBuffer temp=new StringBuffer(nombre);
		nombre=temp.reverse().toString();
		System.out.println(nombre);

Ejemplos de StringBuilder:

	// Creo una cadena con el constructor
		StringBuilder sb = new StringBuilder("Hola ");
		// Añado con append (nunca con el operador +)
		sb.append("que tal");
		System.out.println(sb);
		// Inserto 'Java' en la posición 1
		sb.insert(1, "Java");
		System.out.println(sb);
		// Reemplazo entre la posición 4 y 6 con '###'
		sb.replace(4, 6, "###");
		System.out.println(sb);
		// Elimino lo que hay entre 1 y 3
		sb.delete(1, 3);
		System.out.println(sb);
		// Invierto la cadena
		sb.reverse();
		System.out.println(sb);

		String nombre = "Eva Pi";

		StringBuilder temp = new StringBuilder(nombre);
		nombre = temp.reverse().toString();
		System.out.println(nombre);