0% encontró este documento útil (0 votos)
32 vistas

JF 4 4 SG Esp

Cargado por

Ivan Suarez
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
32 vistas

JF 4 4 SG Esp

Cargado por

Ivan Suarez
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 34

1

Java Fundamentals
4-4:
Strings

Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios.

2
Objetivos
• Esta lección abarca los siguientes temas:
−Crear una instancia (crear) un String (cadena)
−Describir qué ocurre cuando se modifica un String
−Usar los operadores + y += para concatenar Strings
−Interpretar secuencias de escape en literales de String

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 3
comerciales de sus respectivos propietarios.

3
Descripción general
• Esta lección abarca los siguientes temas:
−Reconocer la diferencia entre un String y un tipo de datos
char primitivo
−Probar Strings con el método compareTo() y equals()
−Describir por qué el operador == no siempre funciona al
probar la igualdad del String
−Usar métodos de String length(), substring(), indexOf() y
charAt()

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 4
comerciales de sus respectivos propietarios.

4
¿Qué es un String?
• Un String es un objeto que contiene una secuencia de
caracteres
• La declaración y la creación de una instancia de String
es muy parecida a la variable de cualquier otro objeto
• Sin embargo, existen diferencias:
−Se puede crear una instancia (creación) sin utilizar la palabra
clave nueva
−Son inmutables
• Una vez creada la instancia, son
definitivas y no se pueden cambiar

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 5
comerciales de sus respectivos propietarios.

5
Modificación de un String
• Si intenta modificar un String, no se modifica, se crea
un nuevo objeto de String
• Como nuevo programador, debe notar esta diferencia.
• Sin embargo, es importante en los sistemas reales
donde el tiempo de procesamiento es un elemento
clave en el diseño del programa

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 6
comerciales de sus respectivos propietarios.

6
Ejemplo de operaciones de Strings
public class StringOperations{
public static void main(String[] args){
String string1 = "Hello";
String string2="Lisa";
String string3=""; //empty String or null
string3="How are you ".concat(string2);
System.out.println("string3: "+ string3);
//get length
System.out.println("Length: "+ string1.length();
//get substring beginning with character 0, up to, but
//not including character 5
System.out.println("Sub: "+ string3.substring(0,5));
//uppercase
System.out.println("Upper: "+string3.toUpperCase());
}//end method main
}//end class StringOperations

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 7
comerciales de sus respectivos propietarios.

7
Plantilla de la clase
• Usar la siguiente clase para insertar ejemplos de esta
sección

import java.util.Scanner;

public class StringPractice{


public static void main(String[] args){
//paste practice code here
}//end method main

}//end class StringPractice

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 8
comerciales de sus respectivos propietarios.

8
Creación de una instancia de String
• Los Strings son tipos de referencia de objeto
• Se les puede crear una instancia de dos maneras:
−El nuevo operador
−Literales del String
−No existe diferencia entre los siguientes Strings
−Ambos métodos de creación de instancia crean objetos
idénticos

String s1 = new String("abc"); // new operator


String s2 = "abc"; // String literals

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 9
comerciales de sus respectivos propietarios.

9
Referencias de Strings
• Cuando crea una referencia a un Objeto o String, el
objeto no necesariamente existe aún
• En el código a continuación, ya que el nombre no se
encuentra inicializado, el programa no se compilará
• El nombre de la variable es un puntero no válido

String name;
System.out.println("My name is " + name);

Name = null

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 10
comerciales de sus respectivos propietarios.

10
Refencias de String
• En este código, existe un objeto de String y el nombre
hace referencia a este
−El nombre de referencia name2 es null
−¿Cómo cambia la memoria esta línea?
name2 = null String name,name2;
name = "Mya";
name = Mya
name2 = name;

name name2 name2


name

Mya
Mya

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 11
comerciales de sus respectivos propietarios.

Una referencia en realidad guarda la dirección en la memoria en la que se encuentra el objeto.


Se guarda la misma dirección tanto de name como de name2 y, por lo tanto, hacen referencia
al mismo objeto, "Mya", en la memoria.

11
Refencias de String
• Al ejecutar esta línea de código, cambia la referencia
name2
name2 = name;

• La referencia name2 ahora se refiere al mismo objeto


que name

Objeto de
name String name2
Mya

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 12
comerciales de sus respectivos propietarios.

12
Refencias de String
• Al ejecutar estas líneas de código se crean dos
instancias de String Mya en la memoria
String name, name2;
name = "Mya";
name2 = "Mya";

• Aquí, el compilador JVM decide guardar espacio y


almacena únicamente un String Object que mantiene
el String Mya
Objeto de
String
name name2
Mya

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 13
comerciales de sus respectivos propietarios.

13
Refencias de String
• Si ejecutamos un programa muy similar, pero
solicitamos que el usuario ingrese los Strings,
obtenemos un resultado diferente
Scanner in= new Scanner(System.in);
String name, name2;
name=in.next();
name2=in.next();

• Si el usuario escribe Mya para ambos Strings, el


compilador efectivamente crea dos String Objects
diferentes Objeto de Objeto de
String String
name name2
Mya Mya

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 14
comerciales de sus respectivos propietarios.

14
Refencias de String
• Es muy difícil predecir cuando Java creará un nuevo
String o usará un objeto existente para un String que es
idéntico al nuevo String

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 15
comerciales de sus respectivos propietarios.

15
Concatenación de Strings
• Concatenar dos Strings juntos con los operadores + y
+=
• El símbolo + se usa para concatenar dos Strings juntos
• El símbolo += se usa para concatenar dos Strings juntos
y asignárselo a sí mismo en la misma operación
String s1 = "This is a ";
String s2 = "string";
String s3 = s1 + s2;
String s4 = "This is a " + s2;
String s1 += s2;

Concatenar significa enlazar elementos en una cadena o serie. La


concatenación de Strings es vincular dos o más Strings.

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 16
comerciales de sus respectivos propietarios.

Experimente con el operador += en una variable de tipo entero (X += 10;). Practique también con los
operadores -=, *=, /= e incluso %= para ver qué resultados devuelven con valores enteros.

16
Manipulación de Strings
• Cada vez que se modifica un String, se crea un nuevo
String en una nueva ubicación de la memoria y la
referencia se desplaza a la nueva ubicación
• Algunos Strings apuntarán al mismo objeto referencia
en la memoria
• Al realizar una modificación en un String que apunta a
la referencia compartida no se realiza la modificación
en los otros
• El que modifica apunta a la nueva dirección de la
memoria que contiene el String nuevo/modificado y
los otros aún apuntan al String original

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 17
comerciales de sus respectivos propietarios.

17
Ejemplo de concatenación de Strings
• ¿Cuál será el resultado de s1, s2, s3 y s4 al final de
estas sentencias?
String s1 = "This is a ";
String s2 = "string";
String s3 = s1 + s2;
String s4 = "This is a " + s2;
String s1 += s2;
System.out.println("s1: " + s1);
System.out.println("s2: " + s2);
System.out.println("s3: " + s3);
System.out.println("s4: " + s4);

• Ingrese estas sentencias en un programa Java y


verifique los resultados
• ¿Acertó los resultados?

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 18
comerciales de sus respectivos propietarios.

18
Secuencias de escape
• Las secuencias de escape en los literales del String
permiten que el usuario agregue caracteres que serán
mal interpretados por el compilador
• Por ejemplo, para incluir una comilla doble en su String,
el compilador interpretará la comilla doble como el
comienzo o el final de su String en lugar de incluirla
• Use la secuencia de escape \” para incluir una comilla
doble
String s1 = "This is an example of an escape.
\n And now we're on a new line. \n \t This is a tab."
String s2 = "\"This is a quote \"";
System.out.println(s1);
System.out.println(s2);

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 19
comerciales de sus respectivos propietarios.

19
Secuencias de escape comunes en Java
• A continuación encontrará una lista de algunas de las
secuencias comunes en Java
Secuencia de escape Representación OctalEscape Alternativo Representación
\" Comilla doble \u0022
\' Comilla simple \u0027
\\ Barra diagonal inversa \u005c
\t Pestaña horizontal \u0009
\n Avance de línea \u000a
\b Retroceso \u0008
\r Retorno de carro \u000d
\f Avance de página \u000c
Octal Escape Valor de Octal \u0000 a \u00ff

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 20
comerciales de sus respectivos propietarios.

20
Método compareTo
• Existen métodos que se pueden utilizar al comparar
Strings
−Método: s1.compareTo(s2)
−Se deberá usar al tratar de encontrar el orden lexicográfico de
dos Strings
−Devuelve un entero
−Si s1 es menor de s2, devuelve un ent < 0
−Si s1 es igual a s2, devuelve 0
−Si s1 es mayor que s2, devuelve un ent > 0

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 21
comerciales de sus respectivos propietarios.

El método compareTo() es necesario en los algoritmos de ordenación.

21
Método equals
• Existen métodos que se pueden utilizar al comparar
Strings
−Método: s1.equals(s2)
−Se debe utilizar solo cuando desea descubrir si dos Strings
son iguales
−Devuelve un valor booleano
−Si devuelve true, s1 es igual a s2
−Si devuelve false, s1 no es igual a s2

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 22
comerciales de sus respectivos propietarios.

22
Ejemplo de métodos compareTo y equals
• ¿Qué imprime este método compareTo?
String s1 = "abc";
String s2 = "cde";
System.out.println(s1.compareTo(s2));

• ¿Qué imprime este método equals?


String s1 = "abc";
String s2 = "ABC";
System.out.println(s1.equals(s2));

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 23
comerciales de sus respectivos propietarios.

23
Solución del ejemplo de métodos compareTo y equals
• Este método compareTo imprime un int menor que 0
String s1 = "abc";
String s2 = "cde";
System.out.println(s1.compareTo(s2));

• Este método equals imprime false


String s1 = "abc";
String s2 = "ABC";
System.out.println(s1.equals(s2));

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 24
comerciales de sus respectivos propietarios.

24
Comparación de Strings with ==
• Las variables primitivas se pueden comparar a ==
• Este método de comparación no siempre funciona con
Strings y se deberá evitar a menos que trate de comparar la
ubicación de la dirección de la memoria de dos objetos
String
• == compara los valores de referencia, no los valores
• Únicamente será true, si los dos objetos String apuntan al
mismo objeto de referencia
String s1 = "This is a String.";
String s2 = new String("This is a String.");
String s3 = "String.";
String s4 = "This is a " + s3;
System.out.println(s1 == s2);
System.out.println(s1 == s4);

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 25
comerciales de sus respectivos propietarios.

No use nunca == para ver si dos objetos String tienen el mismo valor. Esto generará errores de
lógica, es decir, código que se compila y ejecuta pero que no proporciona la respuesta correcta
todo el tiempo.
== compara las direcciones en las que el objeto se encuentra en la memoria, no los valores
reales en esa ubicación. Cuando se utiliza ==, podría tener dos objetos String con el mismo
valor que devuelven false.

25
Comparación de Strings with ==
• ¿Cuál imprimirá true en el siguiente ejemplo?
−s1 y s2 apuntarán al mismo objeto.
−Java nota que son iguales y hace lo mismo con la referencia
−s5 no apuntará al mismo objeto que s1.
−Se “genera” de una combinación de dos Strings y, por lo
tanto, se crea un nuevo objeto

String s1 = "This is a String.";


String s2 = "This is a String.";
String s3 = "This is ";
String s4 = "a String.";
String s5 = s3 + s4;

System.out.println(s1 == s2);
System.out.println(s1 == s5);

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 26
comerciales de sus respectivos propietarios.

26
Método útil de String: length()
• Método: s1.length()
• Devuelve la longitud o la cantidad de caracteres en s1
como int
• La longitud del String es un método de acceso
invocado en el objeto de un String que devolverá la
variable de longitud del String
String s1 = "This is a string.";
int n = s1.length();
//n is 17 because s1 has 17 characters

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 27
comerciales de sus respectivos propietarios.

Una cadena en Java puede tener una longitud de 0 - "". Esto se suele conocer como la cadena
vacía o la cadena nula.

27
Cada carácter del String incluye un índice
• Ya que los Strings son una representación de la
secuencia de caracteres, cada caracter de un String
tiene un índice
• Un índice es la referencia de una posición
• El primer carácter de un String tiene un índice de 0, el
segundo tiene un índice de 1, y así sucesivamente
hasta el final del String

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 28
comerciales de sus respectivos propietarios.

Conceptualmente, es similar a las arreglas, que se abordarán más adelante en este curso.

28
Método útil de String: substring()
• s2.substring(int beginIndex)
−Devuelve parte del String s2 de beginIndex hasta el final del
String
• s2.substring(int beginIndex, int endIndex)
−Devuelve parte del String s2 desde beginIndex hasta
endIndex, pero no incluye el carácter en endIndex
−¿Qué se visualiza como resultado de este segmento del
código?
String s1 = "I eat apples";
String s2 = "Bananas are my favorite fruit";
System.out.println(s1.substring(6)
+" "+s2.substring(8,23));

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 29
comerciales de sus respectivos propietarios.

29
Método útil de String: indexOf and charAt
• Método: s3.indexOf(char c);
−Devuelve el valor del índice de la primera ocurrencia del c en
String s3
• El parámetro no necesita ser un carácter, también
puede ser un String, por ejemplo:
s3.indexOf("the");
• Método: s4.charAt(int index);
−Devuelve el carácter del String ubicado en el índice pasado
como parámetro
−El índice puede ser un entero de 0 a s4.length()-1

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 30
comerciales de sus respectivos propietarios.

30
Ejemplo 1 del uso de métodos String
• Escribir el código Java que tomará la dirección de
correo electrónico como ingreso en el formato de un
String
−Este método devolverá el dominio
−Por ejemplo, si el usuario ingresa [email protected], el
método regresa a oracle.com
−Para solucionar este problema, primero busque el carácter
'@' en el String
−Luego saldrá esta parte del substring del String inicial que
aparece después de esta posición
String domain="";//no space between the " and "
int position=email.indexOf('@');
domain=email.substring(position+1);
System.out.println(domain);
JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 31
comerciales de sus respectivos propietarios.

31
Terminología
• Los términos clave usados en esta lección son los
siguientes:
−Concatenación
−Secuencias de escape
−Crear una instancia
−Objeto referencia
−Objeto de String
−Métodos de String (compareTo y equals)

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 32
comerciales de sus respectivos propietarios.

32
Resumen
• En esta lección, habrá aprendido a:
−Crear una instancia (crear) un String
−Describir qué ocurre cuando se modifica un String
−Usar los operadores + y += para concatenar Strings
−Interpretar secuencias de escape en literales de String
−Reconocer la diferencia entre un String y un tipo de datos
char primitivo
−Probar Strings con el método compareTo() y equals()
−Describir por qué el operador == no siempre funciona al
probar la igualdad del String
−Usar métodos de String length(),
substring(), indexOf() y charAt()

JF 4-4 Copyright © 2022, Oracle y/o sus filiales. Oracle, Java y MySQL son marcas comerciales
Strings registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas 33
comerciales de sus respectivos propietarios.

33
34

También podría gustarte