















































































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
Asignatura: Análisis y Diseño de Algoritmos, Profesor: Mariam Cobalea, Carrera: Grado en Ingeniería Informática, Universidad: UMA
Tipo: Apuntes
1 / 87
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
















































































Contenido del curso
1. Aspectos básicos de Java 1.1. ¿ Que es el lenguaje Java? 1.2. ¿ Donde conseguir y como instalar el JDK? 1.3. ¿ Como crear y ejecutar el programa Hola Mundo con el JDK bajo Windows de Microsoft? 1.4. Los comentarios en Java 1.5. La entrada de datos 1.6. La entrada numérica 1.7. Las variables y los objetos 1.8. La aritmética y los operadores 2. Las cadenas de caracteres 2.1. La clase String 2.2. Utilizando la clase String 2.3. Los métodos de la clase String 2.4. La clase StringBuffer 2.5. Utilizando la clase StringBuffer 2.6. Los métodos de la clase StringBuffer 3. Las estructuras de control de programa 3.1. La selección 3.1.1. El enunciado if … else 3.1.2. El operador condicional 3.1.3. El enunciado switch 3.2. La iteración 3.2.1. El enunciado for 3.2.2. El enunciado while 3.2.3. El enunciado do … while 3.2.4. Ciclos anidados 4. Conceptos de orientación a objetos 4.1. Introducción 4.2. Los objetos 4.3. Los mensajes 4.4. Las clases 4.5. la herencia 4.6. Las jerarquías de clases 4.7. Los lenguajes de programación orientados a objetos 5. Los métodos 5.1. ¿ Que es un método y como se define? 5.2. Un par de ejemplos sencillos 5.3. Las variables locales
1. Aspectos básicos de Java 1.1.¿ Qué es el lenguaje Java? El lenguaje Java fue desarrollado por James Gosling en la compañía Sun Microsystems a partir de 1991. El nombre del lenguaje proviene de un populismo para nombre el café. Cuando apareció la World Wide Web tuvo su auge en 1993, el lenguaje fue mejorado para facilitar la programación en la Web y fue lanzado al mercado a finales de
Estación de trabajo IBM con AIX Hola.java javac (compilador) Hola.class Red PC para red Sony con Windows 98 Hola.class java (máquina virtual de Java) 1.2.¿ Dónde conseguir y como instalar el JDK? El JDK (Java Development Kit) es una colección de programas para ayudar a los programadores a compilar, ejecutar y depurar programas escritos en Java. No es tan bueno como un ambiente integrado de desarrollo (IDE), pero contiene lo suficiente para iniciar con la programación en Java. El JDK es distribuido gratuitamente por Sun Microsystems. La dirección del sitio es http://www.sun.com. Sólo se necesita presionar en la liga Products & APIs y después presionar en la versión del JDK que se quiere obtener. Una vez que se tiene el archivo con el JDK se requiere ejecutar el archivo para realizar la instalación. 1.3.¿ Cómo crear y ejecutar el programa hola mundo con el JDK bajo Windows? Para crear un programa en Java se requiere un editor de textos:
Lo convencional es utilizar los comentarios estilo C para comentarios que requieren varias líneas. Los comentarios estilo C++ se utilizan para hacer anotaciones al final de una línea de código. Por ejemplo en el programa anterior podríamos agregar comentarios. /* Este programa despliega una linea con el mensaje Hola mundo / public class Hola { // Declaracion de la clase public static void main(String[] args) { // Metodo principal System.out.println(“Hola mundo”); // Mensaje } } 1.5. La entrada de datos La entrada de datos es más sensible a los errores, si la entrada de datos no es del tipo correcto, el programa falla. Este tipo de error se llama excepción. Java provee mecanismos especiales para manejar las excepciones. La forma más simple de manejar las excepciones de entrada/salida es a través de la cláusula throws IOException sólo hay que agregar está cláusula a la declaración del método main. Ejemplo 1.2: Entrada interactiva import java.io.; public class EntradaInteractiva { public static void main(String[] args) throws IOException { InputStreamReader lector = new InputStreamReader(System.in); BufferedReader entrada = new BufferedReader(lector); System.out.println(“Escribe tu nombre: “); String nombre = entrada.readLine(); System.out.println(“Hola, “+ nombre + “.”); } } Este programa despliega en la pantalla el mensaje “Escribe tu nombre: “ y espera una entrada de datos. Cuando el usuario escribe su nombre y presiona la tecla Enter, el sistema despliega “Hola, y el nombre del usuario”. La primera línea del programa es import java.io.*; Esto le dice al compilador que busque en el paquete (biblioteca) java.io la definición de las clases de entrada/salida que se utilizan en el programa. La cuarta línea define el objeto lector como una instancia de la clase InputStreamReader, atándola al flujo de entrada del sistema System.in. Esto significa que el objeto lector servirá como un conducto del teclado al programa. La quinta línea define al objeto entrada como una instancia de la clase BufferedReader, atándola al objeto lector. Esto significa que el objeto entrada puede ser usado para extraer el dato de entrada de una manera fácil. En particular, es posible utilizar el método readLine() para leer una cadena de caracteres completa desde el teclado y guardarla en un objeto String, esto se hace en la séptima línea del programa: String
nombre = entrada.readLine();. Esto declara el objeto nombre de tipo String y es inicializado al valor regresado por el método entrada.readLine(). El resultado es que el objeto nombre contendrá lo que el usuario teclee. La expresión “Hola, “ + nombre + “.” Significa que se deben concatenar las tres cadenas para formar una nueva. 1.6. La entrada numérica La entrada en el ejemplo anterior fue un String: una cadena de caracteres. Las cadenas de caracteres y los números son procesados de manera distinta. Por ejemplo el operador + funciona sobre ambos tipos, pero con resultados muy distintos. En el caso de números se realiza una suma y en el caso de cadenas de caracteres se realiza una concatenación. Ejemplo 1.3: Cálculo del año de nacimiento import java.io.; public class Nacimiento { public static void main(String[] args) throws IOException { InputStreamReader lector = new InputStreamReader(System.in); BufferedReader entrada = new BufferedReader(lector); System.out.println(“Escribe tu edad: “); String cadena = entrada.readLine(); int edad = new Integer(cadena).intValue(); System.out.println(“Tu tienes “ + edad + “años ahora”); int ano = 2002 – edad; System.out.println(“Probablemente naciste en “ + ano); } } Al igual que el programa anterior también se importan clases del paquete java.io. También se incluye la cláusula throws IOException en el método main() para usar el método readLine(). Después de leer la entrada como un String, se convierte el dato en un valor entero con la expresión new Integer(text).intValue(). Este valor entero se utiliza para iniciar la variable edad que es de tipo int. El programa despliega ese valor, calcula el año de nacimiento y lo despliega también. Ejemplo 1.4: Cálculo del área de un círculo import java.io.; public class Area { public static void main(String[] args) throws IOException { InputStreamReader lector = new InputStreamReader(System.in); BufferedReader entrada = new BufferedReader(lector); System.out.println(“Escribe el radio: “); String cadena = entrada.readLine(); Double x = new Double(cadena); double radio = x.doubleValue(); System.out.print(“El area del circulo de radio “ + radio);
nombre-del-tipo nombre-de-la-variable = valor-inicial; Ejemplo 1.5: Tipos de datos primitivos public class DespliegaTiposDeDatos { public static void main(String[] args) { boolean b = false; char c = ‘R’; byte j = 127; short k = 32767; int m = 2147483647; long n = 9223372036854775807L; // L es por long float x = 3.14159265F; // F es por flota double y = 3.141592653589793238; System.out.println(“b = “ + b); System.out.println(“c = “ + c); System.out.println(“j = “ + j); System.out.println(“k = “ + k); System.out.println(“m = “ + m); System.out.println(“n = “ + n); System.out.println(“x = “ + x); System.out.println(“y = “ + y); } } Para los valores literales de tipo long y flota es necesario escribir las letras L y F al final de la literal, respectivamente. 1.8. La aritmética y los operadores Un operador es una función que tiene un nombre simbólico especial y es invocado a través de ese símbolo en una expresión. Los operadores aritméticos y de asignación de Java son los siguientes: Aritméticos: +, -, *, /, % De asignación: +=, -=, *=, /=, %=, &=, ^=, |= Incremento/decremento: ++, -- Ejemplo 1.6: Operadores aritméticos, de incremento y de decremento public class Aritmetica { public static void main(String[] args) { char c = ‘R’; byte j = 127; short k = 32767; int m = 25, n = 7; System.out.println(“c = “ + c); ++c; System.out.println(“c = “ + c);
System.out.println(“j = “ + j); --j; System.out.println(“j = “ + j); ++j; System.out.println(“j = “ + j); ++j; System.out.println(“j = “ + j); System.out.println(“k = “ + k); K -= 4; System.out.println(“k = “ + k); K += 5; System.out.println(“k = “ + k); System.out.println(“m = “ + m); System.out.println(“n = “ + n); int suma = m + n; System.out.println(“m + n = ” + suma); int resta = m - n; System.out.println(“m - n = ” + resta); int multiplicacion = m * n; System.out.println(“m * n = ” + multiplicacion); int division = m / n; System.out.println(“m / n = ” + division); } } La expresión ++c indica que se debe incrementar la variable c a su siguiente valor. Cuando una variable es incrementada a su siguiente valor después del valor mayor, se le asigna el valor negativo menor. Preguntas de repaso
2. Las cadenas de caracteres Una cadena es una secuencia de caracteres. Las palabras, oraciones y nombres son cadenas. En esta unidad se describen las dos clases de cadenas fundamentales: String y StringBuffer. 2.1. La clase String El tipo mas simple de cadena en Java es un objeto de la clase String. Estos objetos son inmutables, no pueden ser cambiados. Ejemplo 2.1: Operaciones sobre una cadena public class Alfabeto { public static void main(String[] args) { String alfabeto = “ABCDEFGHIJKLMNÑOPQRSTUVWXYZ”; System.out.println(alfabeto); System.out.println(“Esta cadena contiene “ + alfabeto.length() + “caracteres”); System.out.println(“El caracter en la posicion 4 es “ + alfabeto.charAt(4)); System.out.println(“La posicion del caracter Z es “ + alfabeto.indexOf(‘Z’)); System.out.println(“El codigo hash para esta cadena es “ + alfabeto.hashCode()); } } El objeto llamado alfabeto es declarado en la tercera línea como una instancia de la clase String y es inicializado con la literal “ABCDEFGHIJKLMNÑOPQRSTUVWXYZ”. El resto del programa consiste de cinco enunciados de salida. ABCDEFGHIJKLMNÑOPQRSTUVWXYZ Esta cadena contiene 27 caracteres El caracter en la posicion 4 es E La posicion del caracter Z es 26 El codigo hash para esta cadena es - 2.2. Utilizando la clase String 2.2.1. Las subcadenas Una subcadena es una cadena cuyos caracteres forman una parte de otra cadena. La clase String incluye un método para extraer subcadenas.
Ejemplo 2.2: Subcadenas public class Subcadenas { public static void main(String[] args) { String alfabeto = “ABCDEFGHIJKLMNÑOPQRSTUVWXYZ”; System.out.println(alfabeto); System.out.println(“La subcadena en la posición 4 a 7 es “ + alfabeto.substring(4,8)); System.out.println(“La subcadena en la posición 0 a 7 es “ + alfabeto.substring(0,8)); System.out.println(“La subcadena en la posición 8 hasta el final es “ + alfabeto.substring(8)); } } La salida sería: ABCDEFGHIJKLMNÑOPQRSTUVWXYZ La subcadena de la posicion 4 a la 7 es EFGH La subcadena de la posicion 0 a la 7 es ABCDEFGH La subcadena de la posicion 8 hasta el final es IJKLMNÑOPQRSTUVWXYZ 2.2.2. Cambio de tipo de letras En Java se distingue entre las mayúsculas y las minúsculas. La clase String incluye métodos para cambiar los tipos de letras. Ejemplo 2.3: Minúsculas y mayúsculas public class MayusculasMinusculas { public static void main(String[] args) { String mm = “minusculasMAYUSCULAS”; System.out.println(mm); String minusculas = mm.toLowerCase(); System.out.println(minusculas); String mayusculas = mm.toUpperCase(); System.out.println(mayusculas); } } La salida sería: minusculasMAYUSCULAS minusculasmayusculas MINUSCULASMAYUSCULAS 2.2.3. Localización de un caracter en una cadena En la clase String se incluyen métodos para encontrar la posición de un caracter dentro de una cadena.
Ejemplo 2.6: Conversión de tipos primitivos en cadena public class ConversionPrimitivosCadena { public static void main(String[] args) { boolean b = true; char c = ‘$’; int n = 44; double x = 3.1415926535897932; System.out.println(“b = “ + b); System.out.println(“c = “ + c); System.out.println(“b = “ + n); System.out.println(“b = “ + x); String cadenab = String.valueOf(b); String cadenac = String.valueOf(c); String cadenan = String.valueOf(n); String cadenax = String.valueOf(x); System.out.println(“cadenab = “ + cadenab); System.out.println(“cadenab = “ + cadenac); System.out.println(“cadenab = “ + cadenan); System.out.println(“cadenab = “ + cadenax); } } La salida sería: b = true c = $ n = 44 x = 3. cadenab = true cadenac = $ cadenan = 44 cadenas = 3. Ejemplo 2.7: Conversión de cadenas en enteros public class ConversionCadenaEntero { public static void main(String[] args) { String hoy = “Septiembre 03, 2001”; String diaCadena = hoy.substring(11,12); int diaEntero = Integer.parseInt(diaCadena); System.out.println(“La fecha de hoy es: “ + hoy); System.out.println(“El dia de hoy es “ + diaEntero); } } La salida sería: La fecha de hoy es: Septiembre 03, 2001 El dia de hoy es 3
2.3. Los métodos de la clase String A continuación se presenta un resumen de los métodos de la clase String. String cadena = new String(); String cadena = new String(char[]); String cadena = new String(StringBuffer); String cadena = new String(String); String cadena = new String(char[],int, int); String cadena = String.copyValue(char[]); String cadena = String.copyValue(char[],int,int); String cadena = String.valueOf(boolean); String cadena = String.valueOf(char); String cadena = String.valueOf(int); String cadena = String.valueOf(float); String cadena = String.valueOf(double); String cadena = String.valueOf(char[]); String cadena = String.valueOf(char[],int,int); String cadena = String.valueOf(Object); s = cadena.toString(); i = cadena.length(); c = cadena.charAt(int); i = cadena.compareTo(String); s = cadena.concat(String); b = cadena.endsWith(String); b = cadena.startsWith(String); b = cadena.equals(String); b = cadena.equalsIgnoreCase(String); i = cadena.hash(); i = cadena.indexOf(char); i = cadena.indexOf(char,int); i = cadena.indexOf(String); i = cadena.indexOf(String,int); i = cadena.lastIndexOf(char); i = cadena.lastIndexOf(char,int); i = cadena.lastIndexOf(String); i = cadena.lastIndexOf(String,int); s = cadena.substring(int); s = cadena.substring(int,int); s = cadena.toChar(); s = cadena.toLowerCase(); s = cadena.toUpperCase(); 2.4. La clase StringBuffer La clase String es una de las más útiles en Java. Pero sus instancias (objetos) tienen la restricción de ser inmutables. Cuando se desea modificar un String, se tiene que hacer construyendo otro String, ya sea implícita o explícitamente. Java provee la clase StringBuffer para cadenas que necesitan ser modificadas. La razón para tener dos clases es que, para proveer la flexibilidad para cambiar una cadena, se requiere de más espacio en memoria y complejidad.
La salida sería: sb = Facultad de La longitud de sb es: 11 La capacidad de sb es: 22 sb = Facultad de Ciencias Quimicas La longitud de sb es: 29 La capacidad de sb es: 46 sb = Facultad de Ciencias Químicas e Ingenieria La longitud de sb es: 42 La capacidad de sb es: 46 El objeto sb es inicializado vacío con capacidad de 10 caracteres. Después de ejecutar el enunciado sb.append(), sb aumenta su capacidad si es necesario. La capacidad de sb es ajustada automáticamente por el sistema operativo. 2.5.2. Reemplazo de caracteres en un StringBuffer El siguiente programa ilustra como reemplazar los caracteres que componen un objeto StringBuffer. Ejemplo 2.10: Reemplazando los caracteres de un objeto StringBuffer public class ReemplazandoStringBuffer { public static void main(String[] args) { StringBuffer sb = new StringBuffer(); sb.append(“Ingenieria en Computacion”); System.out.println(“sb = “ + sb); System.out.println(“La longitud de sb es: “ + sb.length()); System.out.println(“La capacidad de sb es: “+sb.capacity()); sb.setCharAt(15,’K’); System.out.println(“sb = “ + sb); sb.insert(10,’s’); System.out.println(“sb = “ + sb); } } La salida sería: sb = Ingenieria en Computacion La longitud de sb es: 25 La capacidad de sb es: 34 sb = Ingenieria en Komputacion sb = Ingenierias en Computación Para modificar el contenido de un objeto StringBuffer se requiere utilizar los métodos setCharAt() e insert().
2.5.3. Conversión de StringBuffer en String El siguiente programa ilustra como convertir un objeto StringBuffer en un objeto String. Ejemplo 2.11: Conversión de StringBuffer en String public class ConversionStringBufferAString { public static void main(String[] args) { StringBuffer sb = new StringBuffer(“Ingenieria”); System.out.println(“sb = “ + sb); System.out.println(“La longitud de sb es: “ + sb.length()); System.out.println(“La capacidad de sb es: “+sb.capacity()); String s = sb.toString(); System.out.println(“s = “ + s); System.out.println(“La longitud de s es: “ + s.length()); sb.append(“” +s.substring(0,9) + “ en Computacion”); System.out.println(“sb = “ + sb); System.out.println(“La longitud de sb es: “ + sb.length()); System.out.println(“La capacidad de sb es: “+sb.capacity()); System.out.println(“s = “ + s); } } La salida sería: sb = Ingenieria La longitud de sb es: 10 La capacidad de sb es: 26 s = Ingenieria La longitud de s es: 10 sb = Ingenieria en Computacion La longitud de sb es: 25 La capacidad de sb es: 26 s = Ingenieria En el programa anterior se utiliza el método toString() para crear un objeto String a partir de un objeto StringBuffer(). 2.5.4. Reestableciendo la longitud e invirtiendo un objeto StringBuffer Ejemplo 2.12: Restablecimiento de la longitud e inversión de un StringBuffer. public class ReestableciendoLongitud { public static void main(String[] args) { StringBuffer sb = new StringBuffer(“Ingenieria en Computacion”); System.out.println(“sb = “ + sb); System.out.println(“La longitud de sb es: “ + sb.length()); System.out.println(“La capacidad de sb es: “+sb.capacity()); sb.setLength(10); System.out.println(“sb = “ + sb);