SlideShare una empresa de Scribd logo
Tema 6. Algunas clases predefinidas: 
String, Math, clases envoltorio
Introducción a la Informática y la Programación (IIP)
Curso 2011/12
Departamento de Sistemas Informáticos y Computación
Contenidos
1. Introducción
2. La clase String
3. La clase Math
4. Clases envoltorio
26/10/2011 IIP ‐ Curs 2011/12 2
Introducción
Java contiene muchas clases predefinidas mediante las cuales se puede
trabajar con problemas muy variados, como son: de computación numérica,
representación gráfica, entrada y salida, ejecución paralela, conexiones
remotas, etc.
 Las clases String y Math permiten, respectivamente, operar con cadenas de
caracteres y realizar cálculos matemáticos avanzados.
 Las clases envoltorio ofrecen funcionalidades adicionales para operar con
valores elementales después de su transformación en objetos.
Todas estas clases forman parte del paquete java.lang, que se importa por
defecto, siendo accesibles sus elementos públicos desde cualquier clase que
los use.
26/10/2011 3IIP ‐ Curs 2011/12
La clase String
• La clase String es una clase predefinida (dentro del paquete java.lang)
mediante la cual se pueden manipular cadenas de caracteres.
Referencia: http://download.oracle.com/javase/6/docs/api/java/lang/String.html
• Sus objetos se pueden construir de diferentes formas, pero cualquier grupo
de caracteres entre comillas dobles es una referencia a un objeto de ese tipo.
Por ejemplo:
26/10/2011 4IIP ‐ Curs 2011/12
String st1 = “Esto es un ejemplo de String”;
String st2 = new String(“Esto es un ejemplo de String”);
String st3 = “”;
String st4 = new String();
La clase String
• Los String son inmutables, es decir, una vez inicializados no es posible alterar
su contenido (añadiendo, eliminando o cambiando caracteres).
• La concatenación (añadir una String después de otra, creando una nueva) es
la operación de uso más habitual para generar nuevas String a partir de
otras. El operador de concatenación es el "+", pudiéndose emplear el
operador "+= ".
26/10/2011 5IIP ‐ Curs 2011/12
String exp1 = “ejemplo1";
String exp2 = “Ejemplo2";
String exp3 = exp1 + exp2; // exp3 referencia a "ejemplo1Ejemplo2"
exp2 += exp1; // exp2 referencia a "Ejemplo2ejemplo1"
"ejemplo1"
"Ejemplo2"
"ejemplo1Ejemplo2"
"Ejemplo2ejemplo1"
Memoria
Montículo
exp1
exp2
exp3
La clase String. Comparaciones
• Los operadores "==" y "!=" comparan referencias, no los objetos String que
representan.
• Los operadores relacionales ">", ">=", "<", "<=" no están definidos y no se
pueden usar para comparar valores String.
• Para la comparación de igualdad se usa el método equals(Object), así:
• Para comparación de orden se usa el métode compareTo(String).
La comparación de cadenas se basa en el orden lexicográfico. Es decir, las
cadenas se comparan entre si como en un diccionario, pero teniendo en
cuenta su código.
26/10/2011 6IIP ‐ Curs 2011/12
boolean b = st1.equals(st2);
// b es true sii st1 i st2 tienen exactamente los mismos caracteres.
int i = st1.compareTo(st2); // dónde el entero i es:
// menor que 0 sii st1 es anterior a st2.
// major que 0 sii st1 es posterior a st2.
// igual a 0 sii st1 es igual carácter a carácter a st2.
La clase String. Comparaciones
Ejemplos:
26/10/2011 7IIP ‐ Curs 2011/12
String s1 = "Hola", s2 = "Hello", s3;
boolean iguales;
iguales = s1 == s2; // iguales == false
iguales = s1.equals(s2); // iguales == false
s3 = s1;
iguales = s3 == s1; // iguales == true
iguales = s3.equals(s1); // iguales == true
int comp1 = s3.compareTo(s1); // comp1 == 0
int comp2 = s3.compareTo(s2); // comp2 > 0
int comp3 = s2.compareTo(s3); // comp3 < 0
La clase String. Métodes relevantes
26/10/2011 IIP ‐ Curs 2011/12 8
Método Significado
length() Devuelve la longitud (número de caracteres) de la cadena.
trim() Devuelve la cadena eliminando los espacios en blanco al principio y 
al final.
charAt(n) Devuelve el carácter que está en la posición n.
substring(ini,fi)
substring(ini)
Devuelve la subcadena comprendida entre las posiciones ini i fi‐1.
Sin fi, devuelve hasta el final de la cadena.
toUpperCase() Devuelve la cadena con las minúsculas convertidas a mayúsculas.
toLowerCase() Devuelve la cadena con las mayúsculas convertidas a minúsculas.
indexOf(cad) Devuelve la posición de la primera aparición de cad en la cadena o ‐
1 si no existe.
lastIndexOf(cad) Devuelve la posición de la última aparición de cad en la cadena o ‐1
si no existe.
startsWith(prefijo) Devuelve true sii la cadena comienza por prefijo.
endsWith(sufijo) Devuelve true sii la cadena termina con sufijo.
NOTA: Los métodos que devuelven cadenas, devuelven  cadenas nuevas, diferentes de las originales.
La clase String. Ejemplos de métodes
String st1 = “Ejemplo 1”;
String mayus = st1.toUpperCase(); // mayus es “EJEMPLO 1”
String minus = st1.toLowerCase(); // minus es “ejemplo 1”
int longitud = st1.length(); // longitud == 9
char caracter = st1.charAt(1); // caracter == ‘j’
String sub = st1.substring(3,5); // sub es “mp”
String st = st1.concat(“ y 2”); // st es “Ejemplo 1 y 2”
boolean b = st1.startsWith(“Eje”); // b == true
boolean c = st1.endsWith(“Eje”); // c == false
int inici = st1.indexOf(“mpl”); // inicio == 3
int desde = st1.indexOf(“mpl”,2); // desde == 3
String st2 = “ Ejemplo 2 ”;
String noBlanco = st2.trim(); // noBlanco es “Ejemplo 2”
int ultima = st2.lastIndexOf(“ ”); // ultima == 11
26/10/2011 IIP ‐ Curs 2011/12 9
La clase Math
Características:
• Es una clase de Utilidades con un conjunto de constantes y métodos estáticos
para realizar operaciones matemáticas avanzadas.
• Sus atributos y métodos públicos, al ser estáticos, han de usarse anteponiendo
el identificador de la clase seguido de un punto.
Referencia: http://download.oracle.com/javase/6/docs/api/java/lang/Math.html
Math define:
• Dos constantes: Math.PI y Math.E,
• Un grupo de operaciones (métodos estáticos) que se pueden clasificar como:
– Trigonométricas,
– Logarítmicas ‐ exponenciales,
– Para generación de valores aleatorios,
– Matemáticas de carácter básico.
26/10/2011 10IIP ‐ Curs 2011/12
La clase Math
26/10/2011 11IIP ‐ Curs 2011/12
Invocación Significado Definición ‐ Cabecera
Math.sin(x) seno(x) public static double sin (double x)
Math.cos(x) coseno(x) public static double cos (double x)
Math.tan(x) tangente(x) public static double tan (double x)
Math.asin(x) arcoseno(x) public static double asin (double x)
Math.acos(x) arcocoseno(x) public static double acos (double x)
Math.atan(x) arcotangente(x) public static double atan (double x)
Uso Significado Definición
Math.E e = 2.7182818284590452354 public static final double E
Math.PI π = 3.14159265358979323846 public static final double PI
Constantes:
Operaciones trigonométricas (el ángulo se expresa en radianes):
La clase Math
26/10/2011 12IIP ‐ Curs 2011/12
Invocación Significado Definición ‐ cabecera
Math.pow(x,y) xy public static double pow (double x, double y)
Math.exp(x) ex public static double exp (double x)
Math.log(x) ln(x) public static double log (double x)
Math.log10(x) log(x) public static double log10 (double x)
Math.sqrt(x)
Raíz
cuadrada
public static double sqrt (double x)
Invocación Significado Definición‐ cabecera
Math.random()
Número aleatorio
en [0.0, 1.0[
public static double random ()
Operaciones logarítmicas – exponenciales:
Operación para obtener un valor aleatorio:
La clase Math
26/10/2011 13IIP ‐ Curs 2011/12
Invocación Significado Definición‐ cabecera
Math.abs(x) valor absoluto de x
public static double abs (double x)
public static float abs (float x)
public static int abs (int x)
public static long abs (long x)
Math.max(x,y) mayor de x e y
public static double max (double x,double y)
public static float max (float x, float y)
public static int max (int x, int y)
public static long max (long x, long y)
Math.min(x,y) menor de x e y Igual que max
Math.ceil(x) x public static double ceil (double x)
Math.floor(x) x public static double floor (double x)
Math.round(x)
Redondeo al 
entero más 
próximo
public static long round (double x)
public static int round (float x)
Operaciones matemáticas de carácter básico:
La clase Math. Ejemplos de métodos
double x = 2.0, y = 5.0;
// Exponenciales - logarítmicos:
pot = Math.pow(x, y); // pot == 32.0
raiz = Math.sqrt(x); // raiz == 1.4142135623730951
ln = Math.log(y); // ln == 1.6094379124341003
// Trigonométricas
sin = Math.sin(Math.PI/2); // sin es 1.0
alf = Math.arcsin(sin); // alf es 1.5707963267948966
tan = Math.tan(Math.PI/2); // tan es 1.633123935319537E16
// Matemáticas básicas:
abs = Math.abs(-x); // abs es 2.0
max = Math.max(x,y); // max es 5.0
ceil = Math.ceil(3.76); // ceil es 4.0
flr = Math.floor(3.76); // flr es 3.0
long round1 = Math.round(3.76); // round1 es 4L
long round2 = Math.round(3.45); // round2 es 3L
26/10/2011 IIP ‐ Curs 2011/12 14
La clase Math. Ejemplos
/**
* Redondea un valor a cierto número de decimales.
* @param numIni - valor a ser redondeado.
* @param numDec – número de decimales. Tiene que ser >= 0.
* @return número redondeado a numDec decimales.
*/
public static double redondearNumDec(double numIni, int numDec) {
double num = numIni*Math.pow(10,numDec);
num = Math.round(num);
num = num / Math.pow(10,numDec);
return num;
}
26/10/2011 IIP ‐ Curs 2011/12 15
La clase Math. Ejemplos
/**
* Devuelve un valor aleatorio en el intervalo entero [a,b].
* @param a - Un extremo del intervalo.
* @param b – El otro extremo del intervalo.
* @return Valor aleatorio en el interval entero [a,b].
*/
public static int aleaEnIntervalo (int a, int b) {
int aux1 = a; int aux2 = b;
a = Math.min(aux1,aux2);
b = Math.max(aux1,aux2);
double x0 = Math.random(); // x0 es un double en [0,1[
int valsEntreAiB = b – a + 1;
double x1 = x0 * valsEntreAiB; // x1 es un double en [0, valsEntreAiB[
double x2 = a + x1; // x2 es un double en [a,a+valsEntreAiB[ ==
// == en [a,a+(b-a+1)[ == en [a,b+1[
int valor = (int)x2; // valor es un int en [a,b+1[ == en [a,b]
return valor;
}
26/10/2011 IIP ‐ Curs 2011/12 16
Clases envoltorio
• En Java no hay referencias a valores elementales, por lo que la única forma 
de tener una referencia a uno de ellos consiste en envolverlo en un objeto.
• Para eso, para cada uno de los tipos básicos hay una clase envoltorio que 
permite tratar sus valores como objetos. Estas clases son: 
Byte, Short, Integer, Long, Float, Double, Character y Boolean.
• Estas clases pertenecen al paquete java.lang por lo que pueden usarse, 
sin tener que importarse explícitamente.
• Cada objeto de alguna de estas clases contiene un único atributo del tipo
básico pero, a diferencia del tipo original, está dotado de algunas
funcionalidades adicionales (proporcionadas en forma de constantes y 
métodos).
• Todas las clases envoltorios son inmutables, lo que quiere decir que una vez
creado un objeto de la clase, no se puede modificar.
26/10/2011 17IIP ‐ Curs 2011/12
Clases envoltorio
Funcionalidades de las clases envoltorio (definición de constantes):
• Las constantes MAX_VALUE y MIN_VALUE están definidas en todas las clases
envoltorio de tipo numérico. Gracias a ellas se consigue en Java los valores 
máximo y mínimo para cada tipo.
• Los tipos reales también disponen de las constantes POSITIVE_INFINITY
y NEGATIVE_INFINITY para representar los valores infinitos, así como de 
la constante Double.NaN.
26/10/2011 18IIP ‐ Curs 2011/12
// Algunos ejemplos (valores enteros límite):
int maxI = Integer.MAX_VALUE; // maxI == 2147483647
int minI = Integer.MIN_VALUE; // minI == ‐2147483648
long maxl = Long.MAX_VALUE; // maxL == 9223372036854775807L
long maxl = Long.MAX_VALUE; // minL == ‐9223372036854775808L
// Uso de constantes en coma flotante:
double infPos = Double.POSITIVE_INFINITY;
double vNeg = infPos * -1; // vNeg es Double.NEGATIVE_INFINITY
double indet = (infPos/vNeg)*135.4; // indet es Double.NaN
Clases envoltorio
26/10/2011 19IIP ‐ Curs 2011/12
De String a tipos elementales De tipos  elementales a String
byte by = Byte.parseByte(str); str = Byte.toString(b);
short s = Short.parseShort(str); str = Short.toString(s);
int i = Integer.parseInt(str); str = Integer.toString(i);
long l = Long.parseLong(str); str = Long.toString(l);
float f = Float.parseFloat(str); str = Float.toString(f);
double d = Double.parseDouble(str); str = Double.toString(d);
boolean bo = Double.parseBoolean(str); str = Double.toString(d);
Operaciones para convertir Strings en valores elementales y al contrario (str es una String):
Funcionalidades de las clases envoltorio (operaciones):
// Ejemplos:
int i = Integer.parseInt(“12345”); // i == 12345
double d = Double.parseDouble(“123.456”); // d == 123.456
Double d = Double.parseDouble(“123b.456”); // No correcto: EXCEPCIÓN
Clases envoltorio
26/10/2011 20IIP ‐ Curs 2011/12
Operación Significado
b = Character.isDigit(c) b es true sii c es un dígito.
b = Character.isLetter(c) b es true sii c es una letra.
b = Character.isSpaceChar(c) b es true sii c es un espacio blanco
Unicode.
b = Character.isLowerCase(c) b true sii c es una minúscula.
b = Character.isUpperCase(c) b true sii c es una mayúscula.
c2 = Character.toLowerCase(c) c2 es la minúscula de c.
c2 = Character.toUpperCase(c) c2 es la mayúscula de c.
Algunas operaciones con valores Character (c y c2 son char, b es boolean):
Funcionalidades de las clases envoltorio (operaciones):
Clases envoltorio
• Los tipos elementales y los tipos envoltorio son compatibles:
26/10/2011 21IIP ‐ Curs 2011/12
// Ejemplos:
// conversión implícita de double a Double:
Double d1 = 1.5;
// Creación de un Double y conversión a double:
double d2 = new Double(1.5);
// el método parseFloat convierte su argumento a float
// y después hace una conversión implícita de float a Float:
Float f1 = Float.parseFloat("12345677890.012345");
// conversión implícita de Float a float:
float f2 = f1;
// el métode parseInt convierte la String "12345" a int
// y después hace una conversión implícita de int a long:
long l = Integer.parseInt("12345");

Más contenido relacionado

PDF
Valores propios
PDF
Tema_4.pdf
PDF
Tema_1.pdf
PDF
Tema_3.pdf
PDF
Subespacios vectoriales definición y ejemplos el blog de leo
PDF
Perceptron y Adaline
PPT
Matlab presentacion enero2012
PDF
Ca2 cap01
Valores propios
Tema_4.pdf
Tema_1.pdf
Tema_3.pdf
Subespacios vectoriales definición y ejemplos el blog de leo
Perceptron y Adaline
Matlab presentacion enero2012
Ca2 cap01

La actualidad más candente (20)

PPT
Cursos de MATLAB
PDF
Resolver ecuaciones lineales y no lineales bueno
PDF
Matlabreyes
DOCX
Solución de Ecuaciones Diferenciales Ordinarias por los Métodos de Euler, Run...
PDF
Utp 2015-2_sirn_s11_operaciones difusas
DOCX
Integrales inmediatas
PPTX
Presentacion derivacion e integracion de funciones de varias variables Andrei...
PDF
Cap9 interpolextrapolnumer-ajustedatos3
PDF
18 tipos-de-datos
PPTX
DOCX
TIPOS DE DATOS MATLAB
PDF
Programacion matlab
PDF
Gráfica derivada e Integral de una función discreta y continua en matlab
DOCX
Investigacion calculo derivadas e integrales
DOCX
Presentacion integrales indefinidas
PDF
Librería String, Math de Java (NetBeans)
PDF
Seminario de matlab
PDF
Series de-fourier
Cursos de MATLAB
Resolver ecuaciones lineales y no lineales bueno
Matlabreyes
Solución de Ecuaciones Diferenciales Ordinarias por los Métodos de Euler, Run...
Utp 2015-2_sirn_s11_operaciones difusas
Integrales inmediatas
Presentacion derivacion e integracion de funciones de varias variables Andrei...
Cap9 interpolextrapolnumer-ajustedatos3
18 tipos-de-datos
TIPOS DE DATOS MATLAB
Programacion matlab
Gráfica derivada e Integral de una función discreta y continua en matlab
Investigacion calculo derivadas e integrales
Presentacion integrales indefinidas
Librería String, Math de Java (NetBeans)
Seminario de matlab
Series de-fourier
Publicidad

Destacado (17)

PPT
Ecuaciones Cuadraticas
PPT
PPT
2 1 1 Definiendo Clases
 
PPTX
Java
PPTX
Clase math.java
PDF
Variables y metodos de instancia
PPT
Tm04 modelo de clases
PPT
PDF
Programación Orientada a Objetos en Java - Parte I 2015
PPTX
METODOS
PPT
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
PDF
Paradigma orientado a objetos
PPTX
MéTodos En Java
PDF
Introducción a la programación orientada objetos
PDF
Como programar java, 9na edicion deitel
PDF
Java orientado a objetos
Ecuaciones Cuadraticas
2 1 1 Definiendo Clases
 
Java
Clase math.java
Variables y metodos de instancia
Tm04 modelo de clases
Programación Orientada a Objetos en Java - Parte I 2015
METODOS
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
Paradigma orientado a objetos
MéTodos En Java
Introducción a la programación orientada objetos
Como programar java, 9na edicion deitel
Java orientado a objetos
Publicidad

Similar a Introducción a la programación y la informática. Tema 6 (20)

DOC
Matlab introducción-clase3
PPTX
PPTX
CLASES STRING MATH TIME
PPT
Semana03 prog ii
PDF
Jyoc java-cap06 la clase string
PPT
Programación de código
PDF
LISTAS (1)3333333333333333333333333333333333
DOCX
Numpy y Scipy
PDF
Algoritmo de Floyd-Warshall
PDF
CLASE 05.pdf
DOCX
Actividad de aprendizaje 4
DOCX
PDF
Apuntes scilab
PDF
Apuntes scilab
PDF
Introduccion rapida a SCILAB.pdf
PDF
Clase dispersa
PPTX
Metodos numericos..pptx
PDF
Unidad_01_03.pdf
PPTX
Transformaciones modelo a modelo: ATL (ParteII)
PDF
funciones matematicas elementales basicas aplicadas en el software octave, ma...
Matlab introducción-clase3
CLASES STRING MATH TIME
Semana03 prog ii
Jyoc java-cap06 la clase string
Programación de código
LISTAS (1)3333333333333333333333333333333333
Numpy y Scipy
Algoritmo de Floyd-Warshall
CLASE 05.pdf
Actividad de aprendizaje 4
Apuntes scilab
Apuntes scilab
Introduccion rapida a SCILAB.pdf
Clase dispersa
Metodos numericos..pptx
Unidad_01_03.pdf
Transformaciones modelo a modelo: ATL (ParteII)
funciones matematicas elementales basicas aplicadas en el software octave, ma...

Más de Andres Garcia Garcia (10)

PPTX
Presentacion 1.10
PDF
Introducción a la programación y la informática. Tema 10
PDF
Introducción a la programación y la informática. Tema 9
PDF
Introducción a la programación y la informática. Tema 7
PDF
Introducción a la programación y la informática. Tema 5
PDF
Introducción a la programación y la informática. Tema 4
PDF
Introducción a la programación y la informática. Tema 3
PDF
Introducción a la programación y la informática. Tema 2
PDF
Introducción a la programación y la informática. Tema 1
PDF
Introducción a la programación y la informática. Tema 8
Presentacion 1.10
Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 9
Introducción a la programación y la informática. Tema 7
Introducción a la programación y la informática. Tema 5
Introducción a la programación y la informática. Tema 4
Introducción a la programación y la informática. Tema 3
Introducción a la programación y la informática. Tema 2
Introducción a la programación y la informática. Tema 1
Introducción a la programación y la informática. Tema 8

Último (20)

PDF
Mi Primer Millon - Poissant - Godefroy Ccesa007.pdf
DOCX
PLANES DE área ciencias naturales y aplicadas
PDF
Los hombres son de Marte - Las mujeres de Venus Ccesa007.pdf
PDF
2.0 Introduccion a processing, y como obtenerlo
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
PPTX
Doctrina 1 Soteriologuia y sus diferente
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
PDF
Aqui No Hay Reglas Hastings-Meyer Ccesa007.pdf
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PDF
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
PDF
Unidad de Aprendizaje 5 de Matematica 2do Secundaria Ccesa007.pdf
DOCX
V UNIDAD - SEGUNDO GRADO. del mes de agosto
PDF
Introduccion a la Investigacion Cualitativa FLICK Ccesa007.pdf
PDF
Esc. Sab. Lección 7. El pan y el agua de vida.pdf
DOCX
PLAN DE CASTELLANO 2021 actualizado a la normativa
PDF
Nadie puede salvarte excepto Tú - Madame Rouge Ccesa007.pdf
PDF
La Inteligencia Emocional - Fabian Goleman TE4 Ccesa007.pdf
PDF
Atencion prenatal. Ginecologia y obsetricia
PDF
Iniciación Al Aprendizaje Basado En Proyectos ABP Ccesa007.pdf
Mi Primer Millon - Poissant - Godefroy Ccesa007.pdf
PLANES DE área ciencias naturales y aplicadas
Los hombres son de Marte - Las mujeres de Venus Ccesa007.pdf
2.0 Introduccion a processing, y como obtenerlo
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
Doctrina 1 Soteriologuia y sus diferente
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
Aqui No Hay Reglas Hastings-Meyer Ccesa007.pdf
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
Unidad de Aprendizaje 5 de Matematica 2do Secundaria Ccesa007.pdf
V UNIDAD - SEGUNDO GRADO. del mes de agosto
Introduccion a la Investigacion Cualitativa FLICK Ccesa007.pdf
Esc. Sab. Lección 7. El pan y el agua de vida.pdf
PLAN DE CASTELLANO 2021 actualizado a la normativa
Nadie puede salvarte excepto Tú - Madame Rouge Ccesa007.pdf
La Inteligencia Emocional - Fabian Goleman TE4 Ccesa007.pdf
Atencion prenatal. Ginecologia y obsetricia
Iniciación Al Aprendizaje Basado En Proyectos ABP Ccesa007.pdf

Introducción a la programación y la informática. Tema 6

  • 2. Contenidos 1. Introducción 2. La clase String 3. La clase Math 4. Clases envoltorio 26/10/2011 IIP ‐ Curs 2011/12 2
  • 3. Introducción Java contiene muchas clases predefinidas mediante las cuales se puede trabajar con problemas muy variados, como son: de computación numérica, representación gráfica, entrada y salida, ejecución paralela, conexiones remotas, etc.  Las clases String y Math permiten, respectivamente, operar con cadenas de caracteres y realizar cálculos matemáticos avanzados.  Las clases envoltorio ofrecen funcionalidades adicionales para operar con valores elementales después de su transformación en objetos. Todas estas clases forman parte del paquete java.lang, que se importa por defecto, siendo accesibles sus elementos públicos desde cualquier clase que los use. 26/10/2011 3IIP ‐ Curs 2011/12
  • 4. La clase String • La clase String es una clase predefinida (dentro del paquete java.lang) mediante la cual se pueden manipular cadenas de caracteres. Referencia: http://download.oracle.com/javase/6/docs/api/java/lang/String.html • Sus objetos se pueden construir de diferentes formas, pero cualquier grupo de caracteres entre comillas dobles es una referencia a un objeto de ese tipo. Por ejemplo: 26/10/2011 4IIP ‐ Curs 2011/12 String st1 = “Esto es un ejemplo de String”; String st2 = new String(“Esto es un ejemplo de String”); String st3 = “”; String st4 = new String();
  • 5. La clase String • Los String son inmutables, es decir, una vez inicializados no es posible alterar su contenido (añadiendo, eliminando o cambiando caracteres). • La concatenación (añadir una String después de otra, creando una nueva) es la operación de uso más habitual para generar nuevas String a partir de otras. El operador de concatenación es el "+", pudiéndose emplear el operador "+= ". 26/10/2011 5IIP ‐ Curs 2011/12 String exp1 = “ejemplo1"; String exp2 = “Ejemplo2"; String exp3 = exp1 + exp2; // exp3 referencia a "ejemplo1Ejemplo2" exp2 += exp1; // exp2 referencia a "Ejemplo2ejemplo1" "ejemplo1" "Ejemplo2" "ejemplo1Ejemplo2" "Ejemplo2ejemplo1" Memoria Montículo exp1 exp2 exp3
  • 6. La clase String. Comparaciones • Los operadores "==" y "!=" comparan referencias, no los objetos String que representan. • Los operadores relacionales ">", ">=", "<", "<=" no están definidos y no se pueden usar para comparar valores String. • Para la comparación de igualdad se usa el método equals(Object), así: • Para comparación de orden se usa el métode compareTo(String). La comparación de cadenas se basa en el orden lexicográfico. Es decir, las cadenas se comparan entre si como en un diccionario, pero teniendo en cuenta su código. 26/10/2011 6IIP ‐ Curs 2011/12 boolean b = st1.equals(st2); // b es true sii st1 i st2 tienen exactamente los mismos caracteres. int i = st1.compareTo(st2); // dónde el entero i es: // menor que 0 sii st1 es anterior a st2. // major que 0 sii st1 es posterior a st2. // igual a 0 sii st1 es igual carácter a carácter a st2.
  • 7. La clase String. Comparaciones Ejemplos: 26/10/2011 7IIP ‐ Curs 2011/12 String s1 = "Hola", s2 = "Hello", s3; boolean iguales; iguales = s1 == s2; // iguales == false iguales = s1.equals(s2); // iguales == false s3 = s1; iguales = s3 == s1; // iguales == true iguales = s3.equals(s1); // iguales == true int comp1 = s3.compareTo(s1); // comp1 == 0 int comp2 = s3.compareTo(s2); // comp2 > 0 int comp3 = s2.compareTo(s3); // comp3 < 0
  • 8. La clase String. Métodes relevantes 26/10/2011 IIP ‐ Curs 2011/12 8 Método Significado length() Devuelve la longitud (número de caracteres) de la cadena. trim() Devuelve la cadena eliminando los espacios en blanco al principio y  al final. charAt(n) Devuelve el carácter que está en la posición n. substring(ini,fi) substring(ini) Devuelve la subcadena comprendida entre las posiciones ini i fi‐1. Sin fi, devuelve hasta el final de la cadena. toUpperCase() Devuelve la cadena con las minúsculas convertidas a mayúsculas. toLowerCase() Devuelve la cadena con las mayúsculas convertidas a minúsculas. indexOf(cad) Devuelve la posición de la primera aparición de cad en la cadena o ‐ 1 si no existe. lastIndexOf(cad) Devuelve la posición de la última aparición de cad en la cadena o ‐1 si no existe. startsWith(prefijo) Devuelve true sii la cadena comienza por prefijo. endsWith(sufijo) Devuelve true sii la cadena termina con sufijo. NOTA: Los métodos que devuelven cadenas, devuelven  cadenas nuevas, diferentes de las originales.
  • 9. La clase String. Ejemplos de métodes String st1 = “Ejemplo 1”; String mayus = st1.toUpperCase(); // mayus es “EJEMPLO 1” String minus = st1.toLowerCase(); // minus es “ejemplo 1” int longitud = st1.length(); // longitud == 9 char caracter = st1.charAt(1); // caracter == ‘j’ String sub = st1.substring(3,5); // sub es “mp” String st = st1.concat(“ y 2”); // st es “Ejemplo 1 y 2” boolean b = st1.startsWith(“Eje”); // b == true boolean c = st1.endsWith(“Eje”); // c == false int inici = st1.indexOf(“mpl”); // inicio == 3 int desde = st1.indexOf(“mpl”,2); // desde == 3 String st2 = “ Ejemplo 2 ”; String noBlanco = st2.trim(); // noBlanco es “Ejemplo 2” int ultima = st2.lastIndexOf(“ ”); // ultima == 11 26/10/2011 IIP ‐ Curs 2011/12 9
  • 10. La clase Math Características: • Es una clase de Utilidades con un conjunto de constantes y métodos estáticos para realizar operaciones matemáticas avanzadas. • Sus atributos y métodos públicos, al ser estáticos, han de usarse anteponiendo el identificador de la clase seguido de un punto. Referencia: http://download.oracle.com/javase/6/docs/api/java/lang/Math.html Math define: • Dos constantes: Math.PI y Math.E, • Un grupo de operaciones (métodos estáticos) que se pueden clasificar como: – Trigonométricas, – Logarítmicas ‐ exponenciales, – Para generación de valores aleatorios, – Matemáticas de carácter básico. 26/10/2011 10IIP ‐ Curs 2011/12
  • 11. La clase Math 26/10/2011 11IIP ‐ Curs 2011/12 Invocación Significado Definición ‐ Cabecera Math.sin(x) seno(x) public static double sin (double x) Math.cos(x) coseno(x) public static double cos (double x) Math.tan(x) tangente(x) public static double tan (double x) Math.asin(x) arcoseno(x) public static double asin (double x) Math.acos(x) arcocoseno(x) public static double acos (double x) Math.atan(x) arcotangente(x) public static double atan (double x) Uso Significado Definición Math.E e = 2.7182818284590452354 public static final double E Math.PI π = 3.14159265358979323846 public static final double PI Constantes: Operaciones trigonométricas (el ángulo se expresa en radianes):
  • 12. La clase Math 26/10/2011 12IIP ‐ Curs 2011/12 Invocación Significado Definición ‐ cabecera Math.pow(x,y) xy public static double pow (double x, double y) Math.exp(x) ex public static double exp (double x) Math.log(x) ln(x) public static double log (double x) Math.log10(x) log(x) public static double log10 (double x) Math.sqrt(x) Raíz cuadrada public static double sqrt (double x) Invocación Significado Definición‐ cabecera Math.random() Número aleatorio en [0.0, 1.0[ public static double random () Operaciones logarítmicas – exponenciales: Operación para obtener un valor aleatorio:
  • 13. La clase Math 26/10/2011 13IIP ‐ Curs 2011/12 Invocación Significado Definición‐ cabecera Math.abs(x) valor absoluto de x public static double abs (double x) public static float abs (float x) public static int abs (int x) public static long abs (long x) Math.max(x,y) mayor de x e y public static double max (double x,double y) public static float max (float x, float y) public static int max (int x, int y) public static long max (long x, long y) Math.min(x,y) menor de x e y Igual que max Math.ceil(x) x public static double ceil (double x) Math.floor(x) x public static double floor (double x) Math.round(x) Redondeo al  entero más  próximo public static long round (double x) public static int round (float x) Operaciones matemáticas de carácter básico:
  • 14. La clase Math. Ejemplos de métodos double x = 2.0, y = 5.0; // Exponenciales - logarítmicos: pot = Math.pow(x, y); // pot == 32.0 raiz = Math.sqrt(x); // raiz == 1.4142135623730951 ln = Math.log(y); // ln == 1.6094379124341003 // Trigonométricas sin = Math.sin(Math.PI/2); // sin es 1.0 alf = Math.arcsin(sin); // alf es 1.5707963267948966 tan = Math.tan(Math.PI/2); // tan es 1.633123935319537E16 // Matemáticas básicas: abs = Math.abs(-x); // abs es 2.0 max = Math.max(x,y); // max es 5.0 ceil = Math.ceil(3.76); // ceil es 4.0 flr = Math.floor(3.76); // flr es 3.0 long round1 = Math.round(3.76); // round1 es 4L long round2 = Math.round(3.45); // round2 es 3L 26/10/2011 IIP ‐ Curs 2011/12 14
  • 15. La clase Math. Ejemplos /** * Redondea un valor a cierto número de decimales. * @param numIni - valor a ser redondeado. * @param numDec – número de decimales. Tiene que ser >= 0. * @return número redondeado a numDec decimales. */ public static double redondearNumDec(double numIni, int numDec) { double num = numIni*Math.pow(10,numDec); num = Math.round(num); num = num / Math.pow(10,numDec); return num; } 26/10/2011 IIP ‐ Curs 2011/12 15
  • 16. La clase Math. Ejemplos /** * Devuelve un valor aleatorio en el intervalo entero [a,b]. * @param a - Un extremo del intervalo. * @param b – El otro extremo del intervalo. * @return Valor aleatorio en el interval entero [a,b]. */ public static int aleaEnIntervalo (int a, int b) { int aux1 = a; int aux2 = b; a = Math.min(aux1,aux2); b = Math.max(aux1,aux2); double x0 = Math.random(); // x0 es un double en [0,1[ int valsEntreAiB = b – a + 1; double x1 = x0 * valsEntreAiB; // x1 es un double en [0, valsEntreAiB[ double x2 = a + x1; // x2 es un double en [a,a+valsEntreAiB[ == // == en [a,a+(b-a+1)[ == en [a,b+1[ int valor = (int)x2; // valor es un int en [a,b+1[ == en [a,b] return valor; } 26/10/2011 IIP ‐ Curs 2011/12 16
  • 17. Clases envoltorio • En Java no hay referencias a valores elementales, por lo que la única forma  de tener una referencia a uno de ellos consiste en envolverlo en un objeto. • Para eso, para cada uno de los tipos básicos hay una clase envoltorio que  permite tratar sus valores como objetos. Estas clases son:  Byte, Short, Integer, Long, Float, Double, Character y Boolean. • Estas clases pertenecen al paquete java.lang por lo que pueden usarse,  sin tener que importarse explícitamente. • Cada objeto de alguna de estas clases contiene un único atributo del tipo básico pero, a diferencia del tipo original, está dotado de algunas funcionalidades adicionales (proporcionadas en forma de constantes y  métodos). • Todas las clases envoltorios son inmutables, lo que quiere decir que una vez creado un objeto de la clase, no se puede modificar. 26/10/2011 17IIP ‐ Curs 2011/12
  • 18. Clases envoltorio Funcionalidades de las clases envoltorio (definición de constantes): • Las constantes MAX_VALUE y MIN_VALUE están definidas en todas las clases envoltorio de tipo numérico. Gracias a ellas se consigue en Java los valores  máximo y mínimo para cada tipo. • Los tipos reales también disponen de las constantes POSITIVE_INFINITY y NEGATIVE_INFINITY para representar los valores infinitos, así como de  la constante Double.NaN. 26/10/2011 18IIP ‐ Curs 2011/12 // Algunos ejemplos (valores enteros límite): int maxI = Integer.MAX_VALUE; // maxI == 2147483647 int minI = Integer.MIN_VALUE; // minI == ‐2147483648 long maxl = Long.MAX_VALUE; // maxL == 9223372036854775807L long maxl = Long.MAX_VALUE; // minL == ‐9223372036854775808L // Uso de constantes en coma flotante: double infPos = Double.POSITIVE_INFINITY; double vNeg = infPos * -1; // vNeg es Double.NEGATIVE_INFINITY double indet = (infPos/vNeg)*135.4; // indet es Double.NaN
  • 19. Clases envoltorio 26/10/2011 19IIP ‐ Curs 2011/12 De String a tipos elementales De tipos  elementales a String byte by = Byte.parseByte(str); str = Byte.toString(b); short s = Short.parseShort(str); str = Short.toString(s); int i = Integer.parseInt(str); str = Integer.toString(i); long l = Long.parseLong(str); str = Long.toString(l); float f = Float.parseFloat(str); str = Float.toString(f); double d = Double.parseDouble(str); str = Double.toString(d); boolean bo = Double.parseBoolean(str); str = Double.toString(d); Operaciones para convertir Strings en valores elementales y al contrario (str es una String): Funcionalidades de las clases envoltorio (operaciones): // Ejemplos: int i = Integer.parseInt(“12345”); // i == 12345 double d = Double.parseDouble(“123.456”); // d == 123.456 Double d = Double.parseDouble(“123b.456”); // No correcto: EXCEPCIÓN
  • 20. Clases envoltorio 26/10/2011 20IIP ‐ Curs 2011/12 Operación Significado b = Character.isDigit(c) b es true sii c es un dígito. b = Character.isLetter(c) b es true sii c es una letra. b = Character.isSpaceChar(c) b es true sii c es un espacio blanco Unicode. b = Character.isLowerCase(c) b true sii c es una minúscula. b = Character.isUpperCase(c) b true sii c es una mayúscula. c2 = Character.toLowerCase(c) c2 es la minúscula de c. c2 = Character.toUpperCase(c) c2 es la mayúscula de c. Algunas operaciones con valores Character (c y c2 son char, b es boolean): Funcionalidades de las clases envoltorio (operaciones):
  • 21. Clases envoltorio • Los tipos elementales y los tipos envoltorio son compatibles: 26/10/2011 21IIP ‐ Curs 2011/12 // Ejemplos: // conversión implícita de double a Double: Double d1 = 1.5; // Creación de un Double y conversión a double: double d2 = new Double(1.5); // el método parseFloat convierte su argumento a float // y después hace una conversión implícita de float a Float: Float f1 = Float.parseFloat("12345677890.012345"); // conversión implícita de Float a float: float f2 = f1; // el métode parseInt convierte la String "12345" a int // y después hace una conversión implícita de int a long: long l = Integer.parseInt("12345");