Programación en Java: Guía completa

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:

  1. Editor: El programa se escribe y se guarda en un archivo.
  2. Compilador: Convierte el código fuente en bytecode.
  3. Cargador de clases: Carga el bytecode en la memoria.
  4. Verificador de bytecode: Verifica la validez del código y las restricciones de seguridad.
  5. 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.