













































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
En este documento se presentan los conceptos básicos de algunas clases y objetos de java, como string, stringbuilder, character, boolean, integer, double, optional y scanner. Se explican sus propiedades, métodos y uso, además de ejemplos de cómo crearlos y utilizarlos.
Tipo: Apuntes
1 / 53
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!














































Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Informática. Universidad de Málaga
Programación Orientada a Objetos
Organización en paquetes Clases básicas: java.lang Clases básicas del paquete java.util Entrada/Salida. java.io
Esta obra se encuentra bajo una licencia Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0) de Creative Commons.
Desde fuera de un paquete sólo se puede acceder a clases e interfaces públicas. Para acceder a una clase o interfaz desde otro paquete se puede: Utilizar el nombre de la clase cualificado con el nombre del paquete. java.util.Random rnd = new java.util.Random(); Importar la clase al comienzo del fichero y usar su nombre simple. import java.util.Random; //... Random rnd = new Random(); Importar todas las clases del paquete completo al comienzo del fichero y usar los nombres simples de todas las clases e interfaces del paquete. import java.util.*; //... Random rnd = new Random(); El sistema de ejecución de Java importa automáticamente el paquete anónimo , el paquete java.lang y el paquete actual.
La API de Java (Java Application Programming Interface) es la especificación de la biblioteca de paquetes que se suministra con la plataforma de desarrollo de Java ( JDK ). Estos paquetes contienen interfaces y clases diseñadas para facilitar la tarea de programación. En este tema veremos parte de los paquetes: java.lang, java.util y java.io.
La clase System proporciona objetos para entrada/salida, y funcionalidades del sistema. Proporciona tres variables de clase (estáticas) públicas para realizar la entrada y salida de datos: PrintStream out, err: salida de datos. InputStream in: entrada de datos. Métodos de clase (estáticos) públicos: void arraycopy(...): permite copiar elementos de un array a otro array. long currentTimeMillis(): devuelve el valor del tiempo actual en milisegundos. void gc(): permite invocar al recolector de basura. void runFinalization(): provoca la ejecución inmediata de los metodos finalize() pendientes sobre los objetos a recolectar. Etc. (consultar la documentación para más información).
La clase Math proporciona constantes numéricas y funciones matemáticas. Constantes (estáticas) públicas: double E = 2.718281828459045: el valor del número e. double PI = 3.141592653589793: el valor del número pi. Métodos de clase (estáticos) públicos: double sin(double), double cos(double), double tan(double), double asin(double), double acos(double), double atan(double): funciones trigonométricas. x abs(x), x max(x,x), x min(x,x): valor absoluto, máximo y mínimo. double exp(double), double pow(double, double), double sqrt(double), int round(float): exponenciación, potencia, raíz cuadrada, redondeo. double random(): generación de números aleatorios (0 ≤ r < 1). Etc. (consultar la documentación para más información).
boolean equals(Object o): indica si otro objeto es igual al objeto actual. En caso de ser necesario, las clases deben redefinir este método para que relice la comparación adecuadamente (por defecto realiza una comparación por ==). Todas las clases del sistema tienen redefinido este método (también enum ). La anotación @Override indica al compilador que un método pretende redefinir a un método de la superclase (útil para detectar errores). class Persona { private String nombre; private int edad; public Persona(String n, int e) { nombre = n; edad = e; } @Override public boolean equals(Object o) { boolean res = false ; if (o instanceof Persona) { Persona p = (Persona) o; res = (edad == p.edad) && nombre.equals(p.nombre); } return res; } }
boolean equals(Object o): indica si otro objeto es igual al objeto actual. En caso de ser necesario, las clases deben redefinir este método para que relice la comparación adecuadamente (por defecto realiza una comparación por ==). Todas las clases del sistema tienen redefinido este método (también enum ). La anotación @Override indica al compilador que un método pretende redefinir a un método de la superclase (útil para detectar errores). class Persona { private String nombre; private int edad; public Persona(String n, int e) { nombre = n; edad = e; } @Override public boolean equals(Object o) { boolean res = false ; if (o instanceof Persona) { Persona p = (Persona) o; res = (edad == p.edad) && nombre.equalsIgnoreCase(p.nombre); } return res; } }
Si dos objetos son iguales (según el método equals()), entonces el método hashCode() debe devolver el mismo valor del código hash para ambos objetos. Si a.equals(b) entonces a.hashCode() == b.hashCode(). Si se redefine el método equals(), entonces también se debe redefinir el método hashCode(), considerando los mismos componentes. int hashCode(): devuelve el valor del código hash del objeto actual. La suma de los hashCode() de los componentes involucrados en equals(). class Persona { private String nombre; private int edad; public Persona(String n, int e) { nombre = n; edad = e; } @Override public boolean equals(Object o) { boolean res = false ; if (o instanceof Persona) { Persona p = (Persona) o; res = (edad == p.edad) && nombre.equalsIgnoreCase(p.nombre); } return res; } @Override public int hashCode() { return Integer.hashCode(edad) + nombre.toLowerCase().hashCode(); } }
Las cadenas de caracteres se representan en Java como secuencias de caracteres Unicode encerradas entre comillas dobles. "Ejemplo de cadena de caracteres" Para manipular cadenas de caracteres, por razones de eficiencia, se utilizan dos clases incluidas en java.lang: String: para cadenas inmutables StringBuilder: para cadenas modificables.
int length(): devuelve el número de caracteres de la cadena. char charAt(int p): devuelve el carácter que se encuentra en la posición p en la cadena (0 ≤ p < length ()). int indexOf(char/String c2): devuelve la primera posición de c (carácter o cadena). int lastIndexOf(char/String c2): devuelve la última posición de c (carácter o cadena). Si se intenta acceder a una posición no válida el sistema lanza una excepción: IndexOutOfBoundsException.
String substring(int desde, int hasta): devuelve un nuevo objeto String con los caracteres a partir de la posición desde y hasta la posición hasta (sin incluirla). String substring(int desde): devuelve un nuevo objeto String con los caracteres a partir de la posición desde y hasta el final. String replace(String c2, String c3): devuelve un nuevo objeto String con los caracteres del objeto actual, reemplazando todas las ocurrencias de c2 por c3. String replaceFirst(String regex, String c3): devuelve un nuevo objeto String con los caracteres del objeto actual, reemplazando la primera ocurrencia de regex por c3. String concat(String c2): devuelve un nuevo objeto String con los caracteres del objeto actual concatenados con los caracteres de c2 (equiv a + ). Si se intenta acceder a una posición no válida el sistema lanza una excepción: IndexOutOfBoundsException.
boolean equals(String c2): devuelve true si el objeto actual y c2 son iguales y false en otro caso. boolean equalsIgnoreCase(String c2): igual que la anterior, pero sin tener en cuenta las diferencias por mayúsculas y minúsculas. int compareTo(String c2): devuelve un entero menor , igual o mayor que cero cuando el objeto actual es menor , igual o mayor que c2. int compareToIgnoreCase(String c2): igual que la anterior, pero sin tener en cuenta las diferencias por mayúsculas y minúsculas. ATENCIÓN c1 == c2 compara las referencias, es decir, si ambas variables referencian al mismo objeto. int hashCode(): devuelve el valor del código hash del objeto actual.
String[] split(String regex): devuelve un array de String resultado de dividir la cadena de caracteres del objeto actual en substrings según los delimitadores especificados por regex. String[] split(String regex, int limit): igual que el anterior, pero con un límite en la aplicación de la división. Los delimitadores son expresiones regulares. Por ejemplo: ▸ "[,;:]" // Exactamente uno de entre ,;: ▸ "[,;:]+" // Uno o más de entre ,;: ▸ "[^a-zA-Z0-9]" // Cualquier carácter que no sea una letra o dígito ▸ "[,;:] ?" // Uno de entre ,;: seguido por un espacio opcional ▸ "\s[,;:]\s" // Uno de entre ,;: entre múltiples [ \t\n\r\f] opcionales Ejemplo: public static void main(String[] args) { String s1 = "33456765M Juan 6.5"; String[] t1 = s1.split("[ ]"); // [33456765M] [Juan] [6.5] String s2 = "El agua:es;buena"; String[] t2 = s2.split("[ :]"); // [El] [agua] [es;buena] }