Introducción a Java
Características de Java
Java es un lenguaje de programación independiente de la plataforma, interpretado y que genera bytecode (código binario). A diferencia de C++, que es compilado, Java ofrece portabilidad entre diferentes sistemas operativos.
Entorno de ejecución de Java
El proceso de ejecución de un programa Java generalmente sigue estos pasos:
- Editor: El programa se escribe y se guarda en un archivo.
- Compilador: Convierte el código fuente en bytecode.
- Cargador de clases: Carga el bytecode en la memoria.
- Verificador de bytecode: Verifica la validez del código y las restricciones de seguridad.
- Intérprete: Ejecuta el bytecode, traduciéndolo a instrucciones que la computadora pueda entender.
Paquetes en Java
Los paquetes agrupan clases relacionadas. Se organizan como directorios y pueden formar jerarquías. Para referenciar una clase A del paquete P se usa P.A. Para referenciar el método M de la clase A del paquete P se usa P.A.M(). Si no se especifica un paquete, la clase se ubica en el paquete por defecto. La cláusula import
permite evitar la especificación completa del paquete al usar una clase.
Bibliotecas estándar de Java
- java.lang: Contiene clases básicas para números, cadenas, seguridad, etc. (incluido automáticamente).
- java.io: Para entrada y salida.
- java.util: Para fechas, horas, cadenas, números aleatorios, etc.
- java.net: Para soporte de redes.
- java.awt: Para interfaz gráfica de usuario (GUI) y ventanas.
- java.awt.image: Para manejo de imágenes.
- java.applet: Para creación de applets.
Tipos de programas Java
- Aplicaciones: Programas Java que incluyen el método
main()
. - Applets: Programas Java que se ejecutan en un navegador web, dotando de interactividad a las páginas web.
- Servlets: Programas Java que se ejecutan en un servidor web para extender su funcionalidad.
Conceptos básicos de Java
Instrucciones y expresiones
Una instrucción es un comando que produce una acción al ejecutar un programa. Una expresión es una instrucción que produce un valor. Este valor puede ser almacenado, usado en otra instrucción o descartado. El valor de retorno es el resultado de una expresión o función.
Variables
Existen tres tipos de variables en Java:
- Variables de instancia
- Variables de clase
- Variables locales: Declaradas dentro de métodos o bloques de código. Solo existen mientras el método se ejecuta.
Conversión de tipos
- Coerción (conversión ascendente): Conversión automática de tipos de datos. Ejemplo:
double gradosC, gradosF; gradosC = (gradosF - 32) * 5 / 9;
- Casting (conversión descendente): Conversión explícita de tipos de datos. Puede causar pérdida de información. Ejemplo:
gradosC = (int)(gradosF - 32) * 5 / 9;
Salida
Los métodos System.out.print()
y System.out.println()
se utilizan para imprimir texto en la consola.
Clase String
Los strings son objetos inalterables en Java. Las modificaciones a un string crean un nuevo string. Los strings comienzan en la posición 0 y su último carácter está en length() - 1
.
Operador
+
(concatenación)
Métodos
equals()
: Compara dos strings.compareTo()
: Compara dos strings lexicográficamente.length()
: Devuelve la longitud de un string.charAt()
: Devuelve el carácter en una posición específica.substring()
: Devuelve un subconjunto del string.toString()
: Convierte a String.append()
: concatena strings.valueOf()
: Convierte tipos primitivos a string.
Clase Math
Proporciona funciones matemáticas como abs()
, sqrt()
, cos()
, random()
, exp()
, pow()
, etc.
Clase StringBuffer
Permite crear strings mutables. Métodos importantes:
append()
delete()
setCharAt()
length()
capacity()
setLength()
replace()
Comparación entre Java y C++
Sintaxis
Java y C++ tienen una sintaxis similar.
Orientación a objetos
Java es puramente orientado a objetos, mientras que C++ permite la programación orientada a objetos y la programación estructurada.
Control sobre la plataforma
C++ da más control sobre el hardware, mientras que Java se ejecuta en una máquina virtual (JVM).
Código de máquina
C++ genera código de máquina para una plataforma específica. Java genera bytecode que se ejecuta en la JVM.
Liberación de memoria
C++ requiere la gestión manual de memoria. Java tiene un recolector de basura automático.
Punteros
C++ usa punteros. Java usa referencias a objetos.
Paquetes
Java usa paquetes para organizar clases. C++ no tiene un concepto equivalente.
Conversión implícita de tipos
C++ permite la conversión implícita de tipos. Java no.
Sobrecarga
C++ permite la sobrecarga de funciones y operadores. Java solo permite la sobrecarga de funciones.
Herencia múltiple
C++ soporta herencia múltiple. Java no.
Interfaces
Java tiene interfaces. C++ no.
Estructuras dinámicas
C++ usa la STL. Java usa el paquete java.util
.
Compiladores
C++ tiene varios compiladores. Java tiene un único compilador.
Objetos
En Java, todos los objetos heredan de la clase Object
. En C++ no hay un ancestro común para todos los objetos.
Clase Vector
La clase Vector
implementa un arreglo dinámico de objetos. Su tamaño se ajusta automáticamente. Se accede a los elementos mediante métodos.
Modificadores
- static: Para miembros de clase que no dependen de una instancia específica.
- final: Para declarar constantes.
- public, private, protected: Para controlar la visibilidad de miembros de clase.
Herencia
Permite crear nuevas clases a partir de clases existentes. Se usa la palabra clave extends
.
Sobrescritura de métodos (Overriding)
Permite modificar el comportamiento de un método heredado.
Constructores
Los constructores no se heredan, pero se pueden llamar con super()
.
Polimorfismo
Permite que una referencia a un objeto pueda referenciar objetos de diferentes tipos.
Operador instanceof
Comprueba si un objeto pertenece a una clase específica.
Métodos de uso general
equals()
: Compara dos objetos.clone()
: Crea una copia de un objeto.finalize()
: Se llama antes de que un objeto sea destruido por el recolector de basura.
Métodos de control de threads
wait()
: Detiene un hilo hasta que recibe una notificación.
Entrada
La clase InputStreamReader
se usa para leer desde la entrada estándar (teclado).
Objetos y Clases
En Java, las variables contienen referencias a objetos. Todos los objetos se crean con new
.