Está en la página 1de 297

Tutorial de Java

Nuestro tutorial básico de programación Java está diseñado para estudiantes y profesionales en
activo. Java es un lenguaje de programación de computadoras de uso general, seguro, concurrente,
basado en clases y orientado a objetos . Es una tecnología robusta ampliamente utilizada.

Que es Java
Java es un lenguaje de programación y una plataforma . Java es un lenguaje de programación de
alto nivel, robusto, orientado a objetos y seguro.

Java fue desarrollado por Sun Microsystems (que ahora es la subsidiaria de Oracle) en el año


1995. James Gosling es conocido como el padre de Java. Antes de Java, su nombre era Oak . Dado que
Oak ya era una empresa registrada, James Gosling y su equipo cambiaron el nombre de Oak a Java.

Plataforma : cualquier entorno de hardware o software en el que se ejecuta un programa se conoce


como plataforma. Dado que Java tiene un entorno de ejecución (JRE) y una API, se denomina
plataforma.

Ejemplo de Java
Echemos un vistazo rápido al ejemplo de programación de Java. Una descripción detallada del ejemplo
de Hello Java está disponible en la página siguiente.

1. class  Simple {  
2.     public static void  main (String args []) {    
3.      System.out.println ( "Hola Java" );  
4.     }  
5. }  
Pruébelo ahora
Solicitud
Según Sun, 3 mil millones de dispositivos ejecutan Java. Hay muchos dispositivos en los que se utiliza
actualmente Java. Algunos de ellos son los siguientes:

1. Aplicaciones de escritorio como Acrobat Reader, Media Player, antivirus, etc.

2. Aplicaciones web como irctc.co.in, javatpoint.com, etc.

3. Aplicaciones empresariales como aplicaciones bancarias.

4. Móvil

5. Sistema Integrado

6. Tarjeta electrónica

7. Robótica

8. Juegos, etc.

Tipos de aplicaciones Java


Existen principalmente 4 tipos de aplicaciones que se pueden crear usando programación Java:

1) Aplicación independiente

Las aplicaciones independientes también se conocen como aplicaciones de escritorio o aplicaciones


basadas en ventanas. Se trata de software tradicional que debemos instalar en todas las
máquinas. Ejemplos de aplicaciones independientes son Media player, antivirus, etc. AWT y Swing se
utilizan en Java para crear aplicaciones independientes.

2) Aplicación web

Una aplicación que se ejecuta en el lado del servidor y crea una página dinámica se llama aplicación
web. Actualmente, las tecnologías Servlet , JSP , Struts , Spring , Hibernate , JSF , etc. se utilizan para
crear aplicaciones web en Java.

3) Aplicación empresarial

Una aplicación que se distribuye por naturaleza, como aplicaciones bancarias, etc., se denomina
aplicación empresarial. Tiene las ventajas de la seguridad de alto nivel, el equilibrio de carga y la
agrupación en clústeres. En Java, EJB se utiliza para crear aplicaciones empresariales.

4) Aplicación móvil

Una aplicación creada para dispositivos móviles se denomina aplicación móvil. Actualmente, Android y
Java ME se utilizan para crear aplicaciones móviles.

Plataformas / Ediciones Java


Hay 4 plataformas o ediciones de Java:
1) Java SE (Edición estándar de Java)

Es una plataforma de programación Java. Incluye API de programación Java como java.lang, java.io,
java.net, java.util, java.sql, java.math, etc. Incluye temas centrales como OOP, String , Regex,
Exception, Inner classes, Multithreading, Flujo de E / S, Redes, AWT, Swing, Reflexión, Colección, etc.

2) Java EE (Java Enterprise Edition)

Es una plataforma empresarial que se utiliza principalmente para desarrollar aplicaciones web y
empresariales. Está construido sobre la plataforma Java SE. Incluye temas como Servlet, JSP, Web
Services, EJB, JPA , etc.

3) Java ME (Java Micro Edition)

Es una microplataforma que se utiliza principalmente para desarrollar aplicaciones móviles.

4) JavaFX

Se utiliza para desarrollar aplicaciones de Internet enriquecidas. Utiliza una API de interfaz de usuario
liviana.

Requisito previo
Para aprender Java, debe tener los conocimientos básicos del lenguaje de programación C / C ++.

Audiencia
Nuestro tutorial de programación Java está diseñado para ayudar a principiantes y profesionales.

Problema
Te aseguramos que no encontrarás ningún problema en este tutorial de Java. Sin embargo, si hay algún
error, publique el problema en el formulario de contacto.

Historia de Java
1. Historia de Java

2. Historial de versiones de Java

La historia de Java es muy interesante. Java se diseñó originalmente para la televisión interactiva,


pero era una tecnología demasiado avanzada para la industria de la televisión por cable digital en ese
momento. La historia de Java comienza con Green Team. Los miembros del equipo de Java (también
conocido como Green Team ) iniciaron este proyecto para desarrollar un lenguaje para dispositivos
digitales como decodificadores, televisores, etc. Sin embargo, era adecuado para la programación de
Internet. Más tarde, Netscape incorporó la tecnología Java.

Los principios para crear programación Java fueron "Simple, Robusto, Portátil, Independiente de la
Plataforma, Seguro, Alto Rendimiento, Multiproceso, Arquitectura Neutral, Orientado a Objetos,
Interpretado y Dinámico". Java fue desarrollado por James Gosling, conocido como el padre de Java, en
1995. James Gosling y los miembros de su equipo comenzaron el proyecto a principios de los años 90.
Actualmente, Java se utiliza en programación de Internet, dispositivos móviles, juegos, soluciones de
comercio electrónico, etc. Se dan puntos importantes que describen la historia de Java.

1) James Gosling , Mike Sheridan y Patrick Naughton iniciaron el proyecto de lenguaje Java en


junio de 1991. El pequeño equipo de ingenieros solares llamado Green Team .

2) Inicialmente diseñado para pequeños sistemas integrados en aparatos electrónicos como


decodificadores.

3) En primer lugar, James Gosling lo llamó "Greentalk" y la extensión del archivo fue .gt.

4) Después de eso, se llamó Oak y se desarrolló como parte del proyecto Green.

¿Por qué Java se llama "Oak"?


5) ¿Por qué Oak? El roble es un símbolo de fuerza y elegido como árbol nacional de muchos países
como Estados Unidos, Francia, Alemania, Rumanía, etc.

6) En 1995, Oak pasó a llamarse "Java" porque ya era una marca comercial de Oak Technologies.

¿Por qué la programación de Java se llama "Java"?


7) ¿Por qué habían elegido el nombre Java para el lenguaje Java? El equipo se reunió para elegir
un nuevo nombre. Las palabras sugeridas eran "dinámico", "revolucionario", "Seda", "sacudida", "ADN",
etc. Querían algo que reflejara la esencia de la tecnología: revolucionario, dinámico, vivo, fresco, único y
fácil de hechizo y divertido de decir.

Según James Gosling, "Java fue una de las mejores opciones junto con Silk ". Dado que Java era tan
único, la mayoría de los miembros del equipo prefirieron Java que otros nombres.
8) Java es una isla de Indonesia donde se produjo el primer café (llamado café Java). Es una especie de
grano de café expreso. El nombre de Java fue elegido por James Gosling mientras tomaba un café cerca
de su oficina.

9) Tenga en cuenta que Java es solo un nombre, no un acrónimo.

10) Desarrollado inicialmente por James Gosling en Sun Microsystems (que ahora es una subsidiaria de
Oracle Corporation) y lanzado en 1995.

11) En 1995, la revista Time calificó a Java como uno de los diez mejores productos de 1995 .

12) JDK 1.0 lanzado en (23 de enero de 1996). Después del primer lanzamiento de Java, se agregaron
muchas características adicionales al lenguaje. Ahora Java se está utilizando en aplicaciones de Windows,
aplicaciones web, aplicaciones empresariales, aplicaciones móviles, tarjetas, etc. Cada nueva versión
agrega las nuevas características de Java.

Historia de Java
1. Historia de Java

2. Historial de versiones de Java

La historia de Java es muy interesante. Java se diseñó originalmente para la televisión interactiva,


pero era una tecnología demasiado avanzada para la industria de la televisión por cable digital en ese
momento. La historia de Java comienza con Green Team. Los miembros del equipo de Java (también
conocido como Green Team ) iniciaron este proyecto para desarrollar un lenguaje para dispositivos
digitales como decodificadores, televisores, etc. Sin embargo, era adecuado para la programación de
Internet. Más tarde, Netscape incorporó la tecnología Java.

Los principios para crear programación Java fueron "Simple, Robusto, Portátil, Independiente de la
Plataforma, Seguro, Alto Rendimiento, Multiproceso, Arquitectura Neutral, Orientado a Objetos,
Interpretado y Dinámico". Java fue desarrollado por James Gosling, conocido como el padre de Java, en
1995. James Gosling y los miembros de su equipo comenzaron el proyecto a principios de los años 90.

Actualmente, Java se utiliza en programación de Internet, dispositivos móviles, juegos, soluciones de


comercio electrónico, etc. Se dan puntos importantes que describen la historia de Java.
1) James Gosling , Mike Sheridan y Patrick Naughton iniciaron el proyecto de lenguaje Java en
junio de 1991. El pequeño equipo de ingenieros solares llamado Green Team .

2) Inicialmente diseñado para pequeños sistemas integrados en aparatos electrónicos como


decodificadores.

3) En primer lugar, James Gosling lo llamó "Greentalk" y la extensión del archivo fue .gt.

4) Después de eso, se llamó Oak y se desarrolló como parte del proyecto Green.

¿Por qué Java se llama "Oak"?


5) ¿Por qué Oak? El roble es un símbolo de fuerza y elegido como árbol nacional de muchos países
como Estados Unidos, Francia, Alemania, Rumanía, etc.

6) En 1995, Oak pasó a llamarse "Java" porque ya era una marca comercial de Oak Technologies.

¿Por qué la programación de Java se llama "Java"?


7) ¿Por qué habían elegido el nombre Java para el lenguaje Java? El equipo se reunió para elegir
un nuevo nombre. Las palabras sugeridas eran "dinámico", "revolucionario", "Seda", "sacudida", "ADN",
etc. Querían algo que reflejara la esencia de la tecnología: revolucionario, dinámico, vivo, fresco, único y
fácil de hechizo y divertido de decir.

Según James Gosling, "Java fue una de las mejores opciones junto con Silk ". Dado que Java era tan
único, la mayoría de los miembros del equipo prefirieron Java que otros nombres.

8) Java es una isla de Indonesia donde se produjo el primer café (llamado café Java). Es una especie de
grano de café expreso. El nombre de Java fue elegido por James Gosling mientras tomaba un café cerca
de su oficina.

9) Tenga en cuenta que Java es solo un nombre, no un acrónimo.

10) Desarrollado inicialmente por James Gosling en Sun Microsystems (que ahora es una subsidiaria de
Oracle Corporation) y lanzado en 1995.

11) En 1995, la revista Time calificó a Java como uno de los diez mejores productos de 1995 .

12) JDK 1.0 lanzado en (23 de enero de 1996). Después del primer lanzamiento de Java, se agregaron
muchas características adicionales al lenguaje. Ahora Java se está utilizando en aplicaciones de Windows,
aplicaciones web, aplicaciones empresariales, aplicaciones móviles, tarjetas, etc. Cada nueva versión
agrega las nuevas características de Java.

C ++ frente a Java
Existen muchas diferencias y similitudes entre el lenguaje de programación C ++ y Java . A continuación
se proporciona una lista de las principales diferencias entre C ++ y Java:

Índice de C ++ Java
comparación

Plataforma C ++ depende de la plataforma. Java es independiente de la platafor


independiente

Utilizado C ++ se utiliza principalmente para la Java se utiliza principalmente para la


principalmente programación de sistemas. de aplicaciones. Se utiliza ampliame
para aplicaciones móviles, empresariales,
web y de ventana.

Objetivo de C ++ fue diseñado para la Java fue diseñado y creado como un


diseño programación de aplicaciones y sistemas de impresión, pero luego s
sistemas. Era una extensión soporte de la red informática. Fue di
del lenguaje de programación C . objetivo de ser fácil de usar y accesi
audiencia más amplia.

Ir C ++ admite la instrucción goto . Java no admite la declaración goto.

Herencia múltiple C ++ admite herencia múltiple. Java no admite herencia múltiple a t


clases. Se puede lograr mediante int

Sobrecarga del C ++ admite la sobrecarga del Java no admite la sobrecarga del op


operador operador .

Punteros C ++ admite punteros . Puede Java admite puntero internamente. 


escribir un programa de puntero en C puede escribir el programa de punte
++. java. Significa que java tiene soport
restringido en java.

Compilador e C ++ solo usa el compilador. C ++ se Java utiliza tanto el compilador como


intérprete compila y ejecuta utilizando el código fuente de Java se convierte e
compilador que convierte el código bytes en el momento de la compilac
fuente en código de máquina, por lo ejecuta este bytecode en tiempo de
que C ++ depende de la plataforma. produce una salida. Java se interpre
independiente de la plataforma.
Llamar por valor y C ++ admite tanto la llamada por Java solo admite llamadas por valor.
Llamar por valor como la llamada por referencia. por referencia en java.
referencia

Estructura y C ++ admite estructuras y uniones. Java no admite estructuras y unione


Unión

Soporte de hilo C ++ no tiene soporte integrado para Java tiene soporte para subprocesos


subprocesos. Se basa en bibliotecas
de terceros para la compatibilidad con
subprocesos.

Comentario de C ++ no admite comentarios de Java admite comentarios de docume


documentación documentación. * /) para crear documentación para
de Java.

Palabra clave C ++ admite palabras clave virtuales Java no tiene una palabra clave virtu
virtual para que podamos decidir si anular o anular todos los métodos no estático
no una función. predeterminada. En otras palabras,
estáticos son virtuales por defecto.

desplazamiento a C ++ no admite el operador >>>. Java admite el operador de desplaza


la derecha sin derecha >>> sin firmar que llena un
firmar >>> superior para los números negativos
positivos, funciona igual que el oper

Árbol de herencia C ++ siempre crea un nuevo árbol de Java usa un solo árbol de herencia s
herencia. todas las clases son hijo de la clase
java. La clase de objeto es la raíz de
de herencia en java.

Hardware C ++ está más cerca del hardware. Java no es tan interactivo con el har

Orientado a C ++ es un lenguaje orientado a Java también es un lenguaje orienta


objetos objetos. Sin embargo, en lenguaje C, embargo, todo (excepto los tipos fun
la jerarquía de raíz única no es un objeto en Java. Es una jerarquía
posible. que todo se deriva de java.lang.Obje

Nota
o Java no admite argumentos predeterminados como C ++.
o Java no admite archivos de encabezado como C ++. Java usa la palabra clave import para incluir
diferentes clases y métodos.

Ejemplo de C ++
Archivo: main.cpp

1. #include <iostream>  
2. usando el espacio de nombres  std;   
3. int  main () {  
4.    cout <<  "Hola Programación C ++" ;  
5.    return  0;  
6. }  

Ejemplo de Java
Archivo: Simple.java

1. class  Simple {  
2.     public static void  main (String args []) {    
3.      System.out.println ( "Hola Java" );  
4.     }  
5. }  

Primer programa Java | Ejemplo de Hola mundo


1. Requisitos de Software

2. Creación de un ejemplo de Hello Java

3. No se reconoce la resolución de javac

En esta página, aprenderemos a escribir el programa simple de java. Podemos escribir un programa


simple hello java fácilmente después de instalar el JDK.

Para crear un programa java simple, necesita crear una clase que contenga el método principal. Primero
entendamos el requisito.

El requisito para el ejemplo de Java Hello World


Para ejecutar cualquier programa java, necesita

o Instale el JDK si no lo ha instalado, descargue el JDK e instálelo.

o Establezca la ruta del directorio jdk / bin. http://www.javatpoint.com/how-to-set-path-in-java

o Crea el programa java

o Compila y ejecuta el programa java


Creación de un ejemplo de Hello World
Creemos el programa hello java:

1. class  Simple {  
2.     public static void  main (String args []) {    
3.      System.out.println ( "Hola Java" );  
4.     }  
5. }  
Pruébelo ahora

guarde este archivo como Simple.java

Compilar: javac Simple.java

Ejecutar: java simple


Salida: Hola Java

Flujo de compilación:

Cuando compilamos un programa Java usando la herramienta javac, el compilador java convierte el
código fuente en código de bytes.

Parámetros utilizados en el primer programa Java


Veamos cuál es el significado de class, public, static, void, main, String [], System.out.println ().

o La palabra clave class se usa para declarar una clase en java.

o La palabra clave pública es un modificador de acceso que representa visibilidad. Significa que es


visible para todos.
o static es una palabra clave. Si declaramos cualquier método como estático, se conoce como
método estático. La principal ventaja del método estático es que no es necesario crear un objeto
para invocar el método estático. El método principal lo ejecuta la JVM, por lo que no es necesario
crear un objeto para invocar el método principal. Así que ahorra memoria.
o void es el tipo de retorno del método. Significa que no devuelve ningún valor.

o main representa el punto de partida del programa.


o String [] args se utiliza para el argumento de la línea de comandos. Lo aprenderemos más
tarde.

o System.out.println () se usa para imprimir declaraciones. Aquí, System es una clase, out es el
objeto de la clase PrintStream, println () es el método de la clase PrintStream. Aprenderemos
sobre el funcionamiento interno de la declaración System.out.println más adelante.

Para escribir el programa simple, debe abrir el bloc de notas en el menú de inicio -> Todos los
programas -> Accesorios -> Bloc de notas y escribir un programa simple como se muestra a
continuación:

Como se muestra en el diagrama anterior, escriba el programa simple de Java en el bloc de notas y guárd
Simple.java. Para compilar y ejecutar este programa, debe abrir el símbolo del sistema en el menú de in
los programas -> Accesorios -> símbolo del sistema .
Para compilar y ejecutar el programa anterior, vaya primero a su directorio actual; mi directorio actual es
aqui:

Compilar: javac Simple.java

Ejecutar: java simple

¿De cuántas formas podemos escribir un programa Java?


Hay muchas formas de escribir un programa Java. Las modificaciones que se pueden hacer en un
programa Java se dan a continuación:

1) Al cambiar la secuencia de los modificadores, el prototipo del método no cambia en Java.

Veamos el código simple del método principal.

1. static public void  main (String args [])    

2) La notación de subíndice en la matriz de Java se puede usar después del tipo, antes de la
variable o después de la variable.
Veamos los diferentes códigos para escribir el método principal.

1. public static void  main (String [] args)    


2. public static void  main (String [] args)    
3. public static void  main (String args [])    

3) Puede proporcionar soporte var-args al método principal pasando 3 elipses (puntos)

Veamos el código simple de usar var-args en el método principal. Aprenderemos sobre var-args más
adelante en el capítulo Nuevas características de Java.

1. public static void  main (String ... args)    

4) Tener un punto y coma al final de la clase es opcional en Java.

Veamos el código simple.

1. clase  A {  
2. static public void  main (String ... args) {    
3. System.out.println ( "hola java4" );  
4. }  
5. };  

Firma válida del método principal de Java


1. public static void  main (String [] args)    
2. public static void  main (String [] args)    
3. public static void  main (String args [])    
4. public static void  main (String ... args)    
5. static public void  main (String [] args)    
6. public static final void  main (String [] args)     
7.  principal vacío estático público final (String [] args)     
8. final estrictofp public static void  main (String [] args)      

Firma del método principal de Java no válida


1. public void  main (String [] args)   
2. static void  main (String [] args)   
3. public void static  main (String [] args)    
4.  principal vacío estático público abstracto (String [] args)     
¿Resolver un error "javac no se reconoce como un comando interno o
externo"?
Si ocurre un problema como el que se muestra en la siguiente figura, debe establecer la ruta. Dado que
DOS no conoce javac o java, necesitamos establecer la ruta. La ruta no es necesaria en tal caso si
guarda su programa dentro del directorio JDK / bin. Sin embargo, es un enfoque excelente para marcar
el camino. Haga clic aquí para saber cómo establecer la ruta en java .

Detalles internos del programa Hello Java


1. Detalles internos de Hello Java

En la página anterior, hemos aprendido sobre el primer programa, cómo compilar y ejecutar el primer
programa java. Aquí, vamos a aprender qué sucede al compilar y ejecutar el programa java. Además,
veremos alguna pregunta basada en el primer programa.

¿Qué sucede en tiempo de compilación?


En el momento de la compilación, el compilador Java compila el archivo java (no interactúa con el
sistema operativo) y convierte el código java en código de bytes.

¿Qué sucede en tiempo de ejecución?


En tiempo de ejecución, se realizan los siguientes pasos:
Classloader: es el subsistema de JVM que se utiliza para cargar archivos de clases.

Verificador de Bytecode: comprueba los fragmentos de código en busca de código ilegal que pueda viol
acceso a los objetos.

Intérprete: lea el flujo de código de bytes y luego ejecute las instrucciones.

P) ¿Puede guardar un archivo fuente de Java con otro nombre que no


sea el de la clase?
Sí, si la clase no es pública. Se explica en la figura que se muestra a continuación:
Compilar: javac Hard.java

Ejecutar: java simple

P) ¿Puede tener varias clases en un archivo fuente de Java?


Sí, como ilustra la figura que se muestra a continuación:

Cómo establecer la ruta en Java


1. Cómo establecer la ruta de JDK en el sistema operativo Windows
1. Configuración de la ruta temporal de JDK

2. Configuración de la ruta permanente de JDK

2. Cómo establecer la ruta de JDK en el sistema operativo Linux

Es necesario establecer la ruta para usar herramientas como javac, java, etc.

Si está guardando el archivo fuente de Java dentro del directorio JDK / bin, no es necesario establecer la
ruta porque todas las herramientas estarán disponibles en el directorio actual.

Sin embargo, si tiene su archivo Java fuera de la carpeta JDK / bin, es necesario establecer la ruta de
JDK.

Hay dos formas de establecer la ruta en Java:

1. Temporal

2. Permanente

1) Cómo configurar la ruta temporal de JDK en Windows


Para establecer la ruta temporal de JDK, debe seguir los siguientes pasos:

o Abra el símbolo del sistema

o Copie la ruta del directorio JDK / bin

o Escribir en el símbolo del sistema: establecer ruta = ruta_copiada

Por ejemplo:
establecer ruta = C: \ Archivos de programa \ Java \ jdk1.6.0_23 \ bin

Veámoslo en la figura que figura a continuación:


2) Cómo configurar la ruta permanente de JDK en Windows
Para configurar la ruta permanente de JDK, debe seguir estos pasos:

o Vaya a las propiedades de MyComputer -> pestaña avanzada -> variables de entorno -> nueva
pestaña de la variable de usuario -> escriba la ruta en el nombre de la variable -> escriba la ruta
de la carpeta bin en el valor de la variable -> ok -> ok -> ok

Por ejemplo:
1) Vaya a las propiedades de MyComputer
2) Haga clic en la pestaña avanzada
3) Haga clic en las variables de entorno
4) Haga clic en la nueva pestaña de variables de usuario
5) Escriba la ruta en el nombre de la variable
6) Copie la ruta de la carpeta bin
7) Pegar la ruta de la carpeta bin en el valor de la variable
8) Haga clic en el botón Aceptar
9) Haga clic en el botón Aceptar
Ahora tu camino permanente está establecido. Ahora puede ejecutar cualquier programa de Java desde
cualquier unidad.

Configuración de la ruta de Java en el sistema operativo


Linux
Configurar la ruta en el sistema operativo Linux es lo mismo que configurar la ruta en el sistema
operativo Windows. Pero, aquí usamos la herramienta de exportación en lugar de configurar. Veamos
cómo establecer la ruta en el sistema operativo Linux:

export PATH = $ PATH: /home/jdk1.6.01/bin/

Aquí, hemos instalado el JDK en el directorio de inicio en Root (/ home).

Diferencia entre JDK, JRE y JVM


1. Un resumen de JVM

2. Entorno de ejecución de Java (JRE)

3. Kit de desarrollo de Java (JDK)

Debemos comprender las diferencias entre JDK, JRE y JVM antes de continuar con Java . Vea la breve
descripción general de JVM aquí.
Si desea obtener un conocimiento detallado de Java Virtual Machine, pase a la página siguiente. En
primer lugar, veamos las diferencias entre JDK, JRE y JVM.

JVM
JVM (Java Virtual Machine) es una máquina abstracta. Se llama máquina virtual porque no existe
físicamente. Es una especificación que proporciona un entorno de ejecución en el que se puede ejecutar
el código de bytes de Java. También puede ejecutar aquellos programas que están escritos en otros
lenguajes y compilados en código de bytes de Java.

Las JVM están disponibles para muchas plataformas de hardware y software. JVM, JRE y JDK dependen
de la plataforma porque la configuración de cada sistema operativo es diferente entre sí. Sin embargo,
Java es independiente de la plataforma. Hay tres nociones de
JVM: especificación , implementación e instancia .

La JVM realiza las siguientes tareas principales:

o Código de cargas

o Verifica el código

o Ejecuta código

o Proporciona un entorno de ejecución

Más detalles.

JRE
JRE es un acrónimo de Java Runtime Environment. También está escrito como Java RTE. Java Runtime
Environment es un conjunto de herramientas de software que se utilizan para desarrollar aplicaciones
Java. Se utiliza para proporcionar el entorno de ejecución. Es la implementación de JVM. Existe
físicamente. Contiene un conjunto de bibliotecas + otros archivos que JVM usa en tiempo de ejecución.

La implementación de JVM también es lanzada activamente por otras compañías además de Sun Micro
Systems.
JDK
JDK es un acrónimo de Java Development Kit. El Java Development Kit (JDK) es un entorno de desarrollo
de software que se utiliza para desarrollar aplicaciones y subprogramas Java . Existe
físicamente. Contiene herramientas de desarrollo JRE +.

JDK es una implementación de cualquiera de las siguientes Plataformas Java lanzadas por Oracle
Corporation:

o Plataforma Java de edición estándar

o Plataforma Java Enterprise Edition

o Plataforma Java Micro Edition

El JDK contiene una máquina virtual Java privada (JVM) y algunos otros recursos como un intérprete /
cargador (java), un compilador (javac), un archivador (jar), un generador de documentación (Javadoc),
etc. para completar el desarrollo de una aplicación Java.
Arquitectur
a JVM (máquina virtual Java)
1. máquina virtual de Java

2. Arquitectura interna de JVM

JVM (Java Virtual Machine) es una máquina abstracta. Es una especificación que proporciona un entorno
de ejecución en el que se puede ejecutar el código de bytes de Java.

Las JVM están disponibles para muchas plataformas de hardware y software (es decir, la JVM depende de
la plataforma).

Que es JVM
Es:

1. Una especificación donde se especifica el funcionamiento de la máquina virtual Java. Pero el


proveedor de implementación es independiente para elegir el algoritmo. Su implementación ha
sido proporcionada por Oracle y otras empresas.

2. Una implementación Su implementación se conoce como JRE (Java Runtime Environment).

3. Instancia en tiempo de ejecución Siempre que escribe un comando java en el símbolo del


sistema para ejecutar la clase java, se crea una instancia de JVM.

Que hace
La JVM realiza la siguiente operación:

o Código de cargas

o Verifica el código

o Ejecuta código
o Proporciona un entorno de ejecución

JVM proporciona definiciones para:

o Área de memoria

o Formato de archivo de clase

o Registro establecido

o Montón de recolección de basura

o Informe de errores fatales, etc.

Arquitectura JVM
Entendamos la arquitectura interna de JVM. Contiene cargador de clases, área de memoria, motor de
ejecución, etc.
1) cargador de clases
Classloader es un subsistema de JVM que se utiliza para cargar archivos de clases. Siempre que
ejecutamos el programa java, el cargador de clases lo carga primero. Hay tres cargadores de clases
integrados en Java.

1. Bootstrap ClassLoader : este es el primer cargador de clases que es la superclase del cargador
de clases de extensión. Carga el archivo rt.jar que contiene todos los archivos de clase de Java
Standard Edition como clases de paquetes java.lang, clases de paquetes java.net, clases de
paquetes java.util, clases de paquetes java.io, clases de paquetes java.sql, etc.

2. Extension ClassLoader : este es el cargador de clases hijo de Bootstrap y el cargador de clases


padre del cargador de clases del sistema. Carga los archivos jar ubicados dentro del directorio $
JAVA_HOME / jre / lib / ext .

3. Cargador de clases de sistema / aplicación : este es el cargador de clases hijo del cargador de
clases de extensión. Carga los archivos de clase desde classpath. De forma predeterminada,
classpath se establece en el directorio actual. Puede cambiar la ruta de clases utilizando el
modificador "-cp" o "-classpath". También se conoce como cargador de clases de aplicaciones.

1. // Veamos un ejemplo para imprimir el nombre del cargador de clases  


2. clase pública  ClassLoaderExample   
3. {  
4.     public static void  main (String [] args)    
5.     {  
6.         // Imprimamos el nombre del cargador de clases de la clase actual.   
7.         // El cargador de clases de aplicación / sistema cargará esta clase  
8.         Clase c = ClassLoaderExample. clase ;  
9.         System.out.println (c.getClassLoader ());  
10.        // Si imprimimos el nombre del cargador de clases de String, imprimirá nulo porque es un  
11.        // clase incorporada que se encuentra en rt.jar, por lo que es cargada por Bootstrap classloader  
12.        System.out.println (String. Class .getClassLoader ());  
13.    }  
14.}     
Pruébelo ahora

Producción:

sun.misc.Launcher$AppClassLoader@4e0e2f2a
nulo

Estos son los cargadores de clases internos proporcionados por Java. Si desea crear su propio cargador
de clases, debe ampliar la clase ClassLoader.

2) Área de clase (método)


El área de clase (método) almacena estructuras por clase, como el grupo de constantes de tiempo de
ejecución, los datos de campo y método, el código de los métodos.
3) montón
Es el área de datos en tiempo de ejecución en la que se asignan los objetos.

4) Apilar
Java Stack almacena marcos. Contiene variables locales y resultados parciales, y juega un papel en la
invocación y devolución de métodos.

Cada hilo tiene una pila JVM privada, creada al mismo tiempo que el hilo.

Se crea un nuevo marco cada vez que se invoca un método. Una trama se destruye cuando se completa
la invocación de su método.

5) Registro de contador de programa


El registro de PC (contador de programa) contiene la dirección de la instrucción de la máquina virtual
Java que se está ejecutando actualmente.

6) Pila de métodos nativos


Contiene todos los métodos nativos utilizados en la aplicación.

7) Motor de ejecución
Contiene:

1. Un procesador virtual

2. Intérprete: lea el flujo de código de bytes y luego ejecute las instrucciones.

3. Compilador Just-In-Time (JIT): se utiliza para mejorar el rendimiento. JIT compila partes del
código de bytes que tienen una funcionalidad similar al mismo tiempo y, por lo tanto, reduce la
cantidad de tiempo necesario para la compilación. Aquí, el término "compilador" se refiere a un
traductor del conjunto de instrucciones de una máquina virtual Java (JVM) al conjunto de
instrucciones de una CPU específica.

8) Interfaz nativa de Java


Java Native Interface (JNI) es un marco que proporciona una interfaz para comunicarse con otra
aplicación escrita en otro lenguaje como C, C ++, Assembly, etc. Java usa el marco JNI para enviar
resultados a la consola o interactuar con las bibliotecas del sistema operativo.

Variables de Java
Una variable es un contenedor que contiene el valor mientras se ejecuta el programa Java . A una
variable se le asigna un tipo de datos.

Variable es el nombre de la ubicación de la memoria. Hay tres tipos de variables en Java: local, instancia
y estática.

Hay dos tipos de tipos de datos en Java : primitivos y no primitivos.


Variable
La variable es el nombre del área reservada asignada en la memoria . En otras palabras, es un nombre
de ubicación de memoria . Es una combinación de "variable + capaz" que significa que su valor se puede
cambiar.

1. int  datos = 50 ; // Aquí los datos son variables  


Tipos de variables
Hay tres tipos de variables en Java :

o variable local

o Instancia variable

o variable estática
1) Variable local

Una variable declarada dentro del cuerpo del método se llama variable local. Puede usar esta variable
solo dentro de ese método y los otros métodos de la clase ni siquiera son conscientes de que la variable
existe.

Una variable local no se puede definir con la palabra clave "estática".

2) Variable de instancia

Una variable declarada dentro de la clase pero fuera del cuerpo del método, se llama variable de
instancia. No se declara estático .

Se llama variable de instancia porque su valor es específico de la instancia y no se comparte entre las
instancias.

3) Variable estática

Una variable que se declara como estática se llama variable estática. No puede ser local. Puede crear
una única copia de la variable estática y compartirla entre todas las instancias de la clase. La asignación
de memoria para la variable estática ocurre solo una vez cuando la clase se carga en la memoria.

Ejemplo para comprender los tipos de variables en java


1. clase  A {  
2. int  datos = 50 ; //Instancia variable  
3. estático int  m = 100 ; // variable estática   
4.  método vacío () {  
5. int  n = 90 ; //variable local  
6. }  
7. } // fin de clase  

Ejemplo de variable de Java: sumar dos números


1. class  Simple {  
2. public static void  main (String [] args) {    
3. int  a = 10 ;  
4. int  b = 10 ;  
5. int  c = a + b;  
6. System.out.println (c);  
7. }}  

Producción:

20

Ejemplo de variable de Java: ampliación


1. class  Simple {  
2. public static void  main (String [] args) {    
3. int  a = 10 ;  
4. flotar  f = a;  
5. System.out.println (a);  
6. System.out.println (f);  
7. }}  

Producción:

10
10.0

Ejemplo de variable de Java: Estrechamiento (Conversión de


tipos)
1. class  Simple {  
2. public static void  main (String [] args) {    
3. flotar  f = 10 .5f;  
4. // int a = f; // Error de tiempo de compilación  
5. int  a = ( int ) f;  
6. System.out.println (f);  
7. System.out.println (a);  
8. }}  

Producción:

10,5
10

Ejemplo de variable de Java: desbordamiento


1. class  Simple {  
2. public static void  main (String [] args) {    
3. //Desbordamiento  
4. int  a = 130 ;  
5. byte  b = ( byte ) a;  
6. System.out.println (a);  
7. System.out.println (b);  
8. }}  

Producción:

130
-126

Ejemplo de variable de Java: agregar un tipo inferior


1. class  Simple {  
2. public static void  main (String [] args) {    
3. byte  a = 10 ;  
4. byte  b = 10 ;  
5. // byte c = a + b; // Error de tiempo de compilación: porque a + b = 20 será int  
6. byte  c = ( byte ) (a + b);  
7. System.out.println (c);  
8. }}  

Producción:

20

Tipos de datos en Java


Los tipos de datos especifican los diferentes tamaños y valores que se pueden almacenar en la
variable. Hay dos tipos de tipos de datos en Java:

1. Tipos de datos primitivos: los tipos de datos primitivos incluyen boolean, char, byte, short, int,
long, float y double.

2. Tipos de datos no primitivos: los tipos de datos no primitivos


incluyen clases , interfaces y matrices .

Tipos de datos primitivos de Java


En el lenguaje Java, los tipos de datos primitivos son los componentes básicos de la manipulación de
datos. Estos son los tipos de datos más básicos disponibles en lenguaje Java .

Java es un lenguaje de programación de tipo estático. Es decir, todas las variables deben declararse antes
de su uso. Es por eso que necesitamos declarar el tipo y el nombre de la variable.
Hay 8 tipos de tipos de datos primitivos:

o tipo de datos booleanos

o tipo de datos byte

o tipo de datos char

o tipo de datos corto

o tipo de datos int

o tipo de datos largo

o tipo de datos flotantes

o tipo de datos doble

Tipo de datos Valor por defecto Tamaño predeterminado

booleano falso 1 bit

carbonizarse '\ u0000' 2 bytes

byte 0 1 byte

corto 0 2 bytes

En t 0 4 bytes

largo 0L 8 bytes
flotador 0.0f 4 bytes

doble 0.0d 8 bytes

Tipo de datos booleanos


El tipo de datos booleano se utiliza para almacenar solo dos valores posibles: verdadero y falso. Este tipo
de datos se usa para indicadores simples que rastrean condiciones verdaderas / falsas.

El tipo de datos booleano especifica un bit de información, pero su "tamaño" no se puede definir con
precisión.

Ejemplo: booleano uno = falso

Tipo de datos de byte


El tipo de datos de byte es un ejemplo de tipo de datos primitivo. Es un entero en complemento a dos
con signo de 8 bits. Su rango de valores se encuentra entre -128 y 127 (inclusive). Su valor mínimo es -
128 y el valor máximo es 127. Su valor predeterminado es 0.

El tipo de datos de bytes se utiliza para ahorrar memoria en matrices grandes donde el ahorro de
memoria es más necesario. Ahorra espacio porque un byte es 4 veces más pequeño que un número
entero. También se puede utilizar en lugar del tipo de datos "int".

Ejemplo: byte a = 10, byte b = -20

Tipo de datos corto


El tipo de datos corto es un entero en complemento a dos con signo de 16 bits. Su rango de valores se
encuentra entre -32.768 y 32.767 (inclusive). Su valor mínimo es -32,768 y el valor máximo es
32,767. Su valor predeterminado es 0.

El tipo de datos corto también se puede utilizar para ahorrar memoria al igual que el tipo de datos de
bytes. Un tipo de datos corto es 2 veces más pequeño que un número entero.

Ejemplo: s corto = 10000, r corto = -5000

Tipo de datos int


El tipo de datos int es un entero de complemento a dos con signo de 32 bits. Su rango de valores se
encuentra entre - 2,147,483,648 (-2 ^ 31) a 2,147,483,647 (2 ^ 31 -1) (inclusive). Su valor mínimo es
- 2,147,483,648 y el valor máximo es 2,147,483,647. Su valor predeterminado es 0.

El tipo de datos int generalmente se usa como un tipo de datos predeterminado para valores integrales a
menos que no haya ningún problema con la memoria.

Ejemplo: int a = 100000, int b = -200000

Tipo de datos largo


El tipo de datos largo es un entero de complemento a dos de 64 bits. Su rango de valores se encuentra
entre -9,223,372,036,854,775,808 (-2 ^ 63) a 9,223,372,036,854,775,807 (2 ^ 63 -1) (inclusive). Su
valor mínimo es - 9.223.372.036.854.775.808 y el valor máximo es 9.223.372.036.854.775.807. Su
valor predeterminado es 0. El tipo de datos largo se usa cuando necesita un rango de valores mayor que
los proporcionados por int.

Ejemplo: largo a = 100000L, largo b = -200000L

Tipo de datos flotantes


El tipo de datos flotantes es un punto flotante IEEE 754 de 32 bits de precisión simple y su rango de
valores es ilimitado. Se recomienda utilizar un flotante (en lugar de doble) si necesita ahorrar memoria
en matrices grandes de números de punto flotante. El tipo de datos flotante nunca debe usarse para
valores precisos, como moneda. Su valor predeterminado es 0.0F.

Ejemplo: float f1 = 234.5f

Tipo de datos doble


El tipo de datos doble es un punto flotante IEEE 754 de 64 bits de doble precisión. Su rango de valores
es ilimitado. El tipo de datos doble se usa generalmente para valores decimales al igual que float. El tipo
de datos doble tampoco debe usarse nunca para valores precisos, como moneda. Su valor
predeterminado es 0.0d.

Ejemplo: doble d1 = 12,3

Tipo de datos de caracteres


El tipo de datos char es un único carácter Unicode de 16 bits. Su rango de valores se encuentra entre '\
u0000' (o 0) a '\ uffff' (o 65,535 inclusive). El tipo de datos char se usa para almacenar caracteres.

Ejemplo: char letterA = 'A'

¿Por qué char usa 2 bytes en Java y cuál es \ u0000?


Es porque Java usa el sistema Unicode, no el sistema de código ASCII. \ U0000 es el rango más bajo del
sistema Unicode. Para obtener una explicación detallada sobre Unicode, visite la página siguiente.

Sistema Unicode
Unicode es una codificación de caracteres estándar internacional universal que es capaz de representar la
lenguajes escritos del mundo.

¿Por qué Java usa el sistema Unicode?


Antes de Unicode, existían muchos estándares de idioma:

o ASCII (Código estándar americano para el intercambio de información) para los Estados Unidos.

o ISO 8859-1 para idiomas de Europa occidental.

o KOI-8 para ruso.
o GB18030 y BIG-5 para chino, etc.

Problema
Esto provocó dos problemas:

1. Un valor de código particular corresponde a letras diferentes en los distintos estándares de idiomas

2. Las codificaciones para idiomas con juegos de caracteres grandes tienen longitud variable. Algunos
comunes se codifican como bytes individuales, otros requieren dos o más bytes.

Solución
Para resolver estos problemas, se desarrolló un nuevo estándar de lenguaje, es decir, el sistema Unicode.

En unicode, el carácter tiene 2 bytes, por lo que Java también usa 2 bytes para los caracteres.

valor más bajo: \ u0000

valor más alto: \ uFFFF

Operadores en Java
Operador en Java es un símbolo que se utiliza para realizar operaciones. Por ejemplo: +, -, *, / etc.

Hay muchos tipos de operadores en Java que se detallan a continuación:

o Operador Unario,

o Operador aritmético,

o Operador de turno,

o Operador relacional,

o Operador bit a bit,

o Operador lógico,

o Operador ternario y

o Operador de asignación.

Precedencia del operador de Java

Tipo de operador Categoría Precedencia

Unario sufijo expr++ expr--


prefijo ++expr --expr +expr -expr ~ !

Aritmética multiplicativo * / %

aditivo + -

Cambiar cambiar << >> >>>

Relacional comparación < > <= >= instanceof

igualdad == !=

Bit a bit bit a bit Y &

OR exclusivo bit a bit ^

OR inclusivo bit a bit |

Lógico Y lógico &&

OR lógico ||

Ternario ternario ? :

Asignación asignación = += -= *= /= %= &= ^= |= <<= >>= >>>=

Operador unario de Java


Los operadores unarios de Java requieren solo un operando. Los operadores unarios se utilizan para
realizar varias operaciones, es decir:

o incrementar / decrementar un valor en uno

o negando una expresión

o invertir el valor de un booleano

Ejemplo de operador unario de Java: ++ y -


1. class  OperatorExample {  
2. public static void  main (String args []) {    
3. int  x = 10 ;  
4. System.out.println (x ++); // 10 (11)  
5. System.out.println (++ x); // 12  
6. System.out.println (x--); // 12 (11)  
7. System.out.println (- x); // 10  
8. }}  

Producción:

10
12
12
10

Ejemplo 2 de operador unario de Java: ++ y -


1. class  OperatorExample {  
2. public static void  main (String args []) {    
3. int  a = 10 ;  
4. int  b = 10 ;  
5. System.out.println (a ++ + ++ a); // 10 + 12 = 22  
6. System.out.println (b ++ + b ++); // 10 + 11 = 21  
7.   
8. }}  

Producción:

22
21

Ejemplo de operador unario de Java: ~ y!


1. class  OperatorExample {  
2. public static void  main (String args []) {    
3. int  a = 10 ;  
4. int  b = - 10 ;  
5. booleano  c = verdadero ;  
6. booleano  d = falso ;  
7. System.out.println (~ a); // - 11 (menos el valor positivo total que comienza desde 0)  
8. System.out.println (~ b); // 9 (positivo de total menos, positivo comienza desde 0)  
9. System.out.println (! C); // falso (opuesto al valor booleano)  
10.System.out.println (! D); //cierto  
11.}}  

Producción:

-11
9
falso
cierto

Operadores aritméticos de Java


Los operadores aritmáticos de Java se utilizan para realizar sumas, restas, multiplicaciones y
divisiones. Actúan como operaciones matemáticas básicas.
Ejemplo de operador aritmético de Java
1. class  OperatorExample {  
2. public static void  main (String args []) {    
3. int  a = 10 ;  
4. int  b = 5 ;  
5. System.out.println (a + b); //15  
6. System.out.println (ab); // 5  
7. System.out.println (a * b); // 50  
8. System.out.println (a / b); // 2  
9. System.out.println (a% b); // 0  
10.}}  

Producción:

15
5
50
2
0

Ejemplo de operador aritmético de Java: expresión


1. class  OperatorExample {  
2. public static void  main (String args []) {    
3. System.out.println ( 10 * 10 / 5 + 3 - 1 * 4 / 2 );  
4. }}  

Producción:

21

Operador de desplazamiento a la izquierda de Java


El operador de desplazamiento a la izquierda de Java << se utiliza para desplazar todos los bits de un
valor al lado izquierdo de un número específico de veces.

Ejemplo de operador de desplazamiento a la izquierda de Java


1. class  OperatorExample {  
2. public static void  main (String args []) {    
3. System.out.println ( 10 << 2 ); // 10 * 2 ^ 2 = 10 * 4 = 40  
4. System.out.println ( 10 << 3 ); // 10 * 2 ^ 3 = 10 * 8 = 80  
5. System.out.println ( 20 << 2 ); // 20 * 2 ^ 2 = 20 * 4 = 80  
6. System.out.println ( 15 << 4 ); // 15 * 2 ^ 4 = 15 * 16 = 240  
7. }}  

Producción:

40
80
80
240
Operador de desplazamiento a la derecha de Java
El operador de desplazamiento a la derecha de Java >> se utiliza para mover el valor de los operandos
de la izquierda a la derecha el número de bits especificado por el operando de la derecha.

Ejemplo de operador de desplazamiento a la derecha de Java


1. class  OperatorExample {  
2. public static void  main (String args []) {    
3. System.out.println ( 10 >> 2 ); // 10/2 ^ 2 = 10/4 = 2  
4. System.out.println ( 20 >> 2 ); // 20/2 ^ 2 = 20/4 = 5  
5. System.out.println ( 20 >> 3 ); // 20/2 ^ 3 = 20/8 = 2  
6. }}  

Producción:

2
5
2

Ejemplo de operador de cambio de Java: >> vs >>>


1. class  OperatorExample {  
2. public static void  main (String args []) {    
3.     //For positive number, >> and >>> works same  
4.     System.out.println(20>>2);  
5.     System.out.println(20>>>2);  
6.     //For negative number, >>> changes parity bit (MSB) to 0  
7.     System.out.println(-20>>2);  
8.     System.out.println(-20>>>2);  
9. }}  

Output:

5
5
-5
1073741819

Java AND Operator Example: Logical && and Bitwise &


The logical && operator doesn't check second condition if first condition is false. It checks second
condition only if first one is true.

The bitwise & operator always checks both conditions whether first condition is true or false.

1. class OperatorExample{  
2. public static void main(String args[]){  
3. int a=10;  
4. int b=5;  
5. int c=20;  
6. System.out.println(a<b&&a<c);//false && true = false  
7. System.out.println(a<b&a<c);//false & true = false  
8. }}  

Output:

false
false

Java AND Operator Example: Logical && vs Bitwise &


1. class OperatorExample{  
2. public static void main(String args[]){  
3. int a=10;  
4. int b=5;  
5. int c=20;  
6. System.out.println(a<b&&a++<c);//false && true = false  
7. System.out.println(a);//10 because second condition is not checked  
8. System.out.println(a<b&a++<c);//false && true = false  
9. System.out.println(a);//11 because second condition is checked  
10.}}  

Output:

false
10
false
11

Java OR Operator Example: Logical || and Bitwise |


The logical || operator doesn't check second condition if first condition is true. It checks second condition
only if first one is false.

The bitwise | operator always checks both conditions whether first condition is true or false.

1. class OperatorExample{  
2. public static void main(String args[]){  
3. int a=10;  
4. int b=5;  
5. int c=20;  
6. System.out.println(a>b||a<c);//true || true = true  
7. System.out.println(a>b|a<c);//true | true = true  
8. //|| vs |  
9. System.out.println(a>b||a++<c);//true || true = true  
10.System.out.println(a);//10 because second condition is not checked  
11.System.out.println(a>b|a++<c);//true | true = true  
12.System.out.println(a);//11 because second condition is checked  
13.}}  

Output:
true
true
true
10
true
11

Java Ternary Operator


El operador Java Ternary se usa como un reemplazo de línea para la instrucción if-then-else y se usa
mucho en la programación Java. es el único operador condicional que toma tres operandos.

Ejemplo de operador ternario de Java


1. class  OperatorExample {  
2. public static void  main (String args []) {    
3. int  a = 2 ;  
4. int  b = 5 ;  
5. int  min = (a <b)? a: b;  
6. System.out.println (min);  
7. }}  

Producción:

Otro ejemplo:

1. class  OperatorExample {  
2. public static void  main (String args []) {    
3. int  a = 10 ;  
4. int  b = 5 ;  
5. int  min = (a <b)? a: b;  
6. System.out.println (min);  
7. }}  

Producción:

Operador de asignación de Java


El operador de asignación de Java es uno de los operadores más comunes. Se utiliza para asignar el
valor de su derecha al operando de su izquierda.

Ejemplo de operador de asignación de Java


1. class  OperatorExample {  
2. public static void  main (String args []) {    
3. int  a = 10 ;  
4. int  b = 20 ;  
5. a + = 4 ; // a = a + 4 (a = 10 + 4)  
6. b- = 4 ; // b = b-4 (b = 20-4)  
7. System.out.println (a);  
8. System.out.println (b);  
9. }}  

Producción:

14
dieciséis

Ejemplo de operador de asignación de Java


1. class  OperatorExample {  
2. public static void  main (String [] args) {    
3. int  a = 10 ;  
4. a + = 3 ; // 10 + 3  
5. System.out.println (a);  
6. a- = 4 ; // 13-4  
7. System.out.println (a);  
8. a * = 2 ; // 9 * 2  
9. System.out.println (a);  
10.a / = 2 ; // 18/2  
11.System.out.println (a);  
12.}}  

Producción:

13
9
18
9

Ejemplo de operador de asignación de Java: agregar corto


1. class  OperatorExample {  
2. public static void  main (String args []) {    
3. corto  a = 10 ;  
4. corto  b = 10 ;  
5. // a + = b; // a = a + b internamente muy bien  
6. a = a + b; // Error de tiempo de compilación porque 10 + 10 = 20 ahora int  
7. System.out.println (a);  
8. }}  

Producción:

Error de tiempo de compilación

Después de la conversión de tipo:

1. class  OperatorExample {  
2. public static void  main (String args []) {    
3. corto  a = 10 ;  
4. corto  b = 10 ;  
5. a = ( corto ) (a + b); // 20 que es int ahora convertido a corto  
6. System.out.println (a);  
7. }}  

Producción:

20

Palabras clave de Java


Las palabras clave de Java también se conocen como palabras reservadas . Las palabras clave son
palabras particulares que actúan como clave para un código. Estas son palabras predefinidas por Java,
por lo que no se pueden utilizar como nombre de objeto o variable.

Lista de palabras clave de Java


A continuación se proporciona una lista de palabras clave de Java o palabras reservadas:

1. resumen : la palabra clave abstracta de Java se utiliza para declarar la clase abstracta. La clase
abstracta puede proporcionar la implementación de la interfaz. Puede tener métodos abstractos y
no abstractos.

2. booleano: la palabra clave booleana de Java se utiliza para declarar una variable como un tipo
booleano. Solo puede contener valores verdaderos y falsos.

3. break : la palabra clave break de Java se utiliza para romper el bucle o cambiar la
declaración. Rompe el flujo actual del programa en una condición especificada.

4. byte : la palabra clave de byte de Java se utiliza para declarar una variable que puede contener
valores de datos de 8 bits.

5. case : la palabra clave case de Java se utiliza con las sentencias switch para marcar bloques de
texto.

6. catch : La palabra clave catch de Java se utiliza para detectar las excepciones generadas por las
declaraciones try. Debe usarse solo después del bloque try.

7. char : la palabra clave char de Java se utiliza para declarar una variable que puede contener
caracteres Unicode de 16 bits sin firmar

8. clase : la palabra clave de clase de Java se utiliza para declarar una clase.

9. continue : la palabra clave continue de Java se utiliza para continuar el ciclo. Continúa el flujo
actual del programa y omite el código restante en la condición especificada.

10.predeterminado : la palabra clave predeterminada de Java se utiliza para especificar el bloque


de código predeterminado en una declaración de cambio.

11.do : la palabra clave do de Java se utiliza en la declaración de control para declarar un


bucle. Puede iterar una parte del programa varias veces.

12.double : la palabra clave double de Java se utiliza para declarar una variable que puede contener
números de coma flotante de 64 bits.
13.else : La palabra clave else de Java se utiliza para indicar las ramas alternativas en una
declaración if.

14.enum : la palabra clave enum de Java se utiliza para definir un conjunto fijo de constantes. Los
constructores de enumeración son siempre privados o predeterminados.

15.extiende : la palabra clave de extensión de Java se utiliza para indicar que una clase se deriva de
otra clase o interfaz.

16.final : la palabra clave final de Java se utiliza para indicar que una variable tiene un valor
constante. Se aplica con una variable. Se utiliza para restringir al usuario.

17.finalmente : La palabra clave finalmente de Java indica un bloque de código en una estructura
try-catch. Este bloque siempre se ejecuta tanto si se gestiona la excepción como si no.

18.float : la palabra clave float de Java se utiliza para declarar una variable que puede contener un
número de coma flotante de 32 bits.

19.for : La palabra clave for de Java se utiliza para iniciar un bucle for. Se utiliza para ejecutar un
conjunto de instrucciones / funciones repetidamente cuando algunas condiciones se cumplen. Si el
número de iteraciones es fijo, se recomienda utilizar for loop.

20.if : Java if palabra clave prueba la condición. Ejecuta el bloque if si la condición es verdadera.

21.implements : la palabra clave Java implements se utiliza para implementar una interfaz.

22.importar : la palabra clave de importación de Java hace que las clases y las interfaces estén
disponibles y accesibles para el código fuente actual.

23.instanceof : la palabra clave instanceof de Java se utiliza para probar si el objeto es una
instancia de la clase especificada o si implementa una interfaz.

24.int : La palabra clave int de Java se utiliza para declarar una variable que puede contener un
entero de 32 bits con signo.

25.interfaz : la palabra clave de interfaz de Java se utiliza para declarar una interfaz. Solo puede
tener métodos abstractos.

26.long : la palabra clave long de Java se utiliza para declarar una variable que puede contener un
entero de 64 bits.

27.nativo: la palabra clave nativa de Java se usa para especificar que un método se implementa en
código nativo usando JNI (Interfaz nativa de Java).

28.nuevo : la palabra clave nueva de Java se utiliza para crear nuevos objetos.

29.nulo : la palabra clave nula de Java se utiliza para indicar que una referencia no se refiere a
nada. Elimina el valor basura.

30.paquete : la palabra clave de paquete de Java se utiliza para declarar un paquete de Java que
incluye las clases.

31.privado : la palabra clave privada de Java es un modificador de acceso. Se utiliza para indicar
que se puede acceder a un método o variable solo en la clase en la que está declarado.

32.protected : la palabra clave protegida de Java es un modificador de acceso. Puede ser accesible


dentro y fuera del paquete, pero solo a través de la herencia. No se puede aplicar en la clase.
33.public : la palabra clave pública de Java es un modificador de acceso. Se utiliza para indicar que
se puede acceder a un elemento en cualquier lugar. Tiene el alcance más amplio entre todos los
demás modificadores.

34.return : la palabra clave return de Java se usa para regresar de un método cuando se completa
su ejecución.

35.short : la palabra clave short de Java se utiliza para declarar una variable que puede contener un
entero de 16 bits.

36.static : la palabra clave estática de Java se utiliza para indicar que una variable o método es un
método de clase. La palabra clave estática en Java se utiliza principalmente para la gestión de
memoria.

37.Strictfp : Se utiliza Java Strictfp para restringir los cálculos de punto flotante para garantizar la
portabilidad.

38.super : la palabra clave super de Java es una variable de referencia que se utiliza para hacer
referencia al objeto de la clase principal. Se puede utilizar para invocar el método de clase padre
inmediato.

39.switch : la palabra clave switch de Java contiene una declaración switch que ejecuta código en
función del valor de prueba. La declaración de cambio prueba la igualdad de una variable con
varios valores.

40.sincronizado : la palabra clave sincronizada de Java se utiliza para especificar las secciones o
métodos críticos en código multiproceso.

41.esto : Java esta palabra clave se puede utilizar para hacer referencia al objeto actual en un
método o constructor.

42.throw : la palabra clave throw de Java se utiliza para lanzar explícitamente una excepción. La
palabra clave throw se usa principalmente para lanzar excepciones personalizadas. Le sigue una
instancia.

43.throws : la palabra clave throws de Java se utiliza para declarar una excepción. La excepción
marcada se puede propagar con lanzamientos.

44.transitorio : la palabra clave transitoria de Java se utiliza en la serialización. Si define cualquier


miembro de datos como transitorio, no se serializará.

45.try : La palabra clave try de Java se utiliza para iniciar un bloque de código que se probará en
busca de excepciones. El bloque try debe ir seguido de catch o finalmente bloquear.

46.void: la palabra clave void de Java se utiliza para especificar que un método no tiene un valor de
retorno.

47.volatile : la palabra clave volátil de Java se utiliza para indicar que una variable puede cambiar
de forma asincrónica.

48.while : La palabra clave while de Java se utiliza para iniciar un ciclo while. Este ciclo itera una
parte del programa varias veces. Si el número de iteraciones no es fijo, se recomienda utilizar
while loop.
Declaración If-else de Java
La sentencia if de  Java se utiliza para probar la condición. Comprueba
la condición booleana : verdadero o falso . Hay varios tipos de instrucciones if en Java.

o si declaración

o declaración if-else

o escalera if-else-if

o declaración if anidada

Declaración if de Java
La sentencia if de Java prueba la condición. Ejecuta el bloque if si la condición es verdadera.

Sintaxis:

1. if (condición) {  
2. // código a ejecutar  
3. }  

Ejemplo:
1. // Programa Java para demostrar el uso de la instrucción if.  
2. public class  IfExample {   
3. public static void  main (String [] args) {    
4.     // definir una variable de 'edad'  
5.     int  edad = 20 ;  
6.     // comprobando la edad  
7.     if (edad> 18 ) {  
8.         System.out.print ( "La edad es mayor de 18" );  
9.     }  
10.}  
11.}  
Pruébelo ahora

Producción:

La edad es mayor de 18

Declaración if-else de Java


La instrucción if-else de Java también prueba la condición. Ejecuta el bloque if si la condición es
verdadera; de lo contrario, bloquea el bloque se ejecuta el .

Sintaxis:

1. if (condición) {  
2. // codifica si la condición es verdadera  
3. } más {  
4. // codifica si la condición es falsa  
5. }  
Ejemplo:

1. // Un programa Java para demostrar el uso de la instrucción if-else.  


2. // Es un programa de números pares e impares.  
3. public class  IfElseExample {   
4. public static void  main (String [] args) {    
5.     // definir una variable  
6.     int  número = 13 ;  
7.     // Comprueba si el número es divisible por 2 o no  
8.     si (número% 2 == 0 ) {  
9.         System.out.println ( "número par" );  
10.    } más {  
11.        System.out.println ( "número impar" );  
12.    }  
13.}  
14.}  
Pruébelo ahora

Producción:
número impar

Ejemplo de año bisiesto:

Un año es bisiesto, si es divisible entre 4 y 400. Pero no entre 100.

1. public class  LeapYearExample {     
2. public static void  main (String [] args) {      
3.     int  año = 2020 ;    
4.     if (((año%  4  == 0 ) && (año%  100  ! = 0 )) || (año%  400 == 0 )) {  
5.         System.out.println ( "AÑO bisiesto" );  
6.     }  
7.     else {  
8.         System.out.println ( "AÑO COMÚN" );  
9.     }  
10.}    
11.}    

Producción:

AÑO BISIESTO

Usando el operador ternario


También podemos usar el operador ternario (? :) para realizar la tarea de la declaración if ... else. Es una
forma abreviada de comprobar la condición. Si la condición es verdadera, ¿el resultado de? es
regresado. Pero, si la condición es falsa, se devuelve el resultado de:.

Ejemplo:

1. public class  IfElseTernaryExample {     
2. public static void  main (String [] args) {      
3.     int  número = 13 ;    
4.     // Usando un operador ternario  
5.     Salida de cadena = (número% 2 == 0 )? "número par" : "número impar" ;    
6.     System.out.println (salida);  
7. }    
8. }    

Producción:

número impar

Declaración de escalera if-else-if de Java


La sentencia de escalera if-else-if ejecuta una condición de varias sentencias.

Sintaxis:
1. if (condition1) {  
2. // código a ejecutar si condition1 es verdadera  
3. } más si (condición2) {   
4. // código a ejecutar si condition2 es verdadera  
5. }  
6. else if (condition3) {   
7. // código que se ejecutará si condition3 es verdadera  
8. }  
9. ...  
10.else {  
11.// código a ejecutar si todas las condiciones son falsas  
12.}  

Ejemplo:

1. // Programa Java para demostrar el uso de la escalera If else-if.  


2. // Es un programa de sistema de calificación para reprobar, nota D, nota C, nota B, nota A y A +.  
3. public class  IfElseIfExample {   
4. public static void  main (String [] args) {    
5.     int  marcas = 65 ;  
6.       
7.     si (marcas < 50 ) {  
8.         System.out.println ( "falla" );  
9.     }  
10.    else if (puntos> = 50  && puntos < 60 ) {   
11.        System.out.println ( "grado D" );  
12.    }  
13.    else if (puntos> = 60  && puntos < 70 ) {   
14.        System.out.println ( "grado C" );  
15.    }  
16.    else if (puntos> = 70  && puntos < 80 ) {   
17.        System.out.println ( "grado B" );  
18.    }  
19.    else if (marcas> = 80  && marcas < 90 ) {   
20.        System.out.println ( "calificación A" );  
21.    } else if (marcas> = 90  && marcas < 100 ) {   
22.        System.out.println ( "Grado A +" );  
23.    } más {  
24.        System.out.println ( "¡No válido!" );  
25.    }  
26.}  
27.}  

Producción:

Grado C

Programa para marcar POSITIVO, NEGATIVO o CERO:

1. public class  PositiveNegativeExample {     
2. public static void  main (String [] args) {      
3.     int  número = - 13 ;    
4.     si (número> 0 ) {  
5.     System.out.println ( "POSITIVO" );  
6.     } más si (número < 0 ) {   
7.     System.out.println ( "NEGATIVO" );  
8.     } más {  
9.     System.out.println ( "CERO" );  
10.   }  
11.}    
12.}    

Producción:

NEGATIVO
Declaración if anidada de Java
La instrucción if anidada representa el bloque if dentro de otro bloque if . Aquí, la condición del bloque if
interno se ejecuta solo cuando la condición del bloque if externo es verdadera.

Sintaxis:

1. if (condición) {    
2.      // código a ejecutar    
3.           if (condición) {  
4.              // código a ejecutar    
5.     }    
6. }  

Ejemplo:
1. // Programa Java para demostrar el uso de la instrucción If anidada.  
2. public class  JavaNestedIfExample {     
3. public static void  main (String [] args) {      
4.     // Creando dos variables para edad y peso  
5.     int  edad = 20 ;  
6.     int  peso = 80 ;    
7.     // aplicando condición sobre la edad y el peso  
8.     if (edad> = 18 ) {    
9.         if (peso> 50 ) {  
10.            System.out.println ( "Eres elegible para donar sangre" );  
11.        }    
12.    }    
13.}}  
Pruébelo ahora

Producción:

Eres elegible para donar sangre

Ejemplo 2:

1. // Programa Java para demostrar el uso de la instrucción If anidada.    


2. public class  JavaNestedIfExample2 {       
3. public static void  main (String [] args) {        
4.     // Creando dos variables para edad y peso    
5.     int  edad = 25 ;    
6.     int  peso = 48 ;      
7.     // aplicando condición sobre la edad y el peso    
8.     if (edad> = 18 ) {      
9.         if (peso> 50 ) {    
10.            System.out.println ( "Eres elegible para donar sangre" );    
11.        }  más {  
12.            System.out.println ( "No eres elegible para donar sangre" );    
13.        }  
14.    }  más {  
15.      System.out.println ( "La edad debe ser mayor de 18" );  
16.    }  
17.}}  
Pruébelo ahora

Producción:

No eres elegible para donar sangre


Declaración de cambio de Java
La declaración de cambio de Java ejecuta una declaración de varias condiciones. Es como una sentencia
de escalera if-else-if . La instrucción switch funciona con bytes, short, int, long, tipos de enumeración,
String y algunos tipos de envoltura como Byte, Short, Int y Long. Desde Java 7, puede usar cadenas en
la declaración de cambio.

En otras palabras, la instrucción switch prueba la igualdad de una variable con varios valores.

Puntos para recordar


o Puede haber uno o N valores de casos para una expresión de cambio.

o El valor de caso debe ser solo del tipo de expresión de cambio. El valor del caso debe ser literal o
constante . No permite variables .

o Los valores de caso deben ser únicos . En caso de un valor duplicado, genera un error en tiempo
de compilación.

o La expresión de cambio de Java debe ser byte, short, int, long (con su tipo Wrapper),  enums  y
string .

o Cada declaración de caso puede tener una declaración de interrupción que es opcional. Cuando el


control llega a la declaración de interrupción , salta el control después de la expresión de
cambio. Si no se encuentra una sentencia break, ejecuta el siguiente caso.
o El valor del caso puede tener una etiqueta predeterminada que es opcional.

Sintaxis:

1. cambiar (expresión) {    
2. valor de  caso1:    
3.  // código a ejecutar;    
4.  romper ;  //Opcional  
5. valor de caso 2  :    
6.  // código a ejecutar;    
7.  romper ;  //Opcional  
8. ......    
9.     
10.por defecto :     
11. código que se ejecutará  si  no coinciden todos los casos;    
12.}    
Ejemplo:

1. público de clase  SwitchExample {   


2. public static void  main (String [] args) {    
3.     // Declarar una variable para cambiar de expresión  
4.     int  número = 20 ;  
5.     // Cambiar expresión  
6.     cambiar (número) {  
7.     // Declaraciones de casos  
8.     caso 10 : System.out.println ( "10" );   
9.     romper ;  
10.    caso 20 : System.out.println ( "20" );   
11.    romper ;  
12.    caso 30 : System.out.println ( "30" );   
13.    romper ;  
14.    // Declaración de caso predeterminada  
15.    predeterminado : System.out.println ( "No en 10, 20 o 30" );  
16.    }  
17.}  
18.}  
Pruébelo ahora

Producción:

20

Ejemplo de mes de búsqueda:

1. // Programa Java para demostrar el ejemplo de la instrucción Switch  


2. // donde estamos imprimiendo el nombre del mes para el número dado  
3. clase pública  SwitchMonthExample {     
4. public static void  main (String [] args) {      
5.     // Especificando el número de mes  
6.     int  mes = 7 ;    
7.     String monthString = "" ;  
8.     // Declaración de cambio  
9.     cambiar (mes) {    
10.    // declaraciones de casos dentro del bloque de interruptores  
11.    caso 1 : monthString = "1 - enero" ;   
12.    romper ;    
13.    caso 2 : monthString = "2 - febrero" ;   
14.    romper ;    
15.    caso 3 : monthString = "3 - marzo" ;   
16.    romper ;    
17.    caso 4 : monthString = "4 - abril" ;   
18.    romper ;    
19.    caso 5 : monthString = "5 - mayo" ;   
20.    romper ;    
21.    caso 6 : monthString = "6 - junio" ;   
22.    romper ;    
23.    caso 7 : monthString = "7 - julio" ;   
24.    romper ;    
25.    caso 8 : monthString = "8 - agosto" ;   
26.    romper ;    
27.    caso 9 : monthString = "9 - septiembre" ;   
28.    romper ;    
29.    caso 10 : monthString = "10 - octubre" ;   
30.    romper ;    
31.    caso 11 : monthString = "11 - noviembre" ;   
32.    romper ;    
33.    case 12 : monthString = "12 - diciembre" ;   
34.    romper ;    
35.    predeterminado : System.out.println ( "¡Mes no válido!" );    
36.    }    
37.    // Mes de impresión del número dado  
38.    System.out.println (monthString);  
39.}    
40.}   
Pruébelo ahora

Producción:

7 - julio

Programa para comprobar vocal o consonante:

Si el carácter es A, E, I, O o U, es vocal de lo contrario consonante. No distingue entre mayúsculas y


minúsculas.

1. clase pública  SwitchVowelExample {     
2. public static void  main (String [] args) {      
3.     char  ch = 'O' ;    
4.     interruptor (ch)  
5.     {  
6.         caso 'a' :    
7.             System.out.println ( "Vocal" );  
8.             romper ;  
9.         caso 'e' :    
10.            System.out.println ( "Vocal" );  
11.            romper ;  
12.        caso 'i' :    
13.            System.out.println ( "Vocal" );  
14.            romper ;  
15.        caso 'o' :    
16.            System.out.println ( "Vocal" );  
17.            romper ;  
18.        caso 'u' :    
19.            System.out.println ( "Vocal" );  
20.            romper ;  
21.        caso 'A' :    
22.            System.out.println ( "Vocal" );  
23.            romper ;  
24.        caso 'E' :    
25.            System.out.println ( "Vocal" );  
26.            romper ;  
27.        caso 'I' :    
28.            System.out.println ( "Vocal" );  
29.            romper ;  
30.        caso 'O' :    
31.            System.out.println ( "Vocal" );  
32.            romper ;  
33.        caso 'U' :    
34.            System.out.println ( "Vocal" );  
35.            romper ;  
36.        por defecto :   
37.            System.out.println ( "Consonante" );  
38.    }  
39.}    
40.}   

Producción:

Vocal

La declaración de cambio de Java es fallida


La declaración de cambio de Java es fallida. Significa que ejecuta todas las declaraciones después de la
primera coincidencia si no hay una declaración de interrupción.

Ejemplo:

1. // Ejemplo de cambio de Java donde omitimos el  


2. // declaración de ruptura  
3. clase pública  SwitchExample2 {   
4. public static void  main (String [] args) {    
5.     int  número = 20 ;  
6.     // cambiar expresión con valor int  
7.     cambiar (número) {  
8.     // cambiar casos sin declaraciones de interrupción  
9.     caso 10 : System.out.println ( "10" );   
10.    caso 20 : System.out.println ( "20" );   
11.    caso 30 : System.out.println ( "30" );   
12.    predeterminado : System.out.println ( "No en 10, 20 o 30" );  
13.    }  
14.}  
15.}  
Pruébelo ahora

Producción:

20
30
Ni en 10, 20 o 30

Declaración de cambio de Java con cadena


Java nos permite usar cadenas en la expresión de cambio desde Java SE 7. La declaración del caso debe
ser literal de cadena.

Ejemplo:

1. // Programa Java para demostrar el uso de Java Switch  


2. // declaración con String  
3. clase pública  SwitchStringExample {     
4. public static void  main (String [] args) {      
5.     // Declaración de variable de cadena  
6.     String levelString = "Experto" ;  
7.     int  nivel = 0 ;  
8.     // Usando String en la expresión Switch  
9.     switch (levelString) {    
10.    // Usando String Literal en el caso de Switch  
11.    caso "Principiante" : nivel = 1 ;   
12.    romper ;    
13.    caso "Intermedio" : nivel = 2 ;   
14.    romper ;    
15.    caso "Experto" : nivel = 3 ;   
16.    romper ;    
17.    predeterminado : nivel = 0 ;  
18.    romper ;  
19.    }    
20.    System.out.println ( "Su nivel es:" + nivel);  
21.}    
22.}   
Pruébelo ahora

Producción:

Tu nivel es: 3

Declaración de conmutador anidado de Java


Podemos usar la instrucción switch dentro de otra instrucción switch en Java. Se conoce como
instrucción de cambio anidada.
Ejemplo:

1. // Programa Java para demostrar el uso de Java Nested Switch  


2. public class  NestedSwitchExample {     
3.     public static void  main (String args [])    
4.       {  
5.       // C - CSE, E - ECE, M - Mecánico  
6.         char  branch =  'C' ;                 
7.         int  collegeYear =  4 ;  
8.         switch (año universitario)  
9.         {  
10.            caso 1 :   
11.                System.out.println ( "Inglés, Matemáticas, Ciencias" );  
12.                romper ;  
13.            caso 2 :   
14.                interruptor (rama)   
15.                {  
16.                    caso 'C' :   
17.                        System.out.println ( "Sistema operativo, Java, Estructura de datos" );  
18.                        romper ;  
19.                    caso 'E' :   
20.                        System.out.println ( "Microprocesadores, teoría de conmutación lógica" );  
21.                        romper ;  
22.                    caso 'M' :   
23.                        System.out.println ( "Máquinas de dibujo, fabricación" );  
24.                        romper ;  
25.                }  
26.                romper ;  
27.            caso 3 :   
28.                interruptor (rama)   
29.                {  
30.                    caso 'C' :   
31.                        System.out.println ( "Organización informática, MultiMedia" );  
32.                        romper ;  
33.                    caso 'E' :   
34.                        System.out.println ( "Fundamentos del diseño lógico, microelectrónica" );  
35.                        romper ;  
36.                    caso 'M' :   
37.                        System.out.println ( "Motores de combustión interna, vibración mecánica" );  
38.                        romper ;  
39.                }  
40.                romper ;  
41.            caso 4 :   
42.                interruptor (rama)   
43.                {  
44.                    caso 'C' :   
45.                        System.out.println ( "Comunicación de datos y redes, MultiMedia" );  
46.                        romper ;  
47.                    caso 'E' :   
48.                        System.out.println ( "Sistema integrado, procesamiento de imágenes" );  
49.                        romper ;  
50.                    caso 'M' :   
51.                        System.out.println ( "Tecnología de producción, Ingeniería térmica" );  
52.                        romper ;  
53.                }  
54.                romper ;  
55.        }  
56.    }  
57.}  
Pruébelo ahora

Producción:

Redes y comunicación de datos, MultiMedia

Java Enum en la instrucción Switch


Java nos permite usar enum en la declaración de cambio.

Ejemplo:

1. // Programa Java para demostrar el uso de Enum  


2. // en la declaración de cambio  
3. public class  JavaSwitchEnumExample {       
4.        public enum  Day {Sun, Mon, Tue, Wed, Thu, Fri, Sat}     
5.        public static void  main (String args [])      
6.        {    
7.          Day [] DayNow = Day.values ();    
8.            para  (día ahora: día ahora)    
9.            {    
10.                cambiar  (ahora)    
11.                {    
12.                    caso  sol:    
13.                        System.out.println ( "Domingo" );    
14.                        romper ;    
15.                    caso  lunes:    
16.                        System.out.println ( "Lunes" );    
17.                        romper ;    
18.                    caso  martes:    
19.                        System.out.println ( "martes" );    
20.                        romper ;         
21.                    caso  mié:    
22.                        System.out.println ( "miércoles" );    
23.                        romper ;    
24.                    caso  Jue:    
25.                        System.out.println ( "jueves" );    
26.                        romper ;    
27.                    caso  viernes:    
28.                        System.out.println ( "viernes" );    
29.                        romper ;    
30.                    caso  Sat:    
31.                        System.out.println ( "sábado" );    
32.                        romper ;    
33.                }    
34.            }    
35.        }    
36.}    
Pruébelo ahora

Producción:

domingo
lunes
Twesday
miércoles
jueves
viernes
sábado

Envoltorio de Java en la instrucción Switch


Java nos permite usar cuatro clases contenedoras: Byte, Short, Integer y Long en la instrucción switch.

Ejemplo:

1. // Programa Java para demostrar el uso de la clase Wrapper  


2. // en la declaración de cambio  
3. public class  WrapperInSwitchCaseExample {        
4.        public static void  main (String args [])    
5.        {         
6.             Edad entera =  18 ;        
7.             cambiar  (edad)  
8.             {  
9.                 caso  ( 16 ):            
10.                    System.out.println ( "Tienes menos de 18 años" );  
11.                    romper ;  
12.                caso  ( 18 ):                
13.                    System.out.println ( "Usted es elegible para votar" );  
14.                    romper ;  
15.                caso  ( 65 ):                
16.                    System.out.println ( "Usted es una persona mayor" );  
17.                    romper ;  
18.                por defecto :  
19.                    System.out.println ( "Indique la edad válida" );  
20.                    romper ;  
21.            }             
22.        }  
23.}  
Pruébelo ahora

Producción:

Eres elegible para votar.

Bucles en Java
En los lenguajes de programación, los bucles se utilizan para ejecutar un conjunto de instrucciones /
funciones repetidamente cuando algunas condiciones se vuelven verdaderas. Hay tres tipos de bucles en
Java.

o en bucle

o mientras que bucle

o bucle de hacer mientras


Java For Loop vs While Loop vs Do While Loop

Comparación en bucle mientras que bucle hacer mientras bu

Introducción El bucle for de Java es una El bucle while de Java es una El bucle do while
declaración de flujo de declaración de flujo de control declaración de fl
control que itera una parte que ejecuta una parte de los que ejecuta una
de los programas varias programas repetidamente programas al me
veces. sobre la base de una condición ejecución poster
booleana dada. la condición boo

Cuándo usar Si el número de iteraciones Si el número de iteraciones no Si el número de


es fijo, se recomienda es fijo, se recomienda utilizar fijo y debe ejecu
utilizar for loop. while loop. menos una vez,
utilizar el ciclo d

Sintaxis for (init; condition; while (condición) { hacer{


incr / decr) { // código a ejecutar // código a eje
// código a ejecutar } } while (condic
}
Ejemplo //en bucle // bucle while // bucle de hac
para (int i = 1; i <= int i = 1; int i = 1;
10; i ++) { mientras que (i <= 10) { hacer{
System.out.println (i); System.out.println (i); System.out.prin
} i ++; i ++;
} } mientras (i <

Sintaxis para por(;;){ while (verdadero) { hacer{


bucle // código a ejecutar // código a ejecutar // código a eje
infinitivo } } } while (verdad

Java para bucle


El bucle for de Java se utiliza para iterar una parte del programa varias veces. Si el número de
iteraciones es fijo, se recomienda utilizar for loop.

Hay tres tipos de bucles for en java.

o Simple para bucle

o For-each o bucle for mejorado

o Etiquetado para bucle

Java simple para bucle


Un bucle for simple es lo mismo que C / C ++ . Podemos inicializar la variable , verificar la condición e
incrementar / disminuir el valor. Consta de cuatro partes:

1. Inicialización : Es la condición inicial que se ejecuta una vez cuando se inicia el ciclo. Aquí,
podemos inicializar la variable, o podemos usar una variable ya inicializada. Es una condición
opcional.

2. Condición : es la segunda condición que se ejecuta cada vez para probar la condición del
bucle. Continúa la ejecución hasta que la condición es falsa. Debe devolver un valor booleano
verdadero o falso. Es una condición opcional.

3. Declaración : La declaración del bucle se ejecuta cada vez hasta que la segunda condición sea
falsa.

4. Incremento / Decremento : Incrementa o decrementa el valor de la variable. Es una condición


opcional.

Sintaxis:

1. para (inicialización; condición; incr / decr) {  


2. // declaración o código a ejecutar  
3. }  

Diagrama de flujo:

Ejemplo:

1. // Programa Java para demostrar el ejemplo de bucle for  


2. // que imprime la tabla de 1  
3. public class  ForExample {   
4. public static void  main (String [] args) {    
5.     // Código de Java para bucle  
6.     para ( int  i = 1 ; i <= 10 ; i ++) {  
7.         System.out.println (i);  
8.     }  
9. }  
10.}  
Pruébelo ahora

Producción:
1
2
3
4
5
6
7
8
9
10

Java anidado para bucle


Si tenemos un bucle for dentro del otro bucle, se conoce como bucle for anidado. El ciclo interno se
ejecuta completamente siempre que se ejecuta el ciclo externo.

Ejemplo:

1. public class  NestedForExample {   
2. public static void  main (String [] args) {    
3. // bucle de i  
4. para ( int  i = 1 ; i <= 3 ; i ++) {  
5. // bucle de j  
6. para ( int  j = 1 ; j <= 3 ; j ++) {  
7.         System.out.println (i + "" + j);  
8. } // final de i  
9. } // final de j  
10.}  
11.}  

Producción:

1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3

Ejemplo de pirámide 1:

1. público de clase  PyramidExample {   


2. public static void  main (String [] args) {    
3. para ( int  i = 1 ; i <= 5 ; i ++) {  
4. para ( int  j = 1 ; j <= i; j ++) {  
5.         System.out.print ( "*" );  
6. }  
7. System.out.println (); //nueva línea  
8. }  
9. }  
10.}  

Producción:

*
* *
* * *
* * * *
* * * * *

Ejemplo de pirámide 2:

1. public class  PyramidExample2 {   
2. public static void  main (String [] args) {    
3. int  term = 6 ;  
4. para ( int  i = 1 ; i <= término; i ++) {  
5. para ( int  j = término; j> = i; j -) {  
6.         System.out.print ( "*" );  
7. }  
8. System.out.println (); //nueva línea  
9. }  
10.}  
11.}  

Producción:

* * * * * *
* * * * *
* * * *
* * *
* *
*

Java para cada bucle


El bucle for-each se utiliza para recorrer una matriz o colección en java. Es más fácil de usar que el bucle
for simple porque no necesitamos incrementar el valor y usar la notación de subíndice.

Funciona en base a elementos, no a índices. Devuelve los elementos uno por uno en la variable definida.

Sintaxis:

1. para (Type var: array) {  


2. // código a ejecutar  
3. }  

Ejemplo:

1. // Ejemplo de bucle Java For-each que imprime el  


2. // elementos de la matriz  
3. public class  ForEachExample {   
4. public static void  main (String [] args) {    
5.     // Declarando una matriz  
6.     int  arr [] = { 12 , 23 , 44 , 56 , 78 };  
7.     // Impresión de matriz usando para cada bucle  
8.     para ( int  i: arr) {  
9.         System.out.println (i);  
10.    }  
11.}  
12.}  
Pruébelo ahora

Producción:

12
23
44
56
78

Java etiquetado para bucle


Podemos tener un nombre de cada bucle for de Java. Para hacerlo, usamos label antes del ciclo for. Es
útil si hemos anidado el bucle for para que podamos romper / continuar específico para el bucle for.

Por lo general, las palabras clave de ruptura y continuación interrumpen / continúan solo el bucle for
más interno.

Sintaxis:

1. Nombre de etiqueta:  
2. para (inicialización; condición; incr / decr) {  
3. // código a ejecutar  
4. }  

Ejemplo:

1. // Un programa Java para demostrar el uso del bucle for etiquetado  


2. public class  LaadedForExample {   
3. public static void  main (String [] args) {    
4.     // Usando Label para bucle externo y for  
5.     Automóvil club británico:  
6.         para ( int  i = 1 ; i <= 3 ; i ++) {  
7.             cama y desayuno:  
8.                 para ( int  j = 1 ; j <= 3 ; j ++) {  
9.                     si (i == 2 && j == 2 ) {  
10.                        romper  aa;  
11.                    }  
12.                    System.out.println (i + "" + j);  
13.                }  
14.        }  
15.}  
16.}  

Producción:

1 1
1 2
1 3
2 1

Si usa break bb; , solo romperá el bucle interno, que es el comportamiento predeterminado de cualquier
bucle.

1. public class  LaadedForExample2 {   
2. public static void  main (String [] args) {    
3.     Automóvil club británico:  
4.         para ( int  i = 1 ; i <= 3 ; i ++) {  
5.             cama y desayuno:  
6.                 para ( int  j = 1 ; j <= 3 ; j ++) {  
7.                     si (i == 2 && j == 2 ) {  
8.                         romper  bb;  
9.                     }  
10.                    System.out.println (i + "" + j);  
11.                }  
12.        }  
13.}  
14.}  

Producción:

1 1
1 2
1 3
2 1
3 1
3 2
3 3

Infinitivo de Java para bucle


Si usa dos puntos y comas ;; en el bucle for, será infinitivo para el bucle.

Sintaxis:

1. para (;;) {  
2. // código a ejecutar  
3. }  

Ejemplo:

1. // Programa Java para demostrar el uso de bucle for infinito  


2. // que imprime una declaración  
3. public class  ForExample {   
4. public static void  main (String [] args) {    
5.     // No usar ninguna condición en el bucle for  
6.     para (;;) {  
7.         System.out.println ( "bucle infinitivo" );  
8.     }  
9. }  
10.}  

Producción:

bucle infinitivo
bucle infinitivo
bucle infinitivo
bucle infinitivo
bucle infinitivo
Ctrl + C

Ahora, debe presionar ctrl + c para salir del programa.

Bucle while de Java


El bucle while de Java se utiliza para iterar una parte del programa varias veces. Si el número de
iteraciones no es fijo, se recomienda utilizar while loop .

Sintaxis:

1. while (condición) {  
2. // código a ejecutar  
3. }  
Ejemplo:

1. clase pública  WhileExample {   
2. public static void  main (String [] args) {    
3.     int  i = 1 ;  
4.     mientras que (i <= 10 ) {  
5.         System.out.println (i);  
6.     i ++;  
7.     }  
8. }  
9. }  
Pruébelo ahora

Producción:

1
2
3
4
5
6
7
8
9
10

Bucle while infinitivo de Java


Si pasa verdadero en el ciclo while, será infinitivo mientras que el ciclo.

Sintaxis:

1. while ( verdadero ) {  
2. // código a ejecutar  
3. }  

Ejemplo:

1. clase pública  WhileExample2 {   
2. public static void  main (String [] args) {    
3.     while ( verdadero ) {  
4.         System.out.println ( "bucle infinitivo while" );  
5.     }  
6. }  
7. }  

Producción:

bucle infinitivo while


bucle infinitivo while
bucle infinitivo while
bucle infinitivo while
bucle infinitivo while
Ctrl + C

Ahora, debe presionar ctrl + c para salir del programa.

Bucle de ejecución de Java


El bucle do-while de Java se utiliza para iterar una parte del programa varias veces. Si el número de
iteraciones no es fijo y debe ejecutar el ciclo al menos una vez, se recomienda utilizar el ciclo do-while.

El bucle do-while de Java se ejecuta al menos una vez porque la condición se comprueba después del
cuerpo del bucle.

Sintaxis:

1. hacer {  
2. // código a ejecutar  
3. } while (condición);  
Ejemplo:

1. public class  DoWhileExample {   
2. public static void  main (String [] args) {    
3.     int  i = 1 ;  
4.     hacer {  
5.         System.out.println (i);  
6.     i ++;  
7.     } mientras (i <= 10 );  
8. }  
9. }  
Pruébelo ahora

Producción:

1
2
3
4
5
6
7
8
9
10

Bucle do-while infinitivo de Java


Si pasa verdadero en el ciclo do-while, será infinitivo el ciclo do-while.

Sintaxis:

1. hacer {  
2. // código a ejecutar  
3. } while ( verdadero );  

Ejemplo:

1. public class  DoWhileExample2 {   
2. public static void  main (String [] args) {    
3.     hacer {  
4.         System.out.println ( "infinitivo do while loop" );  
5.     } while ( verdadero );  
6. }  
7. }  

Producción:

infinitivo hacer mientras bucle


infinitivo hacer mientras bucle
infinitivo hacer mientras bucle
Ctrl + C

Ahora, debe presionar ctrl + c para salir del programa.

Declaración de interrupción de Java


Cuando se encuentra una declaración de interrupción dentro de un bucle, el bucle se termina
inmediatamente y el control del programa se reanuda en la siguiente declaración que sigue al bucle.

La declaración de interrupción de Java se utiliza para romper el bucle o cambiar declaración de . Rompe


el flujo actual del programa en una condición especificada. En caso de bucle interno, solo rompe el bucle
interno.

Podemos usar la declaración de interrupción de Java en todo tipo de bucles, como el bucle for , el bucle
while y el bucle do-while .

Sintaxis:

1. declaración de salto;    
2. romper ;   
Declaración de ruptura de Java con bucle
Ejemplo:

1. // Programa Java para demostrar el uso de la sentencia break    


2. // dentro del bucle for.  
3. clase pública  BreakExample {   
4. public static void  main (String [] args) {    
5.     // usando el bucle for  
6.     para ( int  i = 1 ; i <= 10 ; i ++) {  
7.         si (i == 5 ) {  
8.             // rompiendo el bucle  
9.             romper ;  
10.        }  
11.        System.out.println (i);  
12.    }  
13.}  
14.}  

Producción:

1
2
3
4

Declaración de ruptura de Java con bucle interno


Rompe el bucle interno solo si usa la instrucción break dentro del bucle interno.

Ejemplo:
1. // Programa Java para ilustrar el uso de la sentencia break    
2. // dentro de un bucle interno   
3. public class  BreakExample2 {   
4. public static void  main (String [] args) {    
5.             // bucle exterior   
6.             para ( int  i = 1 ; i <= 3 ; i ++) {    
7.                     // bucle interior  
8.                     para ( int  j = 1 ; j <= 3 ; j ++) {    
9.                         si (i == 2 && j == 2 ) {    
10.                            // usando la sentencia break dentro del bucle interno  
11.                            romper ;    
12.                        }    
13.                        System.out.println (i + "" + j);    
14.                    }    
15.            }    
16.}  
17.}  

Producción:

1 1
1 2
1 3
2 1
3 1
3 2
3 3

Declaración de ruptura de Java con bucle for etiquetado


Podemos usar una declaración de ruptura con una etiqueta. Esta característica se introdujo desde JDK
1.5. Entonces, podemos romper cualquier bucle en Java ahora, ya sea externo o interno.

Ejemplo:

1. // Programa Java para ilustrar el uso de la instrucción continue  


2. // con etiqueta dentro de un bucle interno para romper el bucle externo  
3. public class  BreakExample3 {   
4. public static void  main (String [] args) {    
5.             Automóvil club británico:  
6.             for(int i=1;i<=3;i++){    
7.                     bb:  
8.                     for(int j=1;j<=3;j++){    
9.                         if(i==2&&j==2){    
10.                            //using break statement with label  
11.                            break aa;    
12.                        }    
13.                        System.out.println(i+" "+j);    
14.                    }    
15.            }    
16.}  
17.}  

Output:

1 1
1 2
1 3
2 1

Java Break Statement in while loop


Example:

1. //Java Program to demonstrate the use of break statement  
2. //inside the while loop.  
3. public class BreakWhileExample {  
4. public static void main(String[] args) {  
5.     //while loop  
6.     int  i = 1 ;  
7.     mientras que (i <= 10 ) {  
8.         si (i == 5 ) {  
9.             // usando una declaración de ruptura  
10.            i ++;  
11.            romper ; // romperá el bucle  
12.        }  
13.        System.out.println (i);  
14.        i ++;  
15.    }  
16.}  
17.}  

Producción:

1
2
3
4

Declaración de interrupción de Java en el bucle do-while


Ejemplo:

1. // Programa Java para demostrar el uso de la sentencia break  


2. // dentro del bucle do-while de Java.  
3. public class  BreakDoWhileExample {   
4. public static void  main (String [] args) {    
5.     // declarando variable  
6.     int  i = 1 ;  
7.     // bucle de hacer mientras  
8.     hacer {  
9.         si (i == 5 ) {  
10.           // usando una declaración de ruptura  
11.           i ++;  
12.           romper ; // romperá el bucle  
13.        }  
14.        System.out.println (i);  
15.        i ++;  
16.    } mientras (i <= 10 );  
17.}  
18.}  

Producción:

1
2
3
4

Declaración de interrupción de Java con Switch


Para comprender el ejemplo de interrupción con declaración de cambio, visite aquí: Declaración de
cambio de Java .

Declaración de continuación de Java


La instrucción continue se usa en la estructura de control de bucle cuando necesita saltar a la siguiente
iteración del bucle inmediatamente. Se puede utilizar con bucle for o bucle while.

La instrucción continue de Java se utiliza para continuar el ciclo. Continúa el flujo actual del programa y
omite el código restante en la condición especificada. En el caso de un bucle interno, continúa el bucle
interno únicamente.

Podemos usar la instrucción continue de Java en todos los tipos de bucles, como el bucle for, el bucle
while y el bucle do-while.

Sintaxis:

1. declaración de salto;    
2. continuar ;   

Ejemplo de instrucción Continuar de Java


Ejemplo:

1. // Programa Java para demostrar el uso de la instrucción continue  


2. // dentro del bucle for.  
3. clase pública  ContinueExample {   
4. public static void  main (String [] args) {    
5.     //en bucle  
6.     para ( int  i = 1 ; i <= 10 ; i ++) {  
7.         si (i == 5 ) {  
8.             // usando la instrucción continue  
9.             continuar ; // saltará la declaración de descanso  
10.        }  
11.        System.out.println (i);  
12.    }  
13.}  
14.}  
Pruébelo ahora

Producción:

1
2
3
4
6
7
8
9
10

Como puede ver en el resultado anterior, 5 no está impreso en la consola. Es porque el bucle continúa
cuando llega a 5.

Declaración de continuación de Java con bucle interno


Continúa el bucle interno solo si usa la instrucción continue dentro del bucle interno.

Ejemplo:

1. // Programa Java para ilustrar el uso de la instrucción continue  


2. // dentro de un bucle interno  
3. clase pública  ContinueExample2 {   
4. public static void  main (String [] args) {    
5.             // bucle exterior  
6.             para ( int  i = 1 ; i <= 3 ; i ++) {    
7.                     // bucle interior  
8.                     para ( int  j = 1 ; j <= 3 ; j ++) {    
9.                         si (i == 2 && j == 2 ) {    
10.                            // usando la instrucción continue dentro del bucle interno  
11.                            continuar ;    
12.                        }    
13.                        System.out.println (i + "" + j);    
14.                    }    
15.            }    
16.}  
17.}  

Producción:

1 1
1 2
1 3
2 1
2 3
3 1
3 2
3 3

Declaración de continuación de Java con bucle for etiquetado


Podemos usar una declaración continua con una etiqueta. Esta característica se introdujo desde JDK
1.5. Entonces, podemos continuar cualquier bucle en Java ahora, ya sea externo o interno.

Ejemplo:

1. // Programa Java para ilustrar el uso de la instrucción continue  


2. // con etiqueta dentro de un bucle interno para continuar con el bucle externo  
3. clase pública  ContinueExample3 {   
4. public static void  main (String [] args) {    
5.             Automóvil club británico:  
6.             para ( int  i = 1 ; i <= 3 ; i ++) {    
7.                     cama y desayuno:  
8.                     para ( int  j = 1 ; j <= 3 ; j ++) {    
9.                         si (i == 2 && j == 2 ) {    
10.                            // usando la instrucción continue con etiqueta  
11.                            continuar  aa;    
12.                        }    
13.                        System.out.println (i + "" + j);    
14.                    }    
15.            }    
16.}  
17.}  

Producción:

1 1
1 2
1 3
2 1
3 1
3 2
3 3

Declaración de continuación de Java en el bucle while


Ejemplo:

1. // Programa Java para demostrar el uso de la instrucción continue  


2. // dentro del bucle while.  
3. clase pública  ContinueWhileExample {   
4. public static void  main (String [] args) {    
5.     // bucle while  
6.     int  i = 1 ;  
7.     mientras que (i <= 10 ) {  
8.         si (i == 5 ) {  
9.             // usando la instrucción continue  
10.            i ++;  
11.            continuar ; // saltará la declaración de descanso  
12.        }  
13.        System.out.println (i);  
14.        i ++;  
15.    }  
16.}  
17.}  
Pruébelo ahora

Producción:

1
2
3
4
6
7
8
9
10

Declaración de continuación de Java en el bucle do-while


Ejemplo:

1. // Programa Java para demostrar el uso de la instrucción continue  


2. // dentro del bucle do-while de Java.  
3. clase pública  ContinueDoWhileExample {   
4. public static void  main (String [] args) {    
5.     // declarando variable  
6.     int  i = 1 ;  
7.     // bucle de hacer mientras  
8.     hacer {  
9.         si (i == 5 ) {  
10.                // usando la instrucción continue  
11.                 i ++;  
12.            continuar ; // saltará la declaración de descanso  
13.        }  
14.        System.out.println (i);  
15.        i ++;  
16.    } mientras (i <= 10 );  
17.}  
18.}  
Pruébelo ahora

Producción:

1
2
3
4
6
7
8
9
10

Comentarios de Java
Los comentarios de Java son las declaraciones que el compilador y el intérprete no ejecutan. Los
comentarios se pueden utilizar para proporcionar información o explicación sobre la variable , el método
o la clase. o cualquier declaración. También se puede utilizar para ocultar el código del programa.

Tipos de comentarios de Java


Hay tres tipos de comentarios en Kava.

1. Comentario de una sola línea

2. Comentario de varias líneas

3. Comentario de documentación
1) Comentario de una sola línea de Java
El comentario de una sola línea se utiliza para comentar solo una línea.

Sintaxis:

1. // Este es un comentario de una sola línea  

Ejemplo:

1. public class  CommentExample1 {   
2. public static void  main (String [] args) {    
3.     int  i = 10 ; // Aquí, i es una variable  
4.     System.out.println (i);  
5. }  
6. }  

Producción:

10

2) Comentario de varias líneas de Java


El comentario de varias líneas se utiliza para comentar varias líneas de código.

Sintaxis:

1. / * 
2. Esto  
3. es  
4. multilínea  
5. comentario 
6. * /  

Ejemplo:

1. public class  CommentExample2 {   
2. public static void  main (String [] args) {    
3. / * Declaremos y 
4.  Imprimir variable en java. * /  
5.     int  i = 10 ;  
6.     System.out.println (i);  
7. }  
8. }  

Producción:

10

3) Comentario de la documentación de Java


El comentario de documentación se utiliza para crear API de documentación. Para crear la API de
documentación, debe utilizar la herramienta javadoc .

Sintaxis:

1. / ** 
2. Esto  
3. es  
4. documentación  
5. comentario 
6. * /  

Ejemplo:

1. / ** La clase Calculadora proporciona métodos para sumar y restar 2 números dados. * /  
2.  Calculadora de clase pública {   
3. / ** El método add () devuelve la suma de números dados. * /  
4. public static int  add ( int  a,  int  b) { return  a + b;}    
5. / ** El método sub () devuelve la resta de números dados. * /  
6. public static int  sub ( int  a,  int  b) { return  ab;}    
7. }  

Compílelo con la herramienta javac:


javac Calculator.java

Crear API de documentación mediante la herramienta javadoc:

javadoc Calculator.java

Ahora, habrá archivos HTML creados para su clase Calculadora en el directorio actual. Abra los archivos


HTML y vea la explicación de la clase Calculadora proporcionada a través del comentario de la
documentación.

Programas Java | Ejemplos de programación Java


Los programas Java se preguntan con frecuencia en la entrevista. Estos programas se pueden solicitar
desde declaraciones de control, matrices , cadenas , oops , etc. Los programas básicos de Java como
series de fibonacci, números primos, números factoriales y números palíndromos se preguntan con
frecuencia en las entrevistas y exámenes. Todos estos programas se dan con el máximo de ejemplos y
resultados. Si es nuevo en la programación de Java, le recomendamos que lea primero nuestro tutorial
de Java . Veamos la lista de programas Java.

Serie Fibonacci en Java


En la serie de fibonacci, el siguiente número es la suma de los dos números anteriores, por ejemplo 0, 1,
1, 2, 3, 5, 8, 13, 21, 34, 55, etc. Los dos primeros números de la serie de fibonacci son 0 y 1.

Hay dos formas de escribir el programa de la serie fibonacci en java:

o Serie de Fibonacci sin usar recursividad

o Serie de Fibonacci usando recursividad

Serie Fibonacci en Java sin usar recursividad


Veamos el programa de la serie de fibonacci en java sin usar la recursividad.

1. class  FibonacciExample1 {  
2. public static void  main (String args [])    
3. {    
4.  int  n1 = 0 , n2 = 1 , n3, i, count = 10 ;    
5.  System.out.print (n1 + "" + n2); // imprimiendo 0 y 1    
6.     
7.  for (i = 2 ; i <count; ++ i) // el bucle comienza desde 2 porque 0 y 1 ya están impresos    
8.  {    
9.   n3 = n1 + n2;    
10.  System.out.print ( "" + n3);    
11.  n1 = n2;    
12.  n2 = n3;    
13. }    
14.  
15.}}  
Pruébelo ahora
Producción:

0 1 1 2 3 5 8 13 21 34

Serie de Fibonacci usando recursividad en java


Veamos el programa de la serie de fibonacci en java usando la recursividad.

1. class  FibonacciExample2 {  
2.  static int  n1 = 0, n2 = 1, n3 = 0;     
3.  static void  printFibonacci ( int  count) {     
4.     si (cuenta> 0) {    
5.          n3 = n1 + n2;    
6.          n1 = n2;    
7.          n2 = n3;    
8.          System.out.print ( "" + n3);   
9.          printFibonacci (cuenta-1);    
10.     }    
11. }    
12. public static void  main (String args []) {      
13.  int  count = 10;    
14.  System.out.print (n1 + "" + n2); // imprimiendo 0 y 1    
15.  printFibonacci (cuenta-2); // n-2 porque ya se han impreso 2 números   
16. }  
17.}  
Pruébelo ahora

Producción:

0 1 1 2 3 5 8 13 21 34

https://www.javatpoint.com/java-programs

https://www.javatpoint.com/java-programs#java-basic-programs

Conceptos de Java OOP


1. Programación orientada a objetos

2. Ventaja de los POO sobre el lenguaje de programación orientado a procedimientos

3. Diferencia entre el lenguaje de programación orientado a objetos y el basado en objetos.

En esta página, aprenderemos sobre los conceptos básicos de los POO. La programación orientada a
objetos es un paradigma que proporciona muchos conceptos, como herencia , enlace de
datos , polimorfismo , etc.
Simula se considera el primer lenguaje de programación orientado a objetos. El paradigma de
programación en el que todo se representa como un objeto se conoce como un lenguaje de
programación verdaderamente orientado a objetos.

Smalltalk se considera el primer lenguaje de programación verdaderamente orientado a objetos.

Los lenguajes orientados a objetos más populares son Java , C # , PHP , Python , C ++ , etc.

El objetivo principal de la programación orientada a objetos es implementar entidades del mundo real,
por ejemplo, objetos, clases, abstracción, herencia, polimorfismo, etc.

OOP (sistema de programación orientado a objetos)


Objeto significa una entidad del mundo real como un bolígrafo, silla, mesa, computadora, reloj, etc. La
programación orientada a objetos es una metodología o paradigma para diseñar un programa
usando clases y objetos. Simplifica el desarrollo y el mantenimiento de software al proporcionar algunos
conceptos:

o Objeto

o Clase

o Herencia

o Polimorfismo

o Abstracción

o Encapsulamiento

Aparte de estos conceptos, hay algunos otros términos que se utilizan en el diseño orientado a objetos:

o Acoplamiento

o Cohesión

o Asociación

o Agregación

o Composición
 

Objeto

Cualquier entidad que tenga estado y comportamiento se conoce como objeto. Por ejemplo, una silla,
bolígrafo, mesa, teclado, bicicleta, etc. Puede ser físico o lógico.

Un objeto se puede definir como una instancia de una clase. Un objeto contiene una dirección y ocupa
algo de espacio en la memoria. Los objetos pueden comunicarse sin conocer los detalles de los datos o el
código de los demás. Lo único necesario es el tipo de mensaje aceptado y el tipo de respuesta que
devuelven los objetos.

Ejemplo: un perro es un objeto porque tiene estados como color, nombre, raza, etc., así como
comportamientos como menear la cola, ladrar, comer, etc.
Clase
La colección de objetos se llama clase. Es una entidad lógica.

Una clase también se puede definir como un plano a partir del cual puede crear un objeto individual. La
clase no consume espacio.

Herencia
Cuando un objeto adquiere todas las propiedades y comportamientos de un objeto padre , se conoce
como herencia. Proporciona reutilización de código. Se utiliza para lograr polimorfismo en tiempo de
ejecución.

Polimorfismo
Si una tarea se realiza de diferentes maneras , se conoce como polimorfismo. Por ejemplo: para
convencer al cliente de otra manera, para dibujar algo, por ejemplo, forma, triángulo, rectángulo, etc.

En Java, usamos la sobrecarga de métodos y la anulación de métodos para lograr polimorfismo.

Otro ejemplo puede ser hablar algo; por ejemplo, un gato habla maullido, un perro ladra guau, etc.

Abstracción
Ocultar detalles internos y mostrar funcionalidad se conoce como abstracción. Por ejemplo, una llamada
telefónica, no conocemos el procesamiento interno.

En Java, utilizamos la clase y la interfaz abstractas para lograr la abstracción.

Encapsulamiento
La vinculación (o envoltura) de código y datos en una sola unidad se conoce como encapsulación . Por
ejemplo, una cápsula, se envuelve con diferentes medicamentos.
Una clase Java es el ejemplo de encapsulación. Java bean es la clase completamente encapsulada
porque todos los miembros de datos son privados aquí.

Acoplamiento
El acoplamiento se refiere al conocimiento, la información o la dependencia de otra clase. Surge cuando
las clases se conocen unas a otras. Si una clase tiene la información detallada de otra clase, existe un
fuerte acoplamiento. En Java, usamos modificadores privados, protegidos y públicos para mostrar el
nivel de visibilidad de una clase, método y campo. Puede utilizar interfaces para el acoplamiento más
débil porque no hay una implementación concreta.

Cohesión
La cohesión se refiere al nivel de un componente que realiza una única tarea bien definida. Una sola
tarea bien definida se realiza mediante un método altamente cohesivo. El método débilmente cohesivo
dividirá la tarea en partes separadas. El paquete java.io es un paquete altamente cohesivo porque tiene
clases e interfaz relacionadas con E / S. Sin embargo, el paquete java.util es un paquete débilmente
cohesivo porque tiene clases e interfaces no relacionadas.

Asociación
La asociación representa la relación entre los objetos. Aquí, un objeto se puede asociar con un objeto o
con muchos objetos. Puede haber cuatro tipos de asociación entre los objetos:

o Doce y cincuenta y nueve de la noche

o Uno a muchos

o Muchos a uno, y

o Muchos a muchos

Entendamos la relación con ejemplos en tiempo real. Por ejemplo, un país puede tener un primer
ministro (uno a uno) y un primer ministro puede tener muchos ministros (uno a muchos). Además,
muchos diputados pueden tener un primer ministro (muchos a uno) y muchos ministros pueden tener
muchos departamentos (muchos a muchos).

La asociación puede ser unidireccional o bidireccional.

Agregación
La agregación es una forma de lograr Asociación. La agregación representa la relación en la que un
objeto contiene otros objetos como parte de su estado. Representa la débil relación entre
objetos. También se denomina relación tiene-a en Java. Como, la herencia representa la relación es-
a . Es otra forma de reutilizar objetos.

Composición
La composición también es una forma de lograr Asociación. La composición representa la relación en la
que un objeto contiene otros objetos como parte de su estado. Existe una fuerte relación entre el objeto
contenedor y el objeto dependiente. Es el estado en el que los objetos que los contienen no tienen una
existencia independiente. Si elimina el objeto principal, todos los objetos secundarios se eliminarán
automáticamente.
Ventaja de los POO sobre el lenguaje de programación orientado
a procedimientos
1) Los POO facilitan el desarrollo y el mantenimiento, mientras que, en un lenguaje de programación
orientado a procedimientos, no es fácil de administrar si el código crece a medida que aumenta el
tamaño del proyecto.

2) Los POO proporcionan ocultación de datos, mientras que, en un lenguaje de programación orientado a
procedimientos, se puede acceder a los datos globales desde cualquier lugar.

Figura: Representación de datos en programación orientada a procedimientos

Figura: Representación de datos en programación orientada a objetos

3) Los OOP brindan la capacidad de simular eventos del mundo real de manera mucho más
efectiva. Podemos proporcionar la solución de un problema verbal real si usamos el lenguaje de
programación orientado a objetos.

¿Cuál es la diferencia entre un lenguaje de programación orientado a objetos


y un lenguaje de programación basado en objetos?
El lenguaje de programación basado en objetos sigue todas las características de los POO excepto la
herencia. JavaScript y VBScript son ejemplos de lenguajes de programación basados en objetos.

Convenciones de nomenclatura de Java


La convención de nomenclatura de Java es una regla a seguir al decidir qué nombre asignar a sus
identificadores, como clase, paquete, variable, constante, método, etc.

Pero, no está obligado a seguir. Entonces, se conoce como convención, no regla. Varias comunidades


Java como Sun Microsystems y Netscape sugieren estas convenciones.

Todas las clases, interfaces, paquetes, métodos y campos del lenguaje de programación Java se dan de
acuerdo con la convención de nomenclatura de Java. Si no sigue estas convenciones, puede generar
confusión o código erróneo.

Ventaja de las convenciones de nomenclatura en Java


Al utilizar las convenciones de nomenclatura estándar de Java, hace que su código sea más fácil de leer
para usted y otros programadores. La legibilidad del programa Java es muy importante. Indica que se
dedica menos tiempo a averiguar qué hace el código.

Las siguientes son las reglas clave que debe seguir cada identificador:

o El nombre no debe contener espacios en blanco.

o El nombre no debe comenzar con caracteres especiales como & (ampersand), $ (dólar), _ (guión
bajo).

Veamos algunas otras reglas que deben seguir los identificadores.

Clase
o Debe comenzar con la letra mayúscula.

o Debe ser un sustantivo como Color, Botón, Sistema, Hilo, etc.

o Utilice palabras adecuadas, en lugar de siglas.

o Ejemplo: -

1.  empleado de   clase pública 
2. {  
3. //fragmento de código  
4. }  

Interfaz
o Debe comenzar con la letra mayúscula.

o Debe ser un adjetivo como Runnable, Remote, ActionListener.

o Utilice palabras adecuadas, en lugar de siglas.

o Ejemplo: -

1. interfaz  imprimible  
2. {  
3. //fragmento de código  
4. }  
Método
o Debe comenzar con una letra minúscula.

o Debe ser un verbo como main (), print (), println ().

o Si el nombre contiene varias palabras, comience con una letra minúscula seguida de una letra
mayúscula como actionPerformed ().

o Ejemplo:-

1.  clase  empleado  
2. {  
3. //método  
4. vacío  dibujar ()  
5. {  
6. //fragmento de código  
7. }  
8. }  

Variable
o Debe comenzar con una letra minúscula como id, name.

o No debe comenzar con caracteres especiales como & (ampersand), $ (dólar), _ (guión bajo).

o Si el nombre contiene varias palabras, comience con la letra minúscula seguida de una letra
mayúscula como nombre, apellido.
o Evite el uso de variables de un carácter como x, y, z.

o Ejemplo :-

1.   clase  empleado  
2. {  
3. //variable  
4. int  id;  
5. //fragmento de código  
6. }  

Paquete
o Debe ser una letra minúscula como java, lang.

o Si el nombre contiene varias palabras, debe estar separado por puntos (.) Como java.util,
java.lang.

o Ejemplo :-

1. paquete  com.javatpoint; //paquete  
2. clase  empleado  
3. {  
4. //fragmento de código  
5. }  

Constante
o Debe estar en letras mayúsculas como ROJO, AMARILLO.

o Si el nombre contiene varias palabras, debe estar separado por un guión bajo (_) como
MAX_PRIORITY.

o Puede contener dígitos pero no como la primera letra.

o Ejemplo :-

1. clase  empleado  
2. {  
3. //constante  
4.  estático final int  MIN_AGE =  18 ;    
5. //fragmento de código  
6. }  

CamelCase en convenciones de nomenclatura de Java


Java sigue la sintaxis de camel-case para nombrar la clase, la interfaz, el método y la variable.

Si el nombre se combina con dos palabras, la segunda palabra comenzará siempre con una letra
mayúscula, como actionPerformed (), firstName, ActionEvent, ActionListener, etc.

Objetos y clases en Java


1. Objeto en Java

2. Clase en Java

3. Variable de instancia en Java

4. Método en Java

5. Ejemplo de objeto y clase que mantiene los registros del alumno.

6. Objeto anónimo

En esta página, aprenderemos sobre clases y objetos Java. En la técnica de programación orientada a
objetos, diseñamos un programa utilizando objetos y clases.

Un objeto en Java es una entidad tanto física como lógica, mientras que una clase en Java es solo una
entidad lógica.
¿Qué es un objeto en Java?

Una entidad que tiene estado y comportamiento se conoce como un objeto, por ejemplo, silla, bicicleta,
rotulador, bolígrafo, mesa, automóvil, etc. Puede ser físico o lógico (tangible e intangible). El ejemplo de
un objeto intangible es el sistema bancario.

Un objeto tiene tres características:

o Estado: representa los datos (valor) de un objeto.

o Comportamiento: representa el comportamiento (funcionalidad) de un objeto como depositar,


retirar, etc.

o Identidad: la identidad de un objeto se implementa normalmente a través de una identificación


única. El valor del ID no es visible para el usuario externo. Sin embargo, la JVM lo utiliza
internamente para identificar cada objeto de forma única.
Por ejemplo, Pen es un objeto. Su nombre es Reynolds; el color es el blanco, conocido como su
estado. Se usa para escribir, por lo que escribir es su comportamiento.

Un objeto es una instancia de una clase. Una clase es una plantilla o plano a partir del cual se crean
los objetos. Entonces, un objeto es la instancia (resultado) de una clase.

Definiciones de objeto:

o Un objeto es una entidad del mundo real .

o Un objeto es una entidad en tiempo de ejecución .

o El objeto es una entidad que tiene estado y comportamiento .

o El objeto es una instancia de una clase .

¿Qué es una clase en Java?


Una clase es un grupo de objetos que tienen propiedades comunes. Es una plantilla o plano a partir del
cual se crean los objetos. Es una entidad lógica. No puede ser físico.

Una clase en Java puede contener:

o Campos

o Métodos
o Constructores

o Bloques

o Interfaz y clase anidadas

Sintaxis para declarar una clase:


1. clase  <nombre_clase> {  
2.     campo;  
3.     método;  
4. }  

Variable de instancia en Java


Una variable que se crea dentro de la clase pero fuera del método se conoce como variable de
instancia. La variable de instancia no obtiene memoria en el momento de la compilación. Obtiene
memoria en tiempo de ejecución cuando se crea un objeto o instancia. Por eso se la conoce como
variable de instancia.
Método en Java
En Java, un método es como una función que se utiliza para exponer el comportamiento de un objeto.

Ventaja del método


o Reutilización de código

o Optimización de código

nueva palabra clave en Java


La nueva palabra clave se utiliza para asignar memoria en tiempo de ejecución. Todos los objetos
obtienen memoria en el área de memoria Heap.

Ejemplo de objeto y clase: principal dentro de la clase


En este ejemplo, hemos creado una clase de estudiante que tiene dos miembros de datos id y
nombre. Estamos creando el objeto de la clase Student con una nueva palabra clave e imprimiendo el
valor del objeto.

Aquí, estamos creando un método main () dentro de la clase.

Archivo: Student.java

1. // Programa Java para ilustrar cómo definir una clase y campos  


2. // Definición de una clase de estudiante.  
3. clase  estudiante {  
4.  // definiendo campos  
5.  int  id; // campo o miembro de datos o variable de instancia  
6.  Nombre de cadena;  
7.  // creando el método principal dentro de la clase Student  
8.  public static void  main (String args []) {    
9.   // Creando un objeto o instancia  
10.  Estudiante s1 = nuevo  Estudiante (); // creando un objeto de Student  
11.  // Imprimir valores del objeto  
12.  System.out.println (s1.id); // acceder al miembro a través de la variable de referencia  
13.  System.out.println (s1.name);  
14. }  
15.}  
Pruébelo ahora

Producción:

0
nulo
Ejemplo de objeto y clase: principal fuera de la clase
En el desarrollo en tiempo real, creamos clases y las usamos desde otra clase. Es un enfoque mejor que
el anterior. Veamos un ejemplo simple, donde tenemos el método main () en otra clase.

Podemos tener varias clases en diferentes archivos Java o en un solo archivo Java. Si define varias
clases en un solo archivo fuente de Java, es una buena idea guardar el nombre del archivo con el
nombre de la clase que tiene el método main ().

Archivo: TestStudent1.java

1. // Programa Java para demostrar que tiene el método principal en   


2. //otra clase  
3. // Creando clase de estudiante.  
4. clase  estudiante {  
5.  int  id;  
6.  Nombre de cadena;  
7. }  
8. // Creando otra clase TestStudent1 que contiene el método principal  
9. class  TestStudent1 {  
10. public static void  main (String args []) {    
11.  Estudiante s1 = nuevo  Estudiante ();  
12.  System.out.println (s1.id);  
13.  System.out.println (s1.name);  
14. }  
15.}  
Pruébelo ahora

Producción:

0
nulo

3 formas de inicializar un objeto


Hay 3 formas de inicializar un objeto en Java.

1. Por variable de referencia

2. Por método

3. Por constructor

1) Ejemplo de objeto y clase: inicialización mediante referencia


Inicializar un objeto significa almacenar datos en el objeto. Veamos un ejemplo sencillo en el que vamos
a inicializar el objeto mediante una variable de referencia.

Archivo: TestStudent2.java
1. clase  estudiante {  
2.  int  id;  
3.  Nombre de cadena;  
4. }  
5. class  TestStudent2 {  
6.  public static void  main (String args []) {    
7.   Estudiante s1 = nuevo  Estudiante ();  
8.   s1.id = 101 ;  
9.   s1.name = "Sonoo" ;  
10.  System.out.println (s1.id + "" + s1.name); // imprimiendo miembros con un espacio en blanco  
11. }  
12.}  
Pruébelo ahora

Producción:

101 Sonoo

También podemos crear múltiples objetos y almacenar información en ellos a través de una variable de
referencia.

Archivo: TestStudent3.java

1. clase  estudiante {  
2.  int  id;  
3.  Nombre de cadena;  
4. }  
5. class  TestStudent3 {  
6.  public static void  main (String args []) {    
7.   // Creando objetos  
8.   Estudiante s1 = nuevo  Estudiante ();  
9.   Estudiante s2 = nuevo  Estudiante ();  
10.  // Inicializando objetos  
11.  s1.id = 101 ;  
12.  s1.name = "Sonoo" ;  
13.  s2.id = 102 ;  
14.  s2.name = "Amit" ;  
15.  // Imprimiendo datos  
16.  System.out.println(s1.id+" "+s1.name);  
17.  System.out.println(s2.id+" "+s2.name);  
18. }  
19.}  
Test it Now

Output:
101 Sonoo
102 Amit

2) Object and Class Example: Initialization through method


In this example, we are creating the two objects of Student class and initializing the value to these
objects by invoking the insertRecord method. Here, we are displaying the state (data) of the objects by
invoking the displayInformation() method.

File: TestStudent4.java

1. class Student{  
2.  int rollno;  
3.  String name;  
4.  void insertRecord(int r, String n){  
5.   rollno=r;  
6.   name=n;  
7.  }  
8.  void displayInformation(){System.out.println(rollno+" "+name);}  
9. }  
10.class TestStudent4{  
11. public static void main(String args[]){  
12.  Student s1=new Student();  
13.  Student s2=new Student();  
14.  s1.insertRecord(111,"Karan");  
15.  s2.insertRecord(222,"Aryan");  
16.  s1.displayInformation();  
17.  s2.displayInformation();  
18. }  
19.}  
Test it Now

Output:

111 Karan
222 Aryan
As you can see in the above figure, object gets the memory in heap memory area. The reference
variable refers to the object allocated in the heap memory area. Here, s1 and s2 both are reference
variables that refer to the objects allocated in memory.

3) Object and Class Example: Initialization through a constructor


We will learn about constructors in Java later.

Object and Class Example: Employee


Let's see an example where we are maintaining records of employees.

File: TestEmployee.java

1. class Employee{  
2.     int id;  
3.     String name;  
4.     float salary;  
5.     void insert(int i, String n, float s) {  
6.         id=i;  
7.         name=n;  
8.         salary=s;  
9.     }  
10.    void display(){System.out.println(id+" "+name+" "+salary);}  
11.}  
12.public class TestEmployee {  
13.public static void main(String[] args) {  
14.    Employee e1=new Employee();  
15.    Employee e2=new Employee();  
16.    Employee e3=new Employee();  
17.    e1.insert(101,"ajeet",45000);  
18.    e2.insert(102,"irfan",25000);  
19.    e3.insert(103,"nakul",55000);  
20.    e1.display();  
21.    e2.display();  
22.    e3.display();  
23.}  
24.}  
Test it Now

Output:

101 ajeet 45000.0


102 irfan 25000.0
103 nakul 55000.0

Object and Class Example: Rectangle


There is given another example that maintains the records of Rectangle class.

File: TestRectangle1.java

1. class Rectangle{  
2.  int length;  
3.  int width;  
4.  void insert(int l, int w){  
5.   length=l;  
6.   width=w;  
7.  }  
8.  void calculateArea(){System.out.println(length*width);}  
9. }  
10.class TestRectangle1{  
11. public static void main(String args[]){  
12.  Rectangle r1=new Rectangle();  
13.  Rectangle r2=new Rectangle();  
14.  r1.insert(11,5);  
15.  r2.insert(3,15);  
16.  r1.calculateArea();  
17.  r2.calculateArea();  
18.}  
19.}  
Test it Now

Output:

55
45

What are the different ways to create an object in Java?


There are many ways to create an object in java. They are:

o By new keyword

o By newInstance() method

o By clone() method

o By deserialization

o By factory method etc.

We will learn these ways to create object later.

Anonymous object
Anonymous simply means nameless. An object which has no reference is known as an anonymous
object. It can be used at the time of object creation only.

If you have to use an object only once, an anonymous object is a good approach. For example:

1. new Calculation();//anonymous object  
Calling method through a reference:

1. Calculation c=new Calculation();  
2. c.fact(5);  

Calling method through an anonymous object

1. new Calculation().fact(5);  

Let's see the full example of an anonymous object in Java.

1. class Calculation{  
2.  void fact(int  n){  
3.   int fact=1;  
4.   for(int i=1;i<=n;i++){  
5.    fact=fact*i;  
6.   }  
7.  System.out.println("factorial is "+fact);  
8. }  
9. public static void main(String args[]){  
10. new Calculation().fact(5);//calling method with anonymous object  
11.}  
12.}  

Output:

Factorial is 120

Creating multiple objects by one type only


We can create multiple objects by one type only as we do in case of primitives.

Initialization of primitive variables:

1. int a=10, b=20;  

Initialization of refernce variables:

1. Rectangle r1=new Rectangle(), r2=new Rectangle();//creating two objects  

Let's see the example:

1. //Java Program to illustrate the use of Rectangle class which  
2. //has length and width data members  
3. class Rectangle{  
4.  int length;  
5.  int width;  
6.  void insert(int l,int w){  
7.   length=l;  
8.   width=w;  
9.  }  
10. void calculateArea(){System.out.println(length*width);}  
11.}  
12.class TestRectangle2{  
13. public static void main(String args[]){  
14.  Rectangle r1=new Rectangle(),r2=new Rectangle();//creating two objects  
15.  r1.insert(11,5);  
16.  r2.insert(3,15);  
17.  r1.calculateArea();  
18.  r2.calculateArea();  
19.}  
20.}  
Test it Now

Output:

55
45

Real World Example: Account


File: TestAccount.java

1. //Java Program to demonstrate the working of a banking-system  
2. //where we deposit and withdraw amount from our account.  
3. //Creating an Account class which has deposit() and withdraw() methods  
4. class Account{  
5. int acc_no;  
6. String name;  
7. float amount;  
8. //Method to initialize object  
9. void insert(int a,String n,float amt){  
10.acc_no=a;  
11.name=n;  
12.amount=amt;  
13.}  
14.//deposit method  
15.void deposit(float amt){  
16.amount=amount+amt;  
17.System.out.println(amt+" deposited");  
18.}  
19.//withdraw method  
20.void withdraw(float amt){  
21.if(amount<amt){  
22.System.out.println("Insufficient Balance");  
23.}else{  
24.amount=amount-amt;  
25.System.out.println(amt+" withdrawn");  
26.}  
27.}  
28.//method to check the balance of the account  
29.void checkBalance(){System.out.println("Balance is: "+amount);}  
30.//method to display the values of an object  
31.void display(){System.out.println(acc_no+" "+name+" "+amount);}  
32.}  
33.//Creating a test class to deposit and withdraw amount  
34.class TestAccount{  
35.public static void main(String[] args){  
36.Account a1=new Account();  
37.a1.insert(832345,"Ankit",1000);  
38.a1.display();  
39.a1.checkBalance();  
40.a1.deposit(40000);  
41.a1.checkBalance();  
42.a1.withdraw(15000);  
43.a1.checkBalance();  
44.}}   
Test it Now

Output:

832345 Ankit 1000.0


Balance is: 1000.0
40000.0 deposited
Balance is: 41000.0
15000.0 withdrawn
Balance is: 26000.0

Método en Java
En general, un método es una forma de realizar alguna tarea. De manera similar, el método en
Java es una colección de instrucciones que realiza una tarea específica. Proporciona la reutilización del
código. También podemos modificar fácilmente el código usando métodos . En esta sección,
aprenderemos qué es un método en Java, tipos de métodos, declaración de métodos y cómo
llamar a un método en Java .

¿Qué es un método en Java?


Un método es un bloque de código o una colección de declaraciones o un conjunto de códigos
agrupados para realizar una determinada tarea u operación. Se utiliza para lograr la reutilización del
código. Escribimos un método una vez y lo usamos muchas veces. No necesitamos escribir código una y
otra vez. También proporciona la fácil modificación y legibilidad del código, simplemente agregando o
eliminando un fragmento de código. El método se ejecuta solo cuando lo llamamos o lo invocamos.

El método más importante en Java es el método main () . Si desea leer más sobre el método main (),
visite el enlace https://www.javatpoint.com/java-main-method .

Declaración de método
La declaración del método proporciona información sobre los atributos del método, como visibilidad, tipo
de retorno, nombre y argumentos. Tiene seis componentes que se conocen como encabezado de
método , como hemos mostrado en la siguiente figura.

Firma de método: cada método tiene una firma de método. Es parte de la declaración del
método. Incluye el nombre del método y la lista de parámetros .

Especificador de acceso: el especificador o modificador de acceso es el tipo de acceso del


método. Especifica la visibilidad del método. Java proporciona cuatro tipos de especificador de acceso:

o Público: el método es accesible para todas las clases cuando usamos un especificador público en
nuestra aplicación.
o Privado: cuando usamos un especificador de acceso privado, el método es accesible solo en las
clases en las que está definido.
o Protegido: cuando usamos un especificador de acceso protegido, el método es accesible dentro
del mismo paquete o subclases en un paquete diferente.
o Predeterminado: cuando no usamos ningún especificador de acceso en la declaración del
método, Java usa el especificador de acceso predeterminado de forma predeterminada. Solo es
visible desde el mismo paquete.

Tipo de retorno: el tipo de retorno es un tipo de datos que devuelve el método. Puede tener un tipo de
datos primitivo, objeto, colección, void, etc. Si el método no devuelve nada, usamos la palabra clave
void.
Nombre del método: es un nombre único que se utiliza para definir el nombre de un método. Debe
corresponder a la funcionalidad del método. Supongamos que, si estamos creando un método para
restar dos números, el nombre del método debe ser resta (). Un método se invoca por su nombre.

Lista de parámetros: es la lista de parámetros separados por una coma y encerrados entre
paréntesis. Contiene el tipo de datos y el nombre de la variable. Si el método no tiene parámetro, deje el
paréntesis en blanco.

Cuerpo del método: es parte de la declaración del método. Contiene todas las acciones a realizar. Está
encerrado dentro del par de llaves.

Nombrar un método
Al definir un método, recuerde que el nombre del método debe ser un verbo y comenzar con
una letra minúscula . Si el nombre del método tiene más de dos palabras, el primer nombre debe ser
un verbo seguido de un adjetivo o sustantivo. En el nombre del método de varias palabras, la primera
letra de cada palabra debe estar en mayúsculas, excepto la primera palabra. Por ejemplo:

Nombre del método de una sola palabra: sum (), area ()

Nombre del método de varias palabras: areaOfCircle (), stringComparision ()

También es posible que un método tenga el mismo nombre que otro nombre de método en la misma
clase, se conoce como sobrecarga de método .

Tipos de método
Hay dos tipos de métodos en Java:

o Método predefinido

o Método definido por el usuario

Método predefinido
En Java, los métodos predefinidos son el método que ya está definido en las bibliotecas de clases de Java
y se conoce como métodos predefinidos. También se conoce como método de biblioteca
estándar o método integrado . Podemos usar directamente estos métodos simplemente llamándolos
en el programa en cualquier momento. Algunos métodos predefinidos son length (), equals (),
compareTo (), sqrt (), etc. Cuando llamamos a cualquiera de los métodos predefinidos en nuestro
programa, una serie de códigos relacionados con el método correspondiente se ejecuta en segundo plano
que ya está almacenado en la biblioteca.

Todos y cada uno de los métodos predefinidos se definen dentro de una clase. Como el método print
() se define en la clase java.io.PrintStream . Imprime la declaración que escribimos dentro del
método. Por ejemplo, print ("Java") , imprime Java en la consola.

Veamos un ejemplo del método predefinido.

Demo.java

1.  demostración de    clase pública 
2. {  
3. public static void  main (String [] args)     
4. {  
5. // usando el método max () de la clase Math  
6. System.out.print ( "El número máximo es:"  + Math.max ( 9 , 7 ));  
7. }  
8. }  

Producción:

El número máximo es: 9

En el ejemplo anterior, hemos utilizado tres métodos predefinidos main (), print () y max () . Hemos
utilizado estos métodos directamente sin declaración porque están predefinidos. El método print () es un
método de la clase PrintStream que imprime el resultado en la consola. El método max () es un método
del clase Math que devuelve el mayor de dos números.

También podemos ver la firma del método de cualquier método predefinido utilizando el
enlace https://docs.oracle.com/ . Cuando pasamos por el enlace y vemos la firma del método max (),
encontramos lo siguiente:

En la firma del método anterior, vemos que la firma del método tiene un especificador de
acceso público , un modificador de no acceso estático , tipo de retorno int , nombre de método max
(), lista de parámetros (int a, int b). En el ejemplo anterior, en lugar de definir el método, acabamos de
invocar el método. Ésta es la ventaja de un método predefinido. Hace que la programación sea menos
complicada.

De manera similar, también podemos ver la firma del método del método print ().

Método definido por el usuario


El método escrito por el usuario o el programador se conoce como definido por el
usuario. método . Estos métodos se modifican según el requisito.

Cómo crear un método definido por el usuario

Creemos un método definido por el usuario que verifique que el número sea par o impar. Primero,
definiremos el método.

1. // método definido por el usuario  


2. public static void  findEvenOdd ( int  num)    
3. {  
4. // cuerpo del método  
5. si (num% 2 == 0 )   
6. System.out.println (num + "es par" );   
7. demás   
8. System.out.println (num + "es impar" );  
9. }  

Hemos definido el método anterior llamado findevenodd (). Tiene un parámetro num de tipo int. El
método no devuelve ningún valor, por eso hemos utilizado void. El cuerpo del método contiene los pasos
para verificar que el número sea par o impar. Si el número es par, imprime el número es par , de lo
contrario imprime el número impar .

Cómo llamar o invocar un método definido por el usuario

Una vez que hayamos definido un método, deberíamos llamarlo. La llamada de un método en un
programa es simple. Cuando llamamos o invocamos un método definido por el usuario, el control del
programa se transfiere al método llamado.

1. import  java.util.Scanner;  
2. clase pública  EvenOdd   
3. {  
4. public static void  main (String args [])    
5. {  
6. // creando objeto de clase Scanner     
7. Escaneo del escáner = nuevo  escáner (System.in);  
8. System.out.print ( "Ingrese el número:" );  
9. // valor de lectura del usuario  
10.int  num = scan.nextInt ();  
11.// llamada al método  
12.findEvenOdd (num);  
13.}  

En el fragmento de código anterior, tan pronto como el compilador llega a la línea findEvenOdd


(num), el control se transfiere al método y da la salida en consecuencia.

Combinemos ambos fragmentos de código en un solo programa y ejecútelo.

EvenOdd.java

1. import  java.util.Scanner;  
2. clase pública  EvenOdd   
3. {  
4. public static void  main (String args [])    
5. {  
6. // creando objeto de clase Scanner     
7. Escaneo del escáner = nuevo  escáner (System.in);  
8. System.out.print ( "Ingrese el número:" );  
9. // valor de lectura del usuario  
10.int  num = scan.nextInt ();  
11.// llamada al método  
12.findEvenOdd (num);  
13.}  
14.// método definido por el usuario  
15.public static void  findEvenOdd ( int  num)    
16.{  
17.// cuerpo del método  
18.si (num% 2 == 0 )   
19.System.out.println (num + "es par" );   
20.demás   
21.System.out.println (num + "es impar" );  
22.}  
23.}  

Salida 1:

Ingrese el número: 12
12 es par

Salida 2:

Ingrese el número: 99
99 es extraño

Veamos otro programa que devuelve un valor al método de llamada.

En el siguiente programa, hemos definido un método llamado add () que suma los dos números. Tiene
dos parámetros n1 y n2 de tipo entero. Los valores de n1 y n2 corresponden al valor de ayb,
respectivamente. Por lo tanto, el método suma el valor de ayby lo almacena en la variable sy devuelve la
suma.

Addition.java

1.  Adición de    clase pública 
2. {  
3. public static void  main (String [] args)     
4. {  
5. int  a =  19 ;  
6. int  b =  5 ;  
7. // llamada al método  
8. int  c = agregar (a, b);   // ayb son parámetros reales  
9. System.out.println ( "La suma de ayb es ="  + c);  
10.}  
11.// método definido por el usuario  
12.public static int  add ( int  n1,  int  n2)    // n1 y n2 son parámetros formales    
13.{  
14.int  s;  
15.s = n1 + n2;  
16.return  s; // devolviendo la suma  
17.}  
18.}  

Producción:

La suma de ayb es = 24

Método estático
Un método que tiene una palabra clave estática se conoce como método estático. En otras palabras, un
método que pertenece a una clase en lugar de una instancia de una clase se conoce como método
estático. También podemos crear un método estático usando la palabra clave static antes del nombre
del método.

La principal ventaja de un método estático es que podemos llamarlo sin crear un objeto. Puede acceder a
miembros de datos estáticos y también cambiar su valor. Se utiliza para crear un método de
instancia. Se invoca mediante el nombre de la clase. El mejor ejemplo de un método estático es el
método main () .

Ejemplo de método estático

Display.java

1.  Pantalla de   clase pública 
2. {  
3. public static void  main (String [] args)     
4. {  
5. show();  
6. }  
7.  espectáculo vacío estático ()    
8. {  
9. System.out.println ( "Es un ejemplo de método estático." );  
10.}  
11.}  

Producción:

Es un ejemplo de método estático.

Método de instancia
El método de la clase se conoce como método de instancia . Es un método no estático definido en la
clase. Antes de llamar o invocar el método de instancia, es necesario crear un objeto de su
clase. Veamos un ejemplo de un método de instancia.

InstanceMethodExample.java
1.  InstanceMethodExample de   clase pública 
2. {  
3. public static void  main (String [] args)    
4. {  
5. // Creando un objeto de la clase  
6. InstanceMethodExample obj =  new  InstanceMethodExample ();  
7. // invocando el método de instancia   
8. System.out.println ( "La suma es:" + obj.add ( 12 ,  13 ));  
9. }  
10.int  s;  
11.// método definido por el usuario porque no hemos utilizado una palabra clave estática  
12.public int  add ( int  a,  int  b)   
13.{  
14.s = a + b;  
15.// devolviendo la suma  
16.return  s;  
17.}  
18.}  

Producción:

La suma es: 25

Hay dos tipos de métodos de instancia:

o Método de acceso

o Método del mutador

Método de acceso: El método o métodos que leen las variables de instancia se conocen como método
de acceso. Podemos identificarlo fácilmente porque el método tiene como prefijo la
palabra get . También se conoce como getters . Devuelve el valor del campo privado. Se utiliza para
obtener el valor del campo privado.

Ejemplo

1. public int  getId ()     
2. {    
3. return  Id;    
4. }    

Mutator Method: The method(s) read the instance variable(s) and also modify the values. We can
easily identify it because the method is prefixed with the word set. It is also known
as setters or modifiers. It does not return anything. It accepts a parameter of the same data type that
depends on the field. It is used to set the value of the private field.

Example

1. public void setRoll(int roll)   
2. {  
3. this.roll = roll;  
4. }  
Example of accessor and mutator method

Student.java

1. public class Student   
2. {  
3. private int roll;  
4. private String name;  
5. public int getRoll()    //accessor method  
6. {  
7. return roll;  
8. }  
9. public void setRoll(int roll) //mutator method  
10.{  
11.this.roll = roll;  
12.}  
13.public String getName()   
14.{  
15.return name;  
16.}  
17.public void setName(String name)   
18.{  
19.this.name = name;  
20.}  
21.public void display()  
22.{  
23.System.out.println("Roll no.: "+roll);  
24.System.out.println("Student name: "+name);  
25.}  
26.}  
Abstract Method
El método que no tiene cuerpo de método se conoce como método abstracto. En otras palabras, sin una
implementación se conoce como método abstracto. Siempre declara en la clase abstracta . Significa
que la clase en sí debe ser abstracta si tiene un método abstracto. Para crear un método abstracto,
usamos la palabra clave abstract .

Sintaxis

1.  nombre_método vacío abstracto ();   
Ejemplo de método abstracto

Demo.java

1. clase abstracta  Demo  // clase abstracta   


2. {  
3. // declaración de método abstracto  
4.  display vacío abstracto ();   
5. }  
6. La clase pública  MyClass  extiende la  demostración   
7. {  
8. // impulso del método  
9.  pantalla vacía ()  
10.{  
11.System.out.println ( "¿Método abstracto?" );  
12.}  
13.public static void  main (String args [])    
14.{  
15.// creando objeto de clase abstracta  
16.Demo obj =  new  MyClass ();  
17.// invocando el método abstracto  
18.obj.display ();  
19.}  
20.}  

Producción:

Método abstracto ...

Método de fábrica
Es un método que devuelve un objeto a la clase a la que pertenece. Todos los métodos estáticos son
métodos de fábrica. Por ejemplo, NumberFormat obj = NumberFormat.getNumberInstance ();

Constructores en Java
1. Tipos de constructores

1. Constructor predeterminado

2. Constructor parametrizado

2. Sobrecarga del constructor

3. ¿El constructor devuelve algún valor?

4. Copiar los valores de un objeto en otro

5. ¿El constructor realiza otras tareas en lugar de la inicialización?


En Java , un constructor es un bloque de códigos similar al método. Se llama cuando se crea una
instancia de la clase . En el momento de llamar al constructor, la memoria para el objeto se asigna en la
memoria.

Es un tipo especial de método que se utiliza para inicializar el objeto.

Cada vez que se crea un objeto con la palabra clave new (), se llama al menos a un constructor.

Llama a un constructor predeterminado si no hay ningún constructor disponible en la clase. En tal caso,
el compilador de Java proporciona un constructor predeterminado de forma predeterminada.

Hay dos tipos de constructores en Java: constructor sin argumentos y constructor parametrizado.

Nota: Se llama constructor porque construye los valores en el momento de la creación del objeto. No es
necesario escribir un constructor para una clase. Es porque el compilador de Java crea un constructor
predeterminado si su clase no tiene ninguno.

Reglas para crear un constructor de Java


Hay dos reglas definidas para el constructor.

1. El nombre del constructor debe ser el mismo que su nombre de clase.

2. Un constructor no debe tener un tipo de retorno explícito

3. Un constructor de Java no puede ser abstracto, estático, final y sincronizado

Nota: Podemos usar modificadores de acceso al declarar un constructor. Controla la creación de


objetos. En otras palabras, podemos tener un constructor privado, protegido, público o
predeterminado en Java.

Tipos de constructores de Java


Hay dos tipos de constructores en Java:

1. Constructor predeterminado (constructor sin argumentos)

2. Constructor parametrizado
Constructor predeterminado de Java
Un constructor se llama "Constructor predeterminado" cuando no tiene ningún parámetro.

Sintaxis del constructor predeterminado:


1. <nombre_clase> () {}  

Example of default constructor

In this example, we are creating the no-arg constructor in the Bike class. It will be invoked at the time of

1. //Java Program to create and call a default constructor  
2. class Bike1{  
3. //creating a default constructor  
4. Bike1(){System.out.println("Bike is created");}  
5. //main method  
6. public static void main(String args[]){  
7. //calling a default constructor  
8. Bike1 b=new Bike1();  
9. }  
10.}  
Test it Now

Output:

Bike is created
Rule: If there is no constructor in a class, compiler automatically creates a default constructor.

Q) What is the purpose of a default constructor?

The default constructor is used to provide the default values to the object like 0, null, etc., depending on
the type.

Example of default constructor that displays the default values


1. //Let us see another example of default constructor  
2. //which displays the default values  
3. class Student3{  
4. int id;  
5. String name;  
6. //method to display the value of id and name  
7. void display(){System.out.println(id+" "+name);}  
8.   
9. public static void main(String args[]){  
10.//creating objects  
11.Student3 s1=new Student3();  
12.Student3 s2=new Student3();  
13.//displaying values of the object  
14.s1.display();  
15.s2.display();  
16.}  
17.}  
Test it Now

Output:

0 null
0 null

Explanation:In the above class,you are not creating any constructor so compiler provides you a default
constructor. Here 0 and null values are provided by default constructor.

Java Parameterized Constructor


A constructor which has a specific number of parameters is called a parameterized constructor.

Why use the parameterized constructor?

The parameterized constructor is used to provide different values to distinct objects. However, you can
provide the same values also.

Example of parameterized constructor


In this example, we have created the constructor of Student class that have two parameters. We can
have any number of parameters in the constructor.

1. //Java Program to demonstrate the use of the parameterized constructor.  
2. class Student4{  
3.     int id;  
4.     String name;  
5.     //creating a parameterized constructor  
6.     Student4(int i,String n){  
7.     id = i;  
8.     name = n;  
9.     }  
10.    //method to display the values  
11.    void display(){System.out.println(id+" "+name);}  
12.   
13.    public static void main(String args[]){  
14.    //creating objects and passing values  
15.    Student4 s1 = new Student4(111,"Karan");  
16.    Student4 s2 = new Student4(222,"Aryan");  
17.    // método de llamada para mostrar los valores del objeto  
18.    s1.display ();  
19.    s2.display ();  
20.   }  
21.}  
Pruébelo ahora

Producción:

111 Karan
222 Ario

Sobrecarga de constructores en Java


En Java, un constructor es como un método pero sin tipo de retorno. También se puede sobrecargar
como los métodos de Java.

La sobrecarga de constructores en Java es una técnica de tener más de un constructor con diferentes
listas de parámetros. Están organizados de manera que cada constructor realice una tarea diferente. El
compilador los diferencia por el número de parámetros de la lista y sus tipos.

Ejemplo de sobrecarga de constructores


1. // Programa Java para sobrecargar constructores  
2. clase  Student5 {  
3.     int  id;  
4.     Nombre de cadena;  
5.     int  age;  
6.     // creando dos constructores arg  
7.     Student5 ( int  i, String n) {  
8.     id = i;  
9.     nombre = n;  
10.    }  
11.    // creando un constructor de tres argumentos  
12.    Student5 ( int  i, String n, int  a) {  
13.    id = i;  
14.    nombre = n;  
15.    edad = a;  
16.    }  
17.    void  display () {System.out.println (id + "" + nombre + "" + edad);}  
18.   
19.    public static void  main (String args []) {    
20.    Student5 s1 =  nuevo  Student5 ( 111 , "Karan" );  
21.    Student5 s2 =  nuevo  Student5 ( 222 , "ario" , 25 );  
22.    s1.display ();  
23.    s2.display ();  
24.   }  
25.}  
Pruébelo ahora

Producción:

111 Karan 0
222 Ario 25

Diferencia entre constructor y método en Java


Hay muchas diferencias entre constructores y métodos. Se dan a continuación.

Constructor de Java Método Java

Se utiliza un constructor para inicializar el estado de un objeto. Se utiliza un método para expo
comportamiento de un objeto.

Un constructor no debe tener un tipo de retorno. Un método debe tener un tipo d

El constructor se invoca implícitamente. El método se invoca explícitame

El compilador de Java proporciona un constructor predeterminado si El compilador no proporciona el


no tiene ningún constructor en una clase. ningún caso.

El nombre del constructor debe ser el mismo que el de la clase. El nombre del método puede o
que el nombre de la clase.
Constructor de copias de Java
No hay un constructor de copias en Java. Sin embargo, podemos copiar los valores de un objeto a otro
como un constructor de copias en C ++.

Hay muchas formas de copiar los valores de un objeto en otro en Java. Ellos son:

o Por constructor

o Asignando los valores de un objeto a otro

o Por el método clone () de la clase Object

En este ejemplo, vamos a copiar los valores de un objeto en otro usando el constructor de Java.

1. // Programa Java para inicializar los valores de un objeto a otro objeto.  


2. clase  Student6 {  
3.     int  id;  
4.     Nombre de cadena;  
5.     //constructor to initialize integer and string  
6.     Student6(int i,String n){  
7.     id = i;  
8.     name = n;  
9.     }  
10.    //constructor to initialize another object  
11.    Student6(Student6 s){  
12.    id = s.id;  
13.    name =s.name;  
14.    }  
15.    void display(){System.out.println(id+" "+name);}  
16.   
17.    public static void main(String args[]){  
18.    Student6 s1 = new Student6(111,"Karan");  
19.    Student6 s2 =  nuevo  Student6 (s1);  
20.    s1.display ();  
21.    s2.display ();  
22.   }  
23.}  
Pruébelo ahora

Producción:

111 Karan
111 Karan

Copiando valores sin constructor


Podemos copiar los valores de un objeto en otro asignando los valores de los objetos a otro objeto. En
este caso, no es necesario crear el constructor.

1. clase  Student7 {  
2.     int  id;  
3.     Nombre de cadena;  
4.     Student7 ( int  i, String n) {  
5.     id = i;  
6.     nombre = n;  
7.     }  
8.     Estudiante7 () {}  
9.     void  display () {System.out.println (id + "" + nombre);}  
10.   
11.    public static void  main (String args []) {    
12.    Student7 s1 =  nuevo  Student7 ( 111 , "Karan" );  
13.    Student7 s2 =  nuevo  Student7 ();  
14.    s2.id = s1.id;  
15.    s2.name = s1.name;  
16.    s1.display ();  
17.    s2.display ();  
18.   }  
19.}  
Pruébelo ahora

Producción:

111 Karan
111 Karan

P) ¿El constructor devuelve algún valor?


Sí, es la instancia de clase actual (no puede usar el tipo de retorno pero devuelve un valor).

¿Puede el constructor realizar otras tareas en lugar de la inicialización?


Sí, como la creación de objetos, iniciar un hilo, llamar a un método, etc. Puede realizar cualquier
operación en el constructor como lo hace en el método.

¿Existe la clase Constructor en Java?


Si.

¿Cuál es el propósito de la clase Constructor?


Java proporciona una clase Constructor que se puede utilizar para obtener la información interna de un
constructor en la clase. Se encuentra en el paquete java.lang.reflect.

1.
Variable estática
2. Programa del contador sin variable estática

3. Programa del contador con variable estática

4. Método estático

5. Restricciones para el método estático

6. ¿Por qué el método principal es estático?

7. Bloque estático

8. ¿Podemos ejecutar un programa sin método principal?

La palabra clave estática en Java se utiliza principalmente para la gestión de memoria. Podemos


aplicar palabras clave estáticas con variables , métodos, bloques y clases anidadas . La palabra clave
estática pertenece a la clase que una instancia de la clase.
La estática puede ser:

1. Variable (también conocida como variable de clase)

2. Método (también conocido como método de clase)

3. Cuadra

4. Clase anidada

1) variable estática de Java


Si declara cualquier variable como estática, se conoce como variable estática.

o La variable estática se puede utilizar para hacer referencia a la propiedad común de todos los
objetos (que no es única para cada objeto), por ejemplo, el nombre de la empresa de los
empleados, el nombre de la universidad de los estudiantes, etc.
o La variable estática obtiene memoria solo una vez en el área de la clase en el momento de la
carga de la clase.

Ventajas de la variable estática

Hace que la memoria de su programa sea eficiente (es decir, ahorra memoria).

Comprender el problema sin variable estática


1. clase  estudiante {  
2.      int  rollno;  
3.      Nombre de cadena;  
4.      String college = "ITS" ;  
5. }  
Suppose there are 500 students in my college, now all instance data members will get memory each
time when the object is created. All students have its unique rollno and name, so instance data member
is good in such case. Here, "college" refers to the common property of all objects. If we make it static,
this field will get the memory only once.

Java static property is shared to all objects.


Example of static variable
1. //Java Program to demonstrate the use of static variable  
2. class Student{  
3.    int rollno;//instance variable  
4.    String name;  
5.    static String college ="ITS";//static variable  
6.    //constructor  
7.    Student(int r, String n){  
8.    rollno = r;  
9.    name = n;  
10.   }  
11.   //method to display the values  
12.   void display (){System.out.println(rollno+" "+name+" "+college);}  
13.}  
14.//Test class to show the values of objects  
15.public class TestStaticVariable1{  
16. public static void main(String args[]){  
17. Student s1 = new Student(111,"Karan");  
18. Student s2 = new Student(222,"Aryan");  
19. //we can change the college of all objects by the single line of code  
20. //Student.college="BBDIT";  
21. s1.display();  
22. s2.display();  
23. }  
24.}  
Test it Now

Output:

111 Karan ITS


222 Aryan ITS
Program of the counter without static variable
In this example, we have created an instance variable named count which is incremented in the
constructor. Since instance variable gets the memory at the time of object creation, each object will have
the copy of the instance variable. If it is incremented, it won't reflect other objects. So each object will
have the value 1 in the count variable.

1. //Java Program to demonstrate the use of an instance variable  
2. //which get memory each time when we create an object of the class.  
3. class Counter{  
4. int count=0;//will get memory each time when the instance is created  
5.   
6. Counter(){  
7. count++;//incrementing value  
8. System.out.println(count);  
9. }  
10.  
11.public static void main(String args[]){  
12.//Creating objects  
13.Counter c1=new Counter();  
14.Counter c2=new Counter();  
15.Counter c3=new Counter();  
16.}  
17.}  
Test it Now

Output:

1
1
1

Program of counter by static variable


As we have mentioned above, static variable will get the memory only once, if any object changes the
value of the static variable, it will retain its value.

1. //Java Program to illustrate the use of static variable which  
2. //is shared with all objects.  
3. class Counter2{  
4. static int count=0;//will get memory only once and retain its value  
5.   
6. Counter2(){  
7. count++;//incrementing the value of static variable  
8. System.out.println(count);  
9. }  
10.  
11.public static void main(String args[]){  
12.//creating objects  
13.Counter2 c1=new Counter2();  
14.Counter2 c2=new Counter2();  
15.Counter2 c3=new Counter2();  
16.}  
17.}  
Test it Now

Output:

1
2
3

2) Java static method


If you apply static keyword with any method, it is known as static method.

o A static method belongs to the class rather than the object of a class.

o A static method can be invoked without the need for creating an instance of a class.

o A static method can access static data member and can change the value of it.
Example of static method
1. //Java Program to demonstrate the use of a static method.  
2. class Student{  
3.      int rollno;  
4.      String name;  
5.      static String college = "ITS";  
6.      //static method to change the value of static variable  
7.      static void change(){  
8.      college = "BBDIT";  
9.      }  
10.     //constructor to initialize the variable  
11.     Student(int r, String n){  
12.     rollno = r;  
13.     name = n;  
14.     }  
15.     //method to display values  
16.     void display(){System.out.println(rollno+" "+name+" "+college);}  
17.}  
18.//Test class to create and display the values of object  
19.public class TestStaticMethod{  
20.    public static void main(String args[]){  
21.    Student.change();//calling change method  
22.    //creating objects  
23.    Student s1 = new Student(111,"Karan");  
24.    Student s2 = new Student(222,"Aryan");  
25.    Student s3 = new Student(333,"Sonoo");  
26.    //calling display method  
27.    s1.display();  
28.    s2.display();  
29.    s3.display();  
30.    }  
31.}  
Test it Now
Output:111 Karan BBDIT
222 Aryan BBDIT
333 Sonoo BBDIT

Another example of a static method that performs a normal


calculation
1. //Java Program to get the cube of a given number using the static method  
2.   
3. class Calculate{  
4.   static int cube(int x){  
5.   return x*x*x;  
6.   }  
7.   
8.   public static void main(String args[]){  
9.   int result=Calculate.cube(5);  
10.  System.out.println(result);  
11.  }  
12.}  
Test it Now
Output:125
Restrictions for the static method

There are two main restrictions for the static method. They are:

1. The static method can not use non static data member or call non-static method directly.

2. this and super cannot be used in static context.

1. class A{  
2.  int a=40;//non static  
3.    
4.  public static void main(String args[]){  
5.   System.out.println(a);  
6.  }  
7. }        
Test it Now
Output:Compile Time Error

Q) Why is the Java main method static?


Ans) It is because the object is not required to call a static method. If it were a non-static
method, JVM creates an object first then call main() method that will lead the problem of extra memory
allocation.

3) Java static block


o Is used to initialize the static data member.

o It is executed before the main method at the time of classloading.

Example of static block


1. class A2{  
2.   static{System.out.println("static block is invoked");}  
3.   public static void main(String args[]){  
4.    System.out.println("Hello main");  
5.   }  
6. }  
Test it Now
Output:static block is invoked
Hello main

Q) Can we execute a program without main() method?

Ans) No, one of the ways was the static block, but it was possible till JDK 1.6. Since JDK 1.7, it is not
possible to execute a Java class without the main method.

1. class A3{  
2.   static{  
3.   System.out.println("static block is invoked");  
4.   System.exit(0);  
5.   }  
6. }  
Test it Now

Output:

static block is invoked

Since JDK 1.7 and above, output would be:

Error: Main method not found in class A3, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application

esta palabra clave en java


Puede haber mucho uso de java esta palabra clave . En Java, esta es una variable de referencia que
se refiere al objeto actual.

Uso de java esta palabra clave


Aquí se da el uso de java esta palabra clave.
1. esto se puede utilizar para hacer referencia a la variable de instancia de clase actual.

2. esto se puede usar para invocar el método de clase actual (implícitamente)

3. this () se puede utilizar para invocar el constructor de la clase actual.

4. esto se puede pasar como argumento en la llamada al método.

5. esto se puede pasar como argumento en la llamada al constructor.

6. esto se puede usar para devolver la instancia de clase actual del método.

Suggestion: If you are beginner to java, lookup only three usage of this keyword.
1) this: to refer current class instance variable
The this keyword can be used to refer current class instance variable. If there is ambiguity between the
instance variables and parameters, this keyword resolves the problem of ambiguity.

Understanding the problem without this keyword


Let's understand the problem if we don't use this keyword by the example given below:

1. class Student{  
2. int rollno;  
3. String name;  
4. float fee;  
5. Student(int rollno,String name,float fee){  
6. rollno=rollno;  
7. name=name;  
8. fee=fee;  
9. }  
10.void display(){System.out.println(rollno+" "+name+" "+fee);}  
11.}  
12.class TestThis1{  
13.public static void main(String args[]){  
14.Student s1=new Student(111,"ankit",5000f);  
15.Student s2=new Student(112,"sumit",6000f);  
16.s1.display();  
17.s2.display();  
18.}}  
Test it Now

Output:

0 null 0.0
0 null 0.0

In the above example, parameters (formal arguments) and instance variables are same. So, we are
using this keyword to distinguish local variable and instance variable.

Solution of the above problem by this keyword


1. class Student{  
2. int rollno;  
3. String name;  
4. float fee;  
5. Student(int rollno,String name,float fee){  
6. this.rollno=rollno;  
7. this.name=name;  
8. this.fee=fee;  
9. }  
10.void  display () {System.out.println (rollno + "" + nombre + "" + tarifa);}  
11.}  
12.  
13.class  TestThis2 {  
14.public static void  main (String args []) {    
15.Estudiante s1 = nuevo  estudiante ( 111 , "ankit" , 5000f);  
16.Estudiante s2 = nuevo  Estudiante ( 112 , "sumit" , 6000f);  
17.s1.display ();  
18.s2.display ();  
19.}}  
Pruébelo ahora

Producción:

111 ankit 5000


112 sumit 6000

Si las variables locales (argumentos formales) y las variables de instancia son diferentes, no es necesario
utilizar esta palabra clave como en el siguiente programa:

Programa donde no se requiere esta palabra clave


1. clase  estudiante {  
2. int  rollno;  
3. Nombre de cadena;  
4.  tarifa flotante ;  
5. Estudiante ( int  r, String n, float  f) {  
6. rollno = r;  
7. nombre = n;  
8. tarifa = f;  
9. }  
10.void  display () {System.out.println (rollno + "" + nombre + "" + tarifa);}  
11.}  
12.  
13.class  TestThis3 {  
14.public static void  main (String args []) {    
15.Estudiante s1 = nuevo  estudiante ( 111 , "ankit" , 5000f);  
16.Estudiante s2 = nuevo  Estudiante ( 112 , "sumit" , 6000f);  
17.s1.display ();  
18.s2.display ();  
19.}}  
Pruébelo ahora

Producción:

111 ankit 5000


112 sumit 6000
Es mejor utilizar nombres significativos para las variables. Entonces usamos el mismo nombre para
las variables de instancia y los parámetros en tiempo real, y siempre usamos esta palabra clave.
2) esto: para invocar el método de clase actual
Puede invocar el método de la clase actual utilizando la palabra clave this. Si no usa la palabra clave this,
el compilador agrega automáticamente esta palabra clave mientras invoca el método. Veamos el ejemplo

1. clase  A {  
2. void  m () {System.out.println ( "hola m" );}  
3. void  n () {  
4. System.out.println ( "hola n" );  
5. // m (); // igual que este.m ()  
6. este .m ();  
7. }  
8. }  
9. class  TestThis4 {  
10.public static void  main (String args []) {    
11.A a=new A();  
12.a.n();  
13.}}  
Test it Now

Output:

hello n
hello m

3) this() : to invoke current class constructor


The this() constructor call can be used to invoke the current class constructor. It is used to reuse the
constructor. In other words, it is used for constructor chaining.

Calling default constructor from parameterized constructor:


1. class A{  
2. A(){System.out.println("hello a");}  
3. A(int x){  
4. this();  
5. System.out.println(x);  
6. }  
7. }  
8. class TestThis5{  
9. public static void main(String args[]){  
10.A a=new A(10);  
11.}}  
Test it Now

Output:

hello a
10

Calling parameterized constructor from default constructor:

1. class A{  
2. A(){  
3. this(5);  
4. System.out.println("hello a");  
5. }  
6. A(int x){  
7. System.out.println(x);  
8. }  
9. }  
10.class TestThis6{  
11.public static void main(String args[]){  
12.A a=new A();  
13.}}  
Test it Now

Output:

5
hello a

Real usage of this() constructor call


The this() constructor call should be used to reuse the constructor from the constructor. It maintains the
chain between the constructors i.e. it is used for constructor chaining. Let's see the example given below
that displays the actual use of this keyword.

1. class Student{  
2. int rollno;  
3. String name,course;  
4. float fee;  
5. Student(int rollno,String name,String course){  
6. this.rollno=rollno;  
7. this.name=name;  
8. this.course=course;  
9. }  
10.Student(int rollno,String name,String course,float fee){  
11.this(rollno,name,course);//reusing constructor  
12.this.fee=fee;  
13.}  
14.void display(){System.out.println(rollno+" "+name+" "+course+" "+fee);}  
15.}  
16.class TestThis7{  
17.public static void main(String args[]){  
18.Student s1=new Student(111,"ankit","java");  
19.Student s2=new Student(112,"sumit","java",6000f);  
20.s1.display();  
21.s2.display();  
22.}}  
Pruébelo ahora

Producción:

111 ankit java null


112 sumit java 6000
Regla: la llamada a this () debe ser la primera declaración en el constructor.
1. clase  estudiante {  
2. int  rollno;  
3. Nombre de cadena, curso;  
4.  tarifa flotante ;  
5. Estudiante ( int  rollno, nombre de cadena, curso de cadena) {  
6. este .rollno = rollno;  
7. este .nombre = nombre;  
8. este .curso = curso;  
9. }  
10.Estudiante ( int  rollno, nombre de cadena, curso de cadena,  tarifa flotante ) {  
11.este .fee = fee;  
12.esto (rollno, nombre, curso); // CTError  
13.}  
14.void  display () {System.out.println (rollno + "" + nombre + "" + curso + "" + tarifa);}  
15.}  
16.class  TestThis8 {  
17.public static void  main (String args []) {    
18.Estudiante s1 = nuevo  Estudiante ( 111 , "ankit" , "java" );  
19.Estudiante s2 = nuevo  Estudiante ( 112 , "sumit" , "java" , 6000f);  
20.s1.display ();  
21.s2.display ();  
22.}}  
Pruébelo ahora
Error de tiempo de compilación: la llamada a esto debe ser la primera declaración en el
constructor

4) esto: pasar como argumento en el método


La palabra clave this también se puede pasar como argumento en el método. Se utiliza principalmente
en el manejo de eventos. Veamos el ejemplo:

1. clase  S2 {  
2.   void  m (S2 obj) {  
3.   System.out.println ( "se invoca el método" );  
4.   }  
5.   void  p () {  
6.   m ( esto );  
7.   }  
8.   public static void  main (String args []) {    
9.   S2 s1 =  nuevo  S2 ();  
10.  s1.p ();  
11.  }  
12.}  
Pruébelo ahora

Producción:

se invoca el método
Aplicación de esto que se puede pasar como argumento:

En el manejo de eventos (o) en una situación en la que tenemos que proporcionar la referencia de una
clase a otra. Se utiliza para reutilizar un objeto en muchos métodos.

5) esto: pasar como argumento en la llamada al constructor


También podemos pasar la palabra clave this en el constructor. Es útil si tenemos que usar un objeto en
varias clases. Veamos el ejemplo:

1. clase  B {  
2.   A4 obj;  
3.   B (obj A4) {  
4.     este .obj = obj;  
5.   }  
6.    pantalla vacía () {  
7.     System.out.println (obj.data); // usando un miembro de datos de la clase A4  
8.   }  
9. }  
10.  
11.clase  A4 {  
12.  int  datos = 10 ;  
13.  A4 () {  
14.   B b = nuevo  B ( este );  
15.   b.display ();  
16.  }  
17.  public static void  main (String args []) {    
18.   A4 a = nuevo  A4 ();  
19.  }  
20.}  
Pruébelo ahora
Salida: 10

6) esta palabra clave se puede utilizar para devolver la instancia de clase


actual
Podemos devolver esta palabra clave como una declaración del método. En tal caso, el tipo de retorno
del método debe ser el tipo de clase (no primitivo). Veamos el ejemplo:

Sintaxis de esto que se puede devolver como una declaración


1. return_type method_name () {  
2. devuelve esto ;   
3. }  
Ejemplo de esta palabra clave que devuelve como una declaración
del método
1. clase  A {  
2. A getA () {  
3. devuelve esto ;   
4. }  
5. void  msg () {System.out.println ( "Hola java" );}  
6. }  
7. class  Test1 {  
8. public static void  main (String args []) {    
9. nuevo  A (). getA (). msg ();  
10.}  
11.}  
Pruébelo ahora

Producción:

Hola java

Demostrando esta palabra clave


Demostremos que esta palabra clave se refiere a la variable de instancia de clase actual. En este program
imprimiendo la variable de referencia y esta, la salida de ambas variables es la misma.

1. clase  A5 {  
2. void  m () {  
3. System.out.println ( esto ); // imprime la misma ID de referencia  
4. }  
5. public static void  main (String args []) {    
6. A5 obj = nuevo  A5 ();  
7. System.out.println (obj); // imprime el ID de referencia  
8. obj.m ();  
9. }  
10.}  
Pruébelo ahora

Producción:

A5 @ 22b3ea59
A5 @ 22b3ea59

Herencia en Java
1. Herencia

2. Tipos de herencia

3. ¿Por qué la herencia múltiple no es posible en Java en el caso de la clase?

La herencia en Java es un mecanismo en el que un objeto adquiere todas las propiedades y


comportamientos de un objeto padre. Es una parte importante de los POO (sistema de programación
orientado a objetos).

La idea detrás de la herencia en Java es que puede crear nuevas clases que se basan en clases
existentes. Cuando hereda de una clase existente, puede reutilizar métodos y campos de la clase
principal. Además, también puede agregar nuevos métodos y campos en su clase actual.

La herencia representa la relación IS-A que también se conoce como relación padre-hijo .

Por que usar herencia en java


o Para anulación de método (para que se pueda lograr el polimorfismo en tiempo de ejecución ).

o Para la reutilización del código.


Términos utilizados en herencia
o Clase: una clase es un grupo de objetos que tienen propiedades comunes. Es una plantilla o plano
a partir del cual se crean los objetos.
o Subclase / Clase secundaria: La subclase es una clase que hereda la otra clase. También se
denomina clase derivada, clase extendida o clase secundaria.
o Superclase / Clase principal: Superclase es la clase de donde una subclase hereda las
características. También se le llama clase base o clase padre.
o Reutilización: como el nombre lo especifica, la reutilización es un mecanismo que le facilita la
reutilización de los campos y métodos de la clase existente cuando crea una nueva clase. Puede
utilizar los mismos campos y métodos ya definidos en la clase anterior.

La sintaxis de la herencia de Java


1. clase  nombre-subclase  extiende  nombre-superclase  
2. {  
3.    // métodos y campos  
4. }  

The extends keyword indicates that you are making a new class that derives from an existing class.
The meaning of "extends" is to increase the functionality.

In the terminology of Java, a class which is inherited is called a parent or superclass, and the new class
is called child or subclass.

Java Inheritance Example

As displayed in the above figure, Programmer is the subclass and Employee is the superclass. The
relationship between the two classes is Programmer IS-A Employee. It means that Programmer is a
type of Employee.
1. class Employee{  
2.  float salary=40000;  
3. }  
4. class Programmer extends Employee{  
5.  int bonus=10000;  
6.  public static void main(String args[]){  
7.    Programmer p=new Programmer();  
8.    System.out.println("Programmer salary is:"+p.salary);  
9.    System.out.println("Bonus of Programmer is:"+p.bonus);  
10.}  
11.}  
Test it Now
Programmer salary is:40000.0
Bonus of programmer is:10000

In the above example, Programmer object can access the field of own class as well as of Employee class
i.e. code reusability.

Types of inheritance in java


On the basis of class, there can be three types of inheritance in java: single, multilevel and hierarchical.

In java programming, multiple and hybrid inheritance is supported through interface only. We will learn
about interfaces later.
Note: Multiple inheritance is not supported in Java through class.

When one class inherits multiple classes, it is known as multiple inheritance. For Example:

Single Inheritance Example


When a class inherits another class, it is known as a single inheritance. In the example given below, Dog
class inherits the Animal class, so there is the single inheritance.

File: TestInheritance.java

1. class Animal{  
2. void eat(){System.out.println("eating...");}  
3. }  
4. class Dog extends Animal{  
5. void bark(){System.out.println("barking...");}  
6. }  
7. class TestInheritance{  
8. public static void main(String args[]){  
9. Dog d=new Dog();  
10.d.bark();  
11.d.eat();  
12.}}  

Output:
barking...
eating...

Multilevel Inheritance Example


When there is a chain of inheritance, it is known as multilevel inheritance. As you can see in the example
given below, BabyDog class inherits the Dog class which again inherits the Animal class, so there is a
multilevel inheritance.

File: TestInheritance2.java

1. class Animal{  
2. void eat(){System.out.println("eating...");}  
3. }  
4. class Dog extends Animal{  
5. void bark(){System.out.println("barking...");}  
6. }  
7. class BabyDog extends Dog{  
8. void weep(){System.out.println("weeping...");}  
9. }  
10.class TestInheritance2{  
11.public static void main(String args[]){  
12.BabyDog d=new BabyDog();  
13.d.weep();  
14.d.bark();  
15.d.eat();  
16.}}  

Output:

weeping...
barking...
eating...

Hierarchical Inheritance Example


When two or more classes inherits a single class, it is known as hierarchical inheritance. In the example
given below, Dog and Cat classes inherits the Animal class, so there is hierarchical inheritance.

File: TestInheritance3.java

1. class Animal{  
2. void eat(){System.out.println("eating...");}  
3. }  
4. class Dog extends Animal{  
5. void bark(){System.out.println("barking...");}  
6. }  
7. class Cat extends Animal{  
8. void meow(){System.out.println("meowing...");}  
9. }  
10.class TestInheritance3{  
11.public static void main(String args[]){  
12.Cat c=new Cat();  
13.c.meow();  
14.c.eat();  
15.//c.bark();//C.T.Error  
16.}}  

Output:

meowing...
eating...

Q) Why multiple inheritance is not supported in java?


To reduce the complexity and simplify the language, multiple inheritance is not supported in java.

Consider a scenario where A, B, and C are three classes. The C class inherits A and B classes. If A and B
classes have the same method and you call it from child class object, there will be ambiguity to call the
method of A or B class.

Since compile-time errors are better than runtime errors, Java renders compile-time error if you inherit 2
classes. So whether you have same method or different, there will be compile time error.

1. class A{  
2. void msg(){System.out.println("Hello");}  
3. }  
4. class B{  
5. void msg(){System.out.println("Welcome");}  
6. }  
7. class C extends A,B{//suppose if it were  
8.    
9.  public static void main(String args[]){  
10.   C obj=new C();  
11.   obj.msg();//Now which msg() method would be invoked?  
12.}  
13.}  
Test it Now
Compile Time Error

Agregación en Java
Si una clase tiene una referencia de entidad, se conoce como agregación. La agregación representa la
relación HAS-A.
Considere una situación, el objeto Empleado contiene mucha información como id, nombre, emailId, etc.
Contiene un objeto más llamado dirección, que contiene su propia información como ciudad, estado,
país, código postal, etc., como se indica a continuación.

1. class  Empleado {  
2. int  id;  
3. Nombre de cadena;  
4. Dirección Dirección; // La dirección es una clase  
5. ...  
6. }  

En tal caso, el empleado tiene una dirección de referencia de la entidad, por lo que la relación es la
dirección del empleado HAS-A.

¿Por qué utilizar la agregación?


o Para la reutilización del código.

Ejemplo simple de agregación

En este ejemplo, hemos creado la referencia de la clase Operation en la clase Circle.

1. clase  Operación {  
2.  int  cuadrado ( int  n) {  
3.   return  n * n;  
4.  }  
5. }  
6.   
7.  círculo de clase {  
8.  Operación op; //agregación  
9.   pi doble = 3,14 ;  
10.    
11.  área doble (  radio int ) {  
12.   op = nueva  Operación ();  
13.   int  rsquare = op.square (radio); // reutilización del código (es decir, delega la llamada al método).  
14.   return  pi * rsquare;  
15. }  
16.  
17.     
18.    
19. public static void  main (String args []) {    
20.   Círculo c = nuevo  Círculo ();  
21.    resultado doble = c.area ( 5 );  
22.   System.out.println (resultado);  
23. }  
24.}  
Pruébelo ahora
Salida: 78,5

¿Cuándo se usa la agregación?


o La reutilización del código también se logra mejor mediante la agregación cuando no existe una
relación is-a.
o La herencia debe usarse solo si la relación es-a se mantiene durante la vida útil de los objetos
involucrados; de lo contrario, la agregación es la mejor opción.

Comprensión de un ejemplo significativo de agregación


En este ejemplo, el empleado tiene un objeto de dirección, el objeto de dirección contiene su propia
información, como ciudad, estado, país, etc. En tal caso, la relación es la dirección del empleado HAS-A.

Dirección.java
1.  Dirección de clase pública {   
2. Cadena de ciudad, estado, país;  
3.   
4.  dirección pública (ciudad de cadena, estado de cadena, país de cadena) {  
5.     esta .ciudad = ciudad;  
6.     este .estado = estado;  
7.     este .país = país;  
8. }  
9.   
10.}  
Emp.java
1. public class  Emp {   
2. int  id;  
3. Nombre de cadena;  
4. Dirección Dirección;  
5.   
6. public  Emp ( int  id, String name, Address address) {  
7.     este .id = id;  
8.     este .nombre = nombre;  
9.     esta .dirección = dirección;  
10.}  
11.  
12. pantalla vacía () {  
13.System.out.println (id + "" + nombre);  
14.System.out.println (address.city + "" + address.state + "" + address.country);  
15.}  
16.  
17.public static void  main (String [] args) {    
18.Dirección address1 = nueva  dirección ( "gzb" , "UP" , "india" );  
19.Dirección address2 = nueva  dirección ( "gno" , "UP" , "india" );  
20.  
21.Emp e = nuevo  Emp ( 111 , "varun" , dirección1);  
22.Emp e2 = nuevo  Emp ( 112 , "arun" , dirección2);  
23.      
24.e.display ();  
25.e2.display ();  
26.      
27.}  
28.}  
Pruébelo ahora
Salida: 111 varun
gzb UP india
112 arun
gno UP india

Sobrecarga de métodos en Java


1. Diferentes formas de sobrecargar el método.

2. Cambiando el no. de argumentos

3. Cambiando el tipo de datos

4. Por qué la sobrecarga de métodos no es posible cambiando el tipo de retorno

5. ¿Podemos sobrecargar el método principal?

6. sobrecarga de métodos con Promoción de tipos

Si una clase tiene varios métodos que tienen el mismo nombre pero diferentes parámetros, se conoce
como sobrecarga de métodos .

Si tenemos que realizar una sola operación, tener el mismo nombre de los métodos aumenta la
legibilidad del programa .

Suponga que tiene que realizar la suma de los números dados, pero puede haber cualquier número de
argumentos, si escribe el método como a (int, int) para dos parámetros y b (int, int, int) para tres
parámetros, entonces Puede ser difícil para usted y para otros programadores comprender el
comportamiento del método porque su nombre es diferente.
Entonces, realizamos una sobrecarga de métodos para descubrir el programa rápidamente.

Ventaja de la sobrecarga de métodos

La sobrecarga de métodos aumenta la legibilidad del programa .

Diferentes formas de sobrecargar el método.

Hay dos formas de sobrecargar el método en java.

1. Cambiando el número de argumentos

2. Cambiando el tipo de datos

En Java, la sobrecarga de métodos no es posible cambiando solo el tipo de retorno del método.

1) Método de sobrecarga: cambio de no. de argumentos


In this example, we have created two methods, first add() method performs addition of two numbers
and second add method performs addition of three numbers.

In this example, we are creating static methods so that we don't need to create instance for calling
methods.

1. class Adder{  
2. static int add(int a,int b){return a+b;}  
3. static int add(int a,int b,int c){return a+b+c;}  
4. }  
5. class TestOverloading1{  
6. public static void main(String[] args){  
7. System.out.println (Sumador.add ( 11 , 11 ));  
8. System.out.println (Sumador.add ( 11 , 11 , 11 ));  
9. }}  
Pruébelo ahora

Producción:

22
33
2) Sobrecarga de métodos: cambiar el tipo de datos de los
argumentos
En este ejemplo, hemos creado dos métodos que difieren en el tipo de datos . El primer método add
recibe dos argumentos enteros y el segundo método add recibe dos argumentos dobles.

1. class  Adder {  
2. static int  add ( int  a,  int  b) { return  a + b;}   
3. static double  add ( doble  a,  doble  b) { return  a + b;}   
4. }  
5. class  TestOverloading2 {  
6. public static void  main (String [] args) {    
7. System.out.println (Sumador.add ( 11 , 11 ));  
8. System.out.println (Adder.add ( 12.3 , 12.6 ));  
9. }}  
Pruébelo ahora

Producción:

22
24,9

P) ¿Por qué la sobrecarga de métodos no es posible cambiando solo el


tipo de método devuelto?
En Java, la sobrecarga del método no es posible cambiando el tipo de retorno del método solo por
ambigüedad. Veamos cómo puede ocurrir la ambigüedad:

1. class  Adder {  
2. static int  add ( int  a, int  b) { return  a + b;}   
3. static double  add ( int  a, int  b) { return  a + b;}   
4. }  
5. class  TestOverloading3 {  
6. public static void  main (String [] args) {    
7. System.out.println (Sumador.add ( 11 , 11 )); //ambigüedad  
8. }}  
Pruébelo ahora

Producción:

Error de tiempo de compilación: el método add (int, int) ya está definido en la clase Adder

System.out.println (Sumador.add (11,11)); // Aquí, ¿cómo puede java determinar qué método sum ()
debe llamarse?
Nota: Error de tiempo de compilación es mejor que Error de tiempo de ejecución. Por lo tanto, el
compilador de Java muestra un error de tiempo del compilador si declara que el mismo método tiene
los mismos parámetros.
¿Podemos sobrecargar el método java main ()?
Sí, por sobrecarga de métodos. Puede tener cualquier número de métodos principales en una clase
mediante la sobrecarga de métodos. Pero JVM llama al método main () que recibe una matriz de cadenas
solo como argumentos. Veamos el ejemplo simple:

1. class  TestOverloading4 {  
2. public static void  main (String [] args) {System.out.println ( "main with String []" );}    
3. public static void  main (String args) {System.out.println ( "main with String" );}    
4. public static void  main () {System.out.println ( "main sin argumentos" );}    
5. }  
Pruébelo ahora

Producción:

principal con String []

Sobrecarga de métodos y promoción de tipos


Un tipo se promueve implícitamente a otro si no se encuentra ningún tipo de datos
coincidente. Entendamos el concepto por la figura que se muestra a continuación:

Como se muestra en el diagrama anterior, el byte se puede promover a corto, int, largo, flotante o
doble. El tipo de datos corto se puede promover a int, long, float o double. El tipo de datos char se puede
promover a int, long, float o double, etc.
Ejemplo de sobrecarga de métodos con TypePromotion
1. class  OverloadingCalculation1 {  
2.   void  sum ( int  a, long  b) {System.out.println (a + b);}  
3.    suma vacía ( int  a, int  b, int  c) {System.out.println (a + b + c);}  
4.   
5.   public static void  main (String args []) {    
6.   OverloadingCalculation1 obj = nuevo  OverloadingCalculation1 ();  
7.   obj. suma ( 20 , 20 ); // ahora el segundo literal int será promovido a largo  
8.   obj. suma ( 20 , 20 , 20 );  
9.   
10.  }  
11.}  
Pruébelo ahora
Salida: 40
60

Ejemplo de sobrecarga de método con promoción de tipo si se


encuentra una coincidencia
Si hay argumentos de tipo coincidentes en el método, no se realiza la promoción de tipo.

1. class  OverloadingCalculation2 {  
2.   void  sum ( int  a, int  b) {System.out.println ( "método int arg invocado" );}  
3.   void  sum ( long  a, long  b) {System.out.println ( "método long arg invocado" );}  
4.   
5.   public static void  main (String args []) {    
6.   OverloadingCalculation2 obj = nuevo  OverloadingCalculation2 ();  
7.   obj. suma ( 20 , 20 ); // ahora se invoca el método int arg sum ()  
8.   }  
9. }  
Pruébelo ahora
Salida: método int arg invocado

Ejemplo de sobrecarga de método con promoción de tipo en caso


de ambigüedad
Si no hay argumentos de tipo coincidentes en el método, y cada método promueve un número similar de
argumentos, habrá ambigüedad.

1. class  OverloadingCalculation3 {  
2.   void  sum ( int  a, long  b) {System.out.println ( "un método invocado" );}  
3.   void  sum ( long  a, int  b) {System.out.println ( "método b invocado" );}  
4.   
5.   public static void  main (String args []) {    
6.   OverloadingCalculation3 obj = nuevo  OverloadingCalculation3 ();  
7.   obj. suma ( 20 , 20 ); // ahora ambigüedad  
8.   }  
9. }  
Pruébelo ahora
Salida: Error de tiempo de compilación

Anulación de método en Java


1. Comprender el problema sin anular el método

2. ¿Podemos anular el método estático?

3. Sobrecarga de método frente a anulación de método

Si la subclase (clase secundaria) tiene el mismo método que el declarado en la clase principal, se conoce
como anulación de método en Java .

En otras palabras, si una subclase proporciona la implementación específica del método que ha sido
declarada por una de sus clases principales, se conoce como anulación de método.

Uso de la anulación del método Java


o La anulación de método se utiliza para proporcionar la implementación específica de un método
que ya es proporcionado por su superclase.
o La anulación de método se utiliza para el polimorfismo en tiempo de ejecución

Reglas para la anulación del método Java


1. El método debe tener el mismo nombre que en la clase principal

2. El método debe tener el mismo parámetro que en la clase principal.

3. Debe haber una relación IS-A (herencia).


 
Comprender el problema sin anular el método

Entendamos el problema que podemos enfrentar en el programa si no usamos la anulación de métodos.

1. // Programa Java para demostrar por qué necesitamos anular métodos  


2. // Aquí, estamos llamando al método de la clase padre con el hijo  
3. // objeto de clase.  
4. // Creando una clase padre  
5. class  Vehicle {  
6.   void  run () {System.out.println ( "El vehículo está funcionando" );}  
7. }  
8. // Creando una clase secundaria  
9. clase  Bicicleta  extiende  Vehículo {  
10.  public static void  main (String args []) {    
11.  // creando una instancia de clase hija  
12.  Bike obj =  new  Bike ();  
13.  // llamando al método con instancia de clase secundaria  
14.  obj.run ();  
15.  }  
16.}  
Pruébelo ahora

Producción:

El vehículo está funcionando

El problema es que tengo que proporcionar una implementación específica del método run () en la
subclase, por eso usamos la anulación del método.

Ejemplo de anulación de método


En este ejemplo, hemos definido el método de ejecución en la subclase como se define en la clase
principal, pero tiene alguna implementación específica. El nombre y el parámetro del método son los
mismos, y existe una relación IS-A entre las clases, por lo que se reemplaza el método.

1. // Programa Java para ilustrar el uso de la anulación del método Java  


2. // Creando una clase padre.  
3. class  Vehicle {  
4.   // definir un método  
5.   void  run () {System.out.println ( "El vehículo está funcionando" );}  
6. }  
7. // Creando una clase secundaria  
8. clase  Bike2  extiende  Vehículo {  
9.   // definiendo el mismo método que en la clase padre  
10.  void  run () {System.out.println ( "La bicicleta funciona con seguridad" );}  
11.  
12.  public static void  main (String args []) {    
13.  Bike2 obj =  nueva  Bike2 (); // creando objeto  
14.  obj.run (); // método de llamada  
15.  }  
16.}  
Pruébelo ahora

Producción:

La bicicleta funciona con seguridad

Un ejemplo real de anulación del método Java


Considere un escenario en el que Banco es una clase que proporciona funcionalidad para obtener la tasa
de interés. Sin embargo, la tasa de interés varía según los bancos. Por ejemplo, los bancos SBI, ICICI y
AXIS podrían proporcionar una tasa de interés del 8%, 7% y 9%.
Java method overriding is mostly used in Runtime Polymorphism which we will learn in next pages.
1. //Java Program to demonstrate the real scenario of Java Method Overriding  
2. //where three classes are overriding the method of a parent class.  
3. //Creating a parent class.  
4. class Bank{  
5. int getRateOfInterest(){return 0;}  
6. }  
7. //Creating child classes.  
8. class SBI extends Bank{  
9. int getRateOfInterest(){return 8;}  
10.}  
11.  
12.clase  ICICI  extiende  Bank {  
13.int  getRateOfInterest () { return 7 ;}   
14.}  
15.clase  AXIS  extiende  Banco {  
16.int  getRateOfInterest () { return 9 ;}   
17.}  
18.// Clase de prueba para crear objetos y llamar a los métodos  
19.class  Test2 {  
20.public static void  main (String args []) {    
21.SBI s = nuevo  SBI ();  
22.ICICI i = nuevo  ICICI ();  
23.EJE a = nuevo  EJE ();  
24.System.out.println ( "Tasa de interés de SBI:" + s.getRateOfInterest ());  
25.System.out.println ( "Tasa de interés ICICI:" + i.getRateOfInterest ());  
26.System.out.println ( "Tasa de interés AXIS:" + a.getRateOfInterest ());  
27.}  
28.}  
Pruébelo ahora
Producción:
Tasa de interés del SBI: 8
Tasa de interés ICICI: 7
Tasa de interés AXIS: 9

¿Podemos anular el método estático?


No, no se puede anular un método estático. Puede probarse mediante polimorfismo en tiempo de
ejecución, por lo que lo aprenderemos más adelante.

¿Por qué no podemos anular el método estático?


Es porque el método estático está vinculado con la clase, mientras que el método de instancia está
vinculado con un objeto. Static pertenece al área de clases y una instancia pertenece al área de
almacenamiento dinámico.

¿Podemos anular el método principal de Java?


No, porque el principal es un método estático.

Diferencia entre la sobrecarga de métodos y la anulación de


métodos en Java
Haga clic en mí para ver la diferencia entre la sobrecarga de métodos y la anulación

Más temas sobre anulación de métodos (no para principiantes)


Anulación de método con el modificador de acceso

Veamos el concepto de anulación de método con modificador de acceso.

Manejo de excepciones con anulación de métodos

Veamos el concepto de anulación de métodos con manejo de excepciones.

Tipo de retorno covariante


El tipo de retorno covariante especifica que el tipo de retorno puede variar en la misma dirección que la
subclase.

Antes de Java5, no era posible anular ningún método cambiando el tipo de retorno. Pero ahora, desde
Java5, es posible anular el método cambiando el tipo de retorno si la subclase anula cualquier método
cuyo tipo de retorno sea No primitivo pero cambia su tipo de retorno al tipo de subclase. Tomemos un
ejemplo simple:

Nota: Si es un principiante en Java, omita este tema y vuelva a él después de los conceptos de OOP.
Ejemplo simple de tipo de retorno covariante
1. clase  A {  
2. Un get () { devuelve esto ;}   
3. }  
4.   
5. la clase  B1  extiende  A {  
6. B1 get () { devuelve esto ;}   
7. void  message () {System.out.println ( "bienvenido al tipo de retorno covariante" );}  
8.   
9. public static void  main (String args []) {    
10.nuevo  B1 (). get (). message ();  
11.}  
12.}  
Pruébelo ahora
Salida: bienvenido al tipo de retorno covariante

Como puede ver en el ejemplo anterior, el tipo de retorno del método get () de la clase A es A, pero el
tipo de retorno del método get () de la clase B es B. Ambos métodos tienen un tipo de retorno diferente
pero es un método anulado. . Esto se conoce como tipo de retorno covariante.

¿Cómo se implementan los tipos de devolución de Covariant?


Java no permite la sobrecarga basada en el tipo de retorno, pero JVM siempre permite la sobrecarga
basada en el tipo de retorno. JVM utiliza la firma completa de un método para búsqueda / resolución. La
firma completa significa que incluye el tipo de retorno además de los tipos de argumento. es decir, una
clase puede tener dos o más métodos que se diferencian solo por el tipo de retorno. javac usa este
hecho para implementar tipos de retorno covariantes.

Súper palabra clave en Java


La palabra clave super en Java es una variable de referencia que se utiliza para referirse al objeto de
clase padre inmediato.

Siempre que crea la instancia de la subclase, se crea implícitamente una instancia de la clase principal a
la que se hace referencia mediante una variable de superreferencia.

Uso de Java super Keyword

1. super se puede utilizar para hacer referencia a la variable de instancia de la clase principal
inmediata.

2. super se puede utilizar para invocar el método de clase padre inmediato.

3. super () se puede usar para invocar el constructor de clase padre inmediato.


1) super se usa para referirse a la variable de instancia de la clase
principal inmediata.
Podemos usar super palabra clave para acceder al miembro de datos o al campo de la clase principal. Se
utiliza si la clase principal y la clase secundaria tienen los mismos campos.

1. class  Animal {  
2. String color = "blanco" ;  
3. }  
4. clase  Perro  extiende  Animal {  
5. String color = "negro" ;  
6. void  printColor () {  
7. System.out.println (color); // imprime el color de la clase de perro  
8. System.out.println ( super .color); // imprime el color de la clase Animal  
9. }  
10.}  
11.class  TestSuper1 {  
12.public static void  main (String args []) {    
13.Perro d =  perro nuevo ();  
14.d.printColor ();  
15.}}  
Pruébelo ahora
Producción:

negro
blanco

En el ejemplo anterior, ambas clases Animal y Dog tienen un color de propiedad común. Si imprimimos
la propiedad de color, imprimirá el color de la clase actual de forma predeterminada. Para acceder a la
propiedad principal, necesitamos usar super palabra clave.

2) super se puede usar para invocar el método de la clase


principal
La palabra clave super también se puede utilizar para invocar el método de la clase principal. Debe
usarse si la subclase contiene el mismo método que la clase principal. En otras palabras, se utiliza si se
anula el método.

1. class  Animal {  
2. void  eat () {System.out.println ( "comiendo ..." );}  
3. }  
4. clase  Perro  extiende  Animal {  
5. void  eat () {System.out.println ( "comiendo pan ..." );}  
6.  ladrar vacío () {System.out.println ( "ladrar ..." );}  
7.  trabajo vacío () {  
8. super .eat ();  
9. ladrar();  
10.}  
11.}  
12.class  TestSuper2 {  
13.public static void  main (String args []) {    
14.Perro d =  perro nuevo ();  
15.d.trabajo ();  
16.}}  
Pruébelo ahora

Producción:

comiendo...
ladrido...

En el ejemplo anterior, Animal y Dog, ambas clases tienen el método eat () si llamamos al método eat ()
desde la clase Dog, llamará al método eat () de la clase Dog de forma predeterminada porque se le da
prioridad a local.

Para llamar al método de la clase principal, necesitamos usar super palabra clave.

3) super se utiliza para invocar el constructor de la clase principal.


La palabra clave super también se puede utilizar para invocar el constructor de la clase principal. Veamos
un ejemplo sencillo:
1. class Animal{  
2. Animal(){System.out.println("animal is created");}  
3. }  
4. class Dog extends Animal{  
5. Dog(){  
6. super();  
7. System.out.println("dog is created");  
8. }  
9. }  
10.class TestSuper3{  
11.public static void main(String args[]){  
12.Dog d=new Dog();  
13.}}  
Test it Now

Output:

animal is created
dog is created
Note: super() is added in each class constructor automatically by compiler if there is no super() or
this().

As we know well that default constructor is provided by compiler automatically if there is no constructor.
But, it also adds super() as the first statement.

Another example of super keyword where super() is provided by the compiler implicitly.

1. class Animal{  
2. Animal(){System.out.println("animal is created");}  
3. }  
4. class Dog extends Animal{  
5. Dog(){  
6. System.out.println("dog is created");  
7. }  
8. }  
9. class TestSuper4{  
10.public static void main(String args[]){  
11.Dog d=new Dog();  
12.}}  
Test it Now

Output:

animal is created
dog is created

super example: real use


Veamos el uso real de super palabra clave. Aquí, la clase Emp hereda la clase Person, por lo que todas
las propiedades de Person se heredarán a Emp de forma predeterminada. Para inicializar toda la
propiedad, estamos usando el constructor de la clase principal de la clase secundaria. De esta manera,
estamos reutilizando el constructor de la clase padre.

1. class  Person {  
2. int  id;  
3. Nombre de cadena;  
4. Persona ( int  id, String name) {  
5. este .id = id;  
6. este .nombre = nombre;  
7. }  
8. }  
9. class  Emp  extiende  Person {  
10. salario flotante ;  
11.Emp ( int  id, String name, float  salario) {  
12.super (id, nombre); // reutilizando el constructor padre  
13.este .salary = salario;  
14.}  
15.void  display () {System.out.println (id + "" + nombre + "" + salario);}  
16.}  
17.class  TestSuper5 {  
18.public static void  main (String [] args) {    
19.Emp e1 = nuevo  Emp ( 1 , "ankit" , 45000f);  
20.e1.display ();  
21.}}  
Pruébelo ahora

Producción:

1 ankit 45000

1.
Instance initializer block
2. Example of Instance initializer block
3. What is invoked firstly instance initializer block or constructor?

4. Rules for instance initializer block

5. Program of instance initializer block that is invoked after super()

Instance Initializer block is used to initialize the instance data member. It run each time when object o
created.
The initialization of the instance variable can be done directly but there can be performed extra operations
the instance variable in the instance initializer block.

Que) What is the use of instance initializer block while we can directly assign a value in
instance data member? For example:
1. class Bike{  
2.     int speed=100;  
3. }  

Why use instance initializer block?


Suppose I have to perform some operations while assigning value to instance data member e.g. a for loop
array or error handling etc.

Example of instance initializer block


Let's see the simple example of instance initializer block that performs initialization.

1. class Bike7{  
2.     int speed;  
3.       
4.     Bike7(){System.out.println("speed is "+speed);}  
5.    
6.     {speed=100;}  
7.        
8.     public static void main(String args[]){  
9.     Bike7 b1=new Bike7();  
10.    Bike7 b2=new Bike7();  
11.    }      
12.}  
Test it Now
Output:speed is 100
speed is 100

There are three places in java where you can perform operations:

1. method

2. constructor
3. block

What is invoked first, instance initializer block or constructor?


1. class Bike8{  
2.     int speed;  
3.       
4.     Bike8(){System.out.println("constructor is invoked");}  
5.    
6.     {System.out.println("instance initializer block invoked");}  
7.        
8.     public static void main(String args[]){  
9.     Bike8 b1=new Bike8();  
10.    Bike8 b2=new Bike8();  
11.    }      
12.}  
Test it Now
Output:instance initializer block invoked
constructor is invoked
instance initializer block invoked
constructor is invoked

In the above example, it seems that instance initializer block is firstly invoked but NO. Instance intializer b
the time of object creation. The java compiler copies the instance initializer block in the constructor after t
super(). So firstly, constructor is invoked. Let's understand it by the figure given below:
Note: The java compiler copies the code of instance initializer block in every constructor.

Rules for instance initializer block :


There are mainly three rules for the instance initializer block. They are as follows:

1. The instance initializer block is created when instance of the class is created.

2. The instance initializer block is invoked after the parent class constructor is invoked (i.e. after
super() constructor call).

3. The instance initializer block comes in the order in which they appear.

Program of instance initializer block that is invoked after super()


1. class A{  
2. A(){  
3. System.out.println("parent class constructor invoked");  
4. }  
5. }  
6. class B2 extends A{  
7. B2(){  
8. super();  
9. System.out.println("child class constructor invoked");  
10.}  
11.  
12.{System.out.println("instance initializer block is invoked");}  
13.  
14.public static void main(String args[]){  
15.B2 b=new B2();  
16.}  
17.}  
Test it Now
Output:parent class constructor invoked
instance initializer block is invoked
child class constructor invoked

Another example of instance block


1. class A{  
2. A(){  
3. System.out.println("parent class constructor invoked");  
4. }  
5. }  
6.   
7. class B3 extends A{  
8. B3(){  
9. super();  
10.System.out.println("child class constructor invoked");  
11.}  
12.  
13.B3(int a){  
14.super();  
15.System.out.println("child class constructor invoked "+a);  
16.}  
17.  
18.{System.out.println("instance initializer block is invoked");}  
19.  
20.public static void main(String args[]){  
21.B3 b1=new B3();  
22.B3 b2=new B3(10);  
23.}  
24.}  
Test it Now
parent class constructor invoked
instance initializer block is invoked
child class constructor invoked
parent class constructor invoked
instance initializer block is invoked
child class constructor invoked 10

Palabra clave final en Java


1. Variable final

2. Método final

3. Clase final

4. ¿Se hereda el método final?

5. Variable final en blanco

6. Variable final estática en blanco

7. Parámetro final

8. ¿Puedes declarar un constructor final?

La palabra clave final en Java se utiliza para restringir al usuario. La palabra clave final de Java se
puede utilizar en muchos contextos. Final puede ser:

1. variable

2. método

3. clase

La palabra clave final se puede aplicar con las variables, una variable final que no tiene valor se llama
variable final en blanco o variable final no inicializada. Solo se puede inicializar en el constructor. La
variable final en blanco también puede ser estática, que se inicializará solo en el bloque
estático. Tendremos un aprendizaje detallado de estos. Primero aprendamos los conceptos básicos de la
palabra clave final.
1) variable final de Java
Si crea alguna variable como final, no puede cambiar el valor de la variable final (será constante).

Ejemplo de variable final


Hay un límite de velocidad variable final, vamos a cambiar el valor de esta variable, pero no se puede
cambiar porque la variable final una vez asignado un valor nunca se puede cambiar.

1. class  Bike9 {  
2.  final int  speedlimit = 90 ; // variable final   
3.  void  run () {  
4.   límite de velocidad = 400 ;  
5.  }  
6.  public static void  main (String args []) {    
7.  Bike9 obj = nueva   Bike9 ();  
8.  obj.run ();  
9.  }  
10.} // fin de clase  
Pruébelo ahora
Salida: Error de tiempo de compilación

2) método final de Java


Si crea algún método como final, no puede anularlo.

Ejemplo de método final


1. class  Bike {  
2.   final void  run () {System.out.println ( "corriendo" );}   
3. }  
4.      
5. clase  Honda  extiende  Bike {  
6.    void  run () {System.out.println ( "corriendo de forma segura a 100 km / h" );}  
7.      
8.    public static void  main (String args []) {    
9.    Honda honda =  nuevo  Honda ();  
10.   honda.run ();  
11.   }  
12.}  
Pruébelo ahora
Salida: Error de tiempo de compilación

3) clase final de Java


Si hace alguna clase como final, no puede extenderla.

Ejemplo de clase final


1.  Bicicleta de clase final {}   
2.   
3. clase  Honda1  extiende  Bike {  
4.   void  run () {System.out.println ( "corriendo de forma segura a 100 km / h" );}  
5.     
6.   public static void  main (String args []) {    
7.   Honda1 honda =  nuevo  Honda1 ();  
8.   honda.run ();  
9.   }  
10.}  
Pruébelo ahora
Salida: Error de tiempo de compilación

P) ¿Se hereda el método final?


Respuesta) Sí, el método final se hereda pero no puede anularlo. Por ejemplo:

1. class  Bike {  
2.   final void  run () {System.out.println ( "corriendo ..." );}   
3. }  
4. clase  Honda2  extiende  Bike {  
5.    public static void  main (String args []) {    
6.     nuevo  Honda2 (). ejecutar ();  
7.    }  
8. }  
Pruébelo ahora
Salida: corriendo ...
P) ¿Qué es la variable final en blanco o sin inicializar?
Una variable final que no se inicializa en el momento de la declaración se conoce como variable final en
blanco.

Si desea crear una variable que se inicializa en el momento de crear el objeto y una vez inicializada no se
puede cambiar, es útil. Por ejemplo, el número de PAN CARD de un empleado.

Solo se puede inicializar en el constructor.

Ejemplo de variable final en blanco


1. clase  estudiante {  
2. int  id;  
3. Nombre de cadena;  
4.  Cadena final PAN_CARD_NUMBER;  
5. ...  
6. }  
Que) ¿Podemos inicializar la variable final en blanco?

Sí, pero solo en constructor. Por ejemplo:

1. class  Bike10 {  
2.   final int  speedlimit; // variable final en blanco   
3.     
4.   Bike10 () {  
5.   límite de velocidad = 70 ;  
6.   System.out.println (límite de velocidad);  
7.   }  
8.   
9.   public static void  main (String args []) {    
10.    nueva  Bike10 ();  
11. }  
12.}  
Pruébelo ahora
Salida: 70

variable final estática en blanco


Una variable final estática que no se inicializa en el momento de la declaración se conoce como variable
final estática en blanco. Se puede inicializar solo en bloque estático.

Ejemplo de variable final estática en blanco


1. clase  A {  
2.    datos int finales estáticos ; // variable final estática en blanco    
3.   estático {datos = 50 ;}  
4.   public static void  main (String args []) {    
5.     System.out.println (A.data);  
6.  }  
7. }  

P) ¿Qué es el parámetro final?

Si declara algún parámetro como final, no puede cambiar su valor.

1. class  Bike11 {  
2.   int  cube ( final int  n) {   
3.    n = n + 2 ; // no se puede cambiar ya que n es final  
4.    n * n * n;  
5.   }  
6.   public static void  main (String args []) {    
7.     Bike11 b = nueva  Bike11 ();  
8.     b.cube ( 5 );  
9.  }  
10.}  
Pruébelo ahora
Salida: Error de tiempo de compilación

P) ¿Podemos declarar final a un constructor?


No, porque el constructor nunca se hereda.

Polimorfismo en Java
El polimorfismo en Java es un concepto mediante el cual podemos realizar una sola acción de
diferentes formas . El polimorfismo se deriva de 2 palabras griegas: poli y morfos. La palabra "poli"
significa muchos y "morfos" significa formas. Entonces polimorfismo significa muchas formas.

Hay dos tipos de polimorfismo en Java: polimorfismo en tiempo de compilación y polimorfismo en tiempo
de ejecución. Podemos realizar polimorfismo en Java mediante la sobrecarga de métodos y la anulación
de métodos.

Si sobrecarga un método estático en Java, es el ejemplo de polimorfismo en tiempo de


compilación. Aquí, nos centraremos en el polimorfismo en tiempo de ejecución en java.

Polimorfismo en tiempo de ejecución en Java


El polimorfismo en tiempo de ejecución o envío de método dinámico es un proceso en el que una
llamada a un método anulado se resuelve en tiempo de ejecución en lugar de en tiempo de compilación.
En este proceso, se llama a un método anulado a través de la variable de referencia de una
superclase. La determinación del método a llamar se basa en el objeto al que hace referencia la variable
de referencia.

Primero entendamos la conversión antes del polimorfismo en tiempo de ejecución.

Upcasting

Si la variable de referencia de la clase principal se refiere al objeto de la clase secundaria, se conoce


como upcasting. Por ejemplo:

1. clase  A {}  
2. la clase  B  extiende  A {}  
1. A a = nuevo  B (); // upcasting  

Para la conversión ascendente, podemos usar la variable de referencia de tipo de clase o un tipo de
interfaz. Por ejemplo:

1. interfaz  I {}  
2. clase  A {}  
3. clase  B  extiende  A  implementos  I {}  

Aquí, la relación de la clase B sería:

B IS-A A
B IS-A I
Objeto B IS-A

Dado que Object es la clase raíz de todas las clases en Java, podemos escribir B IS-A Object.

Ejemplo de polimorfismo en tiempo de ejecución de Java


In this example, we are creating two classes Bike and Splendor. Splendor class extends Bike class and
overrides its run() method. We are calling the run method by the reference variable of Parent class.
Since it refers to the subclass object and subclass method overrides the Parent class method, the
subclass method is invoked at runtime.

Since method invocation is determined by the JVM not compiler, it is known as runtime polymorphism.

1. class Bike{  
2.   void run(){System.out.println("running");}  
3. }  
4. class Splendor extends Bike{  
5.   void run(){System.out.println("running safely with 60km");}  
6.   
7.   public static void main(String args[]){  
8.     Bicicleta b =  nuevo  Esplendor (); // upcasting  
9.     b.run ();  
10.  }  
11.}  
Pruébelo ahora

Producción:

corriendo de forma segura con 60km.

Ejemplo de polimorfismo en tiempo de ejecución de Java: banco


Considere un escenario en el que Banco es una clase que proporciona un método para obtener la tasa de
interés. Sin embargo, la tasa de interés puede diferir según los bancos. Por ejemplo, los bancos SBI,
ICICI y AXIS están proporcionando una tasa de interés del 8.4%, 7.3% y 9.7%.

Nota: Este ejemplo también se proporciona en la anulación del método, pero no hubo conversión
ascendente.
1. class  Bank {  
2. flotar  getRateOfInterest () { return 0 ;}   
3. }  
4. clase  SBI  extiende  Banco {  
5. flotar  getRateOfInterest () { return 8 .4f;}   
6. }  
7. clase  ICICI  extiende  Bank {  
8. flotar  getRateOfInterest () { return 7 .3f;}   
9. }  
10.clase  AXIS  extiende  Banco {  
11.flotar  getRateOfInterest () { return 9 .7f;}   
12.}  
13.class  TestPolymorphism {  
14.public static void  main (String args []) {    
15.Banco b;  
16.b = nuevo  SBI ();  
17.System.out.println ( "Tasa de interés de SBI:" + b.getRateOfInterest ());  
18.b = nuevo  ICICI ();  
19.System.out.println ( "Tasa de interés ICICI:" + b.getRateOfInterest ());  
20.b = nuevo  EJE ();  
21.System.out.println ( "Tasa de interés AXIS:" + b.getRateOfInterest ());  
22.}  
23.}  
Pruébelo ahora

Producción:

Tasa de interés del SBI: 8.4


Tasa de interés ICICI: 7.3
Tasa de interés AXIS: 9,7

Ejemplo de polimorfismo en tiempo de ejecución de Java: forma


1. class  Shape {  
2. void  draw () {System.out.println ( "dibujando ..." );}  
3. }  
4. clase  Rectángulo  extiende  Forma {  
5. void  draw () {System.out.println ( "dibujando rectángulo ..." );}  
6. }  
7. clase El  círculo  extiende la  forma {  
8. void  draw () {System.out.println ( "círculo de dibujo ..." );}  
9. }  
10.clase  Triángulo  extiende  Forma {  
11.void  draw () {System.out.println ( "dibujando triángulo ..." );}  
12.}  
13.class  TestPolymorphism2 {  
14.public static void  main (String args []) {    
15.Forma s;  
16.s = nuevo  Rectángulo ();  
17.s.draw ();  
18.s = nuevo  círculo ();  
19.s.draw ();  
20.s = nuevo  Triángulo ();  
21.s.draw ();  
22.}  
23.}  
Pruébelo ahora

Producción:

dibujo rectángulo ...


dibujo círculo ...
dibujo triangulo ...

Ejemplo de polimorfismo en tiempo de ejecución de Java: animal


1. class  Animal {  
2. void  eat () {System.out.println ( "comiendo ..." );}  
3. }  
4. clase  Perro  extiende  Animal {  
5. void  eat () {System.out.println ( "comiendo pan ..." );}  
6. }  
7. class  Cat  extiende  Animal {  
8. void  eat () {System.out.println ( "comiendo rata ..." );}  
9. }  
10.clase  León  extiende  Animal {  
11.void  eat () {System.out.println ( "comiendo carne ..." );}  
12.}  
13.class  TestPolymorphism3 {  
14.public static void  main (String [] args) {    
15.Animal a;  
16.a =  perro nuevo ();  
17.comer ();  
18.a =  gato nuevo ();  
19.comer ();  
20.a = nuevo  León ();  
21.comer ();  
22.}}  
Pruébelo ahora

Producción:

comiendo pan...
comiendo rata ...
comer carne...

Polimorfismo en tiempo de ejecución de Java con miembro de


datos
Se anula un método, no los miembros de datos, por lo que los miembros de datos no pueden lograr el
polimorfismo en tiempo de ejecución.

En el ejemplo que se muestra a continuación, ambas clases tienen un límite de velocidad de miembro de
datos. Estamos accediendo al miembro de datos mediante la variable de referencia de la clase principal
que se refiere al objeto de la subclase. Dado que estamos accediendo al miembro de datos que no está
anulado, siempre accederá al miembro de datos de la clase principal.

Regla: los miembros de datos no pueden lograr el polimorfismo en tiempo de ejecución.


1. class  Bike {  
2.  int  speedlimit = 90 ;  
3. }  
4. clase  Honda3  extiende  Bike {  
5.  int  speedlimit = 150 ;  
6.   
7.  public static void  main (String args []) {    
8.   Bike obj = new  Honda3 ();  
9.   System.out.println (obj.speedlimit); // 90  
10.}  
Pruébelo ahora

Producción:

90

Polimorfismo en tiempo de ejecución de Java con herencia


multinivel
Veamos el ejemplo simple de polimorfismo en tiempo de ejecución con herencia multinivel.

1. class  Animal {  
2. void  eat () {System.out.println ( "comiendo" );}  
3. }  
4. clase  Perro  extiende  Animal {  
5. void  eat () {System.out.println ( "comiendo frutas" );}  
6. }  
7. clase  BabyDog  extiende  Perro {  
8. void  eat () {System.out.println ( "beber leche" );}  
9. public static void  main (String args []) {    
10.Animal a1, a2, a3;  
11.a1 = nuevo  Animal ();  
12.a2 =  perro nuevo ();  
13.a3 = nuevo  BabyDog ();  
14.a1.eat ();  
15.a2.eat ();  
16.a3.eat ();  
17.}  
18.}  
Pruébelo ahora

Producción:

comiendo
comiendo frutas
la leche de consumo

Pruebe la salida
1. class  Animal {  
2. void  eat () {System.out.println ( "animal está comiendo ..." );}  
3. }  
4. clase  Perro  extiende  Animal {  
5. void  eat () {System.out.println ( "perro está comiendo ..." );}  
6. }  
7. clase  BabyDog1  extiende  Perro {  
8. public static void  main (String args []) {    
9. Animal a = nuevo  BabyDog1 ();  
10.comer ();  
11.}}  
Pruébelo ahora

Producción:

Perro está comiendo

Dado que BabyDog no anula el método eat (), se invoca el método eat () de la clase Dog.

Enlace estático y enlace dinámico

La conexión de una llamada a un método al cuerpo del método se conoce como enlace.

Hay dos tipos de encuadernación

1. Enlace estático (también conocido como enlace temprano).

2. Enlace dinámico (también conocido como enlace tardío).


Entendiendo el tipo
Entendamos el tipo de instancia.

1) las variables tienen un tipo

Cada variable tiene un tipo, puede ser primitiva y no primitiva.

1. int  datos = 30 ;  

Aquí la variable de datos es un tipo de int.

2) Las referencias tienen un tipo


1. class  Dog {  
2.  public static void  main (String args []) {    
3.   Perro d1; // Aquí d1 es un tipo de perro  
4.  }  
5. }  
3) Los objetos tienen un tipo
Un objeto es una instancia de una clase java particular, pero también es una instancia de su superclase.

1. clase  Animal {}  
2.   
3. clase  Perro  extiende  Animal {  
4.  public static void  main (String args []) {    
5.   Perro d1 =  perro nuevo ();  
6.  }  
7. }  
Aquí d1 es una instancia de la clase Dog, pero también es una instancia de Animal.
enlace estático
Cuando el tipo de objeto se determina en tiempo de compilación (por el compilador), se conoce como
enlace estático.

Si hay algún método privado, final o estático en una clase, existe un enlace estático.

Ejemplo de enlace estático


1. class  Dog {  
2.  private void  eat () {System.out.println ( "perro está comiendo ..." );}   
3.   
4.  public static void  main (String args []) {    
5.   Perro d1 =  perro nuevo ();  
6.   d1.eat ();  
7.  }  
8. }  

Enlace dinámico
Cuando el tipo de objeto se determina en tiempo de ejecución, se conoce como enlace dinámico.

Ejemplo de enlace dinámico


1. class  Animal {  
2.  void  eat () {System.out.println ( "animal está comiendo ..." );}  
3. }  
4.   
5. clase  Perro  extiende  Animal {  
6.  void  eat () {System.out.println ( "perro está comiendo ..." );}  
7.   
8.  public static void  main (String args []) {    
9.   Animal a =  perro nuevo ();  
10.  comer ();  
11. }  
12.}  
Pruébelo ahora
Resultado: el perro está comiendo ...

En el ejemplo anterior, el compilador no puede determinar el tipo de objeto, porque la instancia de Dog ta
instancia de Animal, por lo que el compilador no conoce su tipo, solo su tipo base.

Instancia de Java
1. instancia de Java

2. Ejemplo de operador instanceof

3. Aplicando el operador instanceof con una variable que tienen un valor nulo

4. Downcasting con el operador instanceof

5. Downcasting sin instancia de operador

El operador java instanceof se usa para probar si el objeto es una instancia del tipo especificado
(clase, subclase o interfaz).

El instanceof en java también se conoce como operador de comparación de tipos porque compara la


instancia con el tipo. Devuelve verdadero o falso. Si aplicamos el operador instanceof con cualquier
variable que tenga un valor nulo, devuelve falso.

Ejemplo simple de instancia de Java


Veamos el ejemplo simple del operador de instancia donde prueba la clase actual.

1. class  Simple1 {  
2.  public static void  main (String args []) {    
3.  Simple1 s = nuevo  Simple1 ();  
4.  System.out.println (  instancia de  Simple1); //cierto  
5.  }  
6. }  
Pruébelo ahora
Salida: verdadero

Un objeto de tipo subclase también es un tipo de clase padre. Por ejemplo, si Perro extiende Animal,
entonces el objeto de Perro puede ser referido por la clase Perro o Animal.

Otro ejemplo de operador de instancia de Java

1. clase  Animal {}  
2. class  Dog1  extiende  Animal { // Perro hereda Animal  
3.   
4.  public static void  main (String args []) {    
5.  Perro1 d = nuevo  Perro1 ();  
6.  System.out.println (d  instancia de  Animal); //cierto  
7.  }  
8. }  
Pruébelo ahora
Salida: verdadero

instanceof en java con una variable que tiene un valor nulo


Si aplicamos el operador instanceof con una variable que tiene un valor nulo, devuelve falso. Veamos el
ejemplo dado a continuación donde aplicamos el operador instanceof con la variable que tiene un valor
nulo.

1. class  Dog2 {  
2.  public static void  main (String args []) {    
3.   Dog2 d = nulo ;  
4.   System.out.println (d  instancia de  Dog2); //falso  
5.  }  
6. }  
Pruébelo ahora
Salida: falso

Downcasting con el operador instanceof de Java


Cuando el tipo de subclase se refiere al objeto de la clase principal, se conoce como abatimiento. Si lo
realizamos directamente, el compilador da error de compilación. Si lo realiza mediante el encasillado,
ClassCastException se lanza en tiempo de ejecución. Pero si usamos el operador instanceof, es posible la
reducción.

1. Perro d = nuevo  Animal (); //Error de compilación  

Si realizamos downcasting por encasillado, ClassCastException se lanza en tiempo de ejecución.

1. Perro d = (Perro) nuevo  Animal ();  


2. // Se compila correctamente pero se lanza ClassCastException en tiempo de ejecución  
Posibilidad de downcasting con instanceof
Veamos el ejemplo, donde el downcasting es posible mediante el operador instanceof.

1. clase  Animal {}  
2.   
3. class  Dog3  extiende  Animal {  
4.    método de vacío estático (Animal a) {   
5.     if (una  instancia de  Dog3) {  
6.        Perro3 d = (Perro3) a; // abatimiento  
7.        System.out.println ( "ok downcasting realizado" );  
8.     }  
9.   }  
10.   
11.  public static void  main (String [] args) {    
12.    Animal a = nuevo  Perro3 ();  
13.    Dog3.method (a);  
14.  }  
15.    
16. }  
Pruébelo ahora
Salida: ok downcasting realizado

Downcasting sin el uso de java instanceof


El downcasting también se puede realizar sin el uso del operador instanceof como se muestra en el
siguiente ejemplo:

1. clase  Animal {}  
2. class  Dog4  extiende  Animal {  
3.    método de vacío estático (Animal a) {   
4.        Perro4 d = (Perro4) a; // abatimiento  
5.        System.out.println ( "ok downcasting realizado" );  
6.   }  
7.    public static void  main (String [] args) {    
8.     Animal a = nuevo  Perro4 ();  
9.     Dog4.method (a);  
10.  }  
11.}  
Pruébelo ahora
Salida: ok downcasting realizado

Echemos un vistazo más de cerca a este, el objeto real al que hace referencia a, es un objeto de la clase
Dog. Entonces, si lo abatimos, está bien. Pero que pasará si escribimos:

1. Animal a = nuevo  Animal ();  


2. Método del perro (a);  
3. // Ahora ClassCastException pero no en el caso del operador instanceof  

Comprender el uso real de instanceof en java


Veamos el uso real de la palabra clave instanceof con el ejemplo que se muestra a continuación.

1. interfaz  imprimible {}  
2. clase  A  implementa  Printable {  
3. public void  a () {System.out.println ( "un método" );}   
4. }  
5. clase  B  implementa  Printable {  
6. public void  b () {System.out.println ( "método b" );}   
7. }  
8.   
9. class  Call {  
10.void  invoke (Printable p) { // upcasting  
11.si (p  instancia de  A) {  
12.A a = (A) p; // Abatimiento   
13.Automóvil club británico();  
14.}  
15.si (p  instancia de  B) {  
16.B b = (B) p; // Abatimiento   
17.cama y desayuno();  
18.}  
19.  
20.}  
21.} // fin de la clase de llamada  
22.  
23.class  Test4 {  
24.public static void  main (String args []) {    
25.Imprimible p = nuevo  B ();  
26.Llamar c = nueva  Llamar ();  
27.c. invocar (p);  
28.}  
29.}  
Pruébelo ahora
Salida: método b

Clase abstracta en Java


Una clase que se declara con la palabra clave abstracta se conoce como clase abstracta en Java . Puede
tener métodos abstractos y no abstractos (método con el cuerpo).

Antes de aprender la clase abstracta de Java, primero comprendamos la abstracción en Java.

Abstracción en Java
La abstracción es un proceso de ocultar los detalles de implementación y mostrar solo la funcionalidad
al usuario.

De otra forma, muestra solo cosas esenciales al usuario y oculta los detalles internos, por ejemplo,
enviando SMS donde escribes el texto y envías el mensaje. No conoces el procesamiento interno sobre la
entrega del mensaje.

La abstracción le permite concentrarse en lo que hace el objeto en lugar de en cómo lo hace.

Ways to achieve Abstraction

There are two ways to achieve abstraction in java

1. Abstract class (0 to 100%)

2. Interface (100%)
Abstract class in Java
A class which is declared as abstract is known as an abstract class. It can have abstract and non-
abstract methods. It needs to be extended and its method implemented. It cannot be instantiated.

Points to Remember
o An abstract class must be declared with an abstract keyword.

o It can have abstract and non-abstract methods.

o It cannot be instantiated.

o It can have constructors and static methods also.

o It can have final methods which will force the subclass not to change the body of the method.

Example of abstract class

1. abstract class A{}  

Abstract Method in Java


A method which is declared as abstract and does not have implementation is known as an abstract
method.

Example of abstract method

1. abstract void printStatus();//no method body and abstract  

Ejemplo de clase abstracta que tiene un método abstracto


En este ejemplo, Bike es una clase abstracta que contiene solo una ejecución de método abstracto. Su
implementación es proporcionada por la clase Honda.

1.  bicicleta de clase abstracta {   
2.    ejecución vacía abstracta ();   
3. }  
4. clase  Honda4  extiende  Bike {  
5. void  run () {System.out.println ( "corriendo de forma segura" );}  
6. public static void  main (String args []) {    
7.  Bike obj =  new  Honda4 ();  
8.  obj.run ();  
9. }  
10.}  
Pruébelo ahora
corriendo con seguridad
Comprender el escenario real de la clase abstracta
En este ejemplo, Shape es la clase abstracta y su implementación la proporcionan las clases Rectangle y
Circle.

En general, no conocemos la clase de implementación (que está oculta para el usuario final), y
el método de fábrica proporciona un objeto de la clase de implementación .

Un método de fábrica es un método que devuelve la instancia de la clase. Más adelante aprenderemos


sobre el método de fábrica.

En este ejemplo, si crea la instancia de la clase Rectangle, se invocará el método draw () de la clase
Rectangle.

Archivo: TestAbstraction1.java

1.  Forma de clase abstracta {   
2.  dibujo vacío abstracto ();   
3. }  
4. // En un escenario real, la implementación es proporcionada por otros, es decir, desconocida por el
usuario final  
5. clase  Rectángulo  extiende  Forma {  
6. void  draw () {System.out.println ( "rectángulo de dibujo" );}  
7. }  
8. clase  Circle1  extiende  Shape {  
9. void  draw () {System.out.println ( "círculo de dibujo" );}  
10.}  
11.// En un escenario real, el programador o el usuario llama al método  
12.class  TestAbstraction1 {  
13.public static void  main (String args []) {    
14.Forma s = new  Circle1 (); // En un escenario real, el objeto se proporciona a través del método, por
ejemplo, el método getShape ()  
15.s.draw ();  
16.}  
17.}  
Pruébelo ahora
círculo de dibujo

Otro ejemplo de clase abstracta en java


Archivo: TestBank.java

1. clase abstracta  Bank {     
2. resumen int  getRateOfInterest ();     
3. }    
4. clase  SBI  extiende  Banco {    
5. int  getRateOfInterest () { return 7 ;}     
6. }    
7. clase  PNB  extiende  Bank {    
8. int  getRateOfInterest () { return 8 ;}     
9. }    
10.    
11.class  TestBank {    
12.public static void  main (String args []) {      
13.Banco b;  
14.b=new SBI();  
15.System.out.println("Rate of Interest is: "+b.getRateOfInterest()+" %");    
16.b=new PNB();  
17.System.out.println("Rate of Interest is: "+b.getRateOfInterest()+" %");    
18.}}    
Test it Now
Rate of Interest is: 7 %
Rate of Interest is: 8 %

Abstract class having constructor, data member and methods


An abstract class can have a data member, abstract method, method body (non-abstract method),
constructor, and even main() method.

File: TestAbstraction2.java

1. // Ejemplo de una clase abstracta que tiene métodos abstractos y no abstractos  


2.   bicicleta de clase abstracta {   
3.    Bike () {System.out.println ( "se crea la bicicleta" );}  
4.     ejecución vacía abstracta ();   
5.    void  changeGear () {System.out.println ( "cambio de marcha" );}  
6.  }  
7. // Creando una clase secundaria que hereda la clase abstracta  
8.  clase  Honda  extiende  Bike {  
9.  void  run () {System.out.println ( "corriendo de forma segura ..." );}  
10. }  
11.// Crear una clase de prueba que llame a métodos abstractos y no abstractos  
12. class  TestAbstraction2 {  
13. public static void  main (String args []) {    
14.  Bike obj =  new  Honda ();  
15.  obj.run ();  
16.  obj.changeGear ();  
17. }  
18.}  
Pruébelo ahora
se crea la bicicleta
corriendo con seguridad ..
cambio de marcha

Regla: si hay un método abstracto en una clase, esa clase debe ser abstracta.
1. class  Bike12 {  
2.  ejecución vacía abstracta ();   
3. }  
Pruébelo ahora
error de tiempo de compilación
Regla: si está ampliando una clase abstracta que tiene un método abstracto, debe proporcionar la
implementación del método o hacer que esta clase sea abstracta.

Otro escenario real de clase abstracta


La clase abstracta también se puede utilizar para proporcionar alguna implementación de la interfaz . En
tal caso, es posible que el usuario final no se vea obligado a anular todos los métodos de la interfaz.

Nota: Si es un principiante en Java, primero aprenda la interfaz y omita este ejemplo.


1. interfaz  A {  
2. anular  un ();  
3. void  b ();  
4. vacío  c ();  
5. void  d ();  
6. }  
7.   
8. clase abstracta  B  implementa  A {   
9. public void  c () {System.out.println ( "Yo soy c" );}   
10.}  
11.  
12.la clase  M se  extiende a  B {  
13.public void  a () {System.out.println ( "Soy un" );}   
14.public void  b () {System.out.println ( "Soy b" );}   
15.public void  d () {System.out.println ( "Soy d" );}   
16.}  
17.  
18.class  Test5 {  
19.public static void  main (String args []) {    
20.A a = nuevo  M ();  
21.Automóvil club británico();  
22.ab ();  
23.C.A();  
24.anuncio();  
25.}}  
Pruébelo ahora
Salida: soy un
Yo soy b
Yo soy c
Yo soy d

Interfaz en Java
1. Interfaz

2. Ejemplo de interfaz

3. Herencia múltiple por interfaz

4. Por qué se admite la herencia múltiple en Interface mientras que no se admite en el caso de la clase.

5. Interfaz de marcador

6. Interfaz anidada

Una interfaz en Java es un modelo de una clase. Tiene constantes estáticas y métodos abstractos.

La interfaz en Java es un mecanismo para lograr la  abstracción . Solo puede haber métodos abstractos
en la interfaz de Java, no el cuerpo del método. Se utiliza para lograr la abstracción y
la herencia múltiple en Java .

En otras palabras, puede decir que las interfaces pueden tener métodos y variables abstractos. No puede
tener un cuerpo de método.

La interfaz Java también representa la relación IS-A .

No se puede instanciar al igual que la clase abstracta.

Desde Java 8, podemos tener métodos predeterminados y estáticos en una interfaz.

Desde Java 9, podemos tener métodos privados en una interfaz.

¿Por qué utilizar la interfaz Java?


Hay principalmente tres razones para utilizar la interfaz. Se dan a continuación.

o Se utiliza para lograr la abstracción.

o Por interfaz, podemos admitir la funcionalidad de herencia múltiple.

o Se puede utilizar para lograr un acoplamiento suelto.


¿Cómo declarar una interfaz?
An interface is declared by using the interface keyword. It provides total abstraction; means all the
methods in an interface are declared with the empty body, and all the fields are public, static and final by
default. A class that implements an interface must implement all the methods declared in the interface.

Syntax:
1. interface <interface_name>{  
2.       
3.     // declare constant fields  
4.     // declare methods that abstract   
5.     // by default.  
6. }  

Java 8 Interface Improvement


Since Java 8, interface can have default and static methods which is discussed later.

Internal addition by the compiler


The Java compiler adds public and abstract keywords before the interface method. Moreover, it adds
public, static and final keywords before data members.

In other words, Interface fields are public, static and final by default, and the methods are public and
abstract.
The relationship between classes and interfaces
As shown in the figure given below, a class extends another class, an interface extends another
interface, but a class implements an interface.

Java Interface Example


In this example, the Printable interface has only one method, and its implementation is provided in the
A6 class.

1. interface printable{  
2. void print();  
3. }  
4. class A6 implements printable{  
5. public void print(){System.out.println("Hello");}  
6.   
7. public static void main(String args[]){  
8. A6 obj = new A6();  
9. obj.print();  
10. }  
11.}  
Test it Now
Output:

Hello

Java Interface Example: Drawable


In this example, the Drawable interface has only one method. Its implementation is provided by
Rectangle and Circle classes. In a real scenario, an interface is defined by someone else, but its
implementation is provided by different implementation providers. Moreover, it is used by someone else.
The implementation part is hidden by the user who uses the interface.

File: TestInterface1.java

1. //Interface declaration: by first user  
2. interface Drawable{  
3. void draw();  
4. }  
5. //Implementation: by second user  
6. class Rectangle implements Drawable{  
7. public void draw(){System.out.println("drawing rectangle");}  
8. }  
9. class Circle implements Drawable{  
10.public void draw(){System.out.println("drawing circle");}  
11.}  
12.//Using interface: by third user  
13.class TestInterface1{  
14.public static void main(String args[]){  
15.Drawable d=new Circle();//In real scenario, object is provided by method e.g. getDrawable()  
16.d.draw();  
17.}}  
Test it Now

Output:

drawing circle

Java Interface Example: Bank


Let's see another example of java interface which provides the implementation of Bank interface.

File: TestInterface2.java

1. interfaz  Bank {  
2. float  rateOfInterest ();  
3. }  
4. clase  SBI  implementa  Bank {  
5. public float  rateOfInterest () { return 9 .15f;}    
6. }  
7. clase  PNB  implementa  Banco {  
8. public float  rateOfInterest () { return 9 .7f;}    
9. }  
10.class  TestInterface2 {  
11.public static void  main (String [] args) {    
12.Banco b = nuevo  SBI ();  
13.System.out.println ( "ROI:" + b.rateOfInterest ());  
14.}}  
Pruébelo ahora

Producción:

ROI: 9.15

Herencia múltiple en Java por interfaz


Si una clase implementa múltiples interfaces, o una interfaz extiende múltiples interfaces, se conoce
como herencia múltiple.

1. interfaz  imprimible {  
2.  impresión vacía ();  
3. }  
4. interfaz  Showable {  
5.  mostrar vacío ();  
6. }  
7. clase  A7  implementa  Printable, Showable {  
8. public void  print () {System.out.println ( "Hola" );}   
9. public void  show () {System.out.println ( "Bienvenido" );}   
10.  
11.public static void  main (String args []) {    
12.A7 obj =  nuevo  A7 ();  
13.obj.print ();  
14.obj.show ();  
15. }  
16.}  
Pruébelo ahora
Salida: Hola
Bienvenidos

P) La herencia múltiple no se admite a través de la clase en Java, pero es


posible mediante una interfaz, ¿por qué?
Como hemos explicado en el capítulo de herencia, la herencia múltiple no se admite en el caso de
la clase debido a la ambigüedad. Sin embargo, se admite en el caso de una interfaz porque no hay
ambigüedad. Es porque su implementación la proporciona la clase de implementación. Por ejemplo:

1. interfaz  imprimible {  
2.  impresión vacía ();  
3. }  
4. interfaz  Showable {  
5.  impresión vacía ();  
6. }  
7.   
8. clase  TestInterface3  implementa  Printable, Showable {  
9. public void  print () {System.out.println ( "Hola" );}   
10.public static void  main (String args []) {    
11.TestInterface3 obj =  new  TestInterface3 ();  
12.obj.print ();  
13. }  
14.}  
Pruébelo ahora

Producción:

Hola

Como puede ver en el ejemplo anterior, la interfaz Printable y Showable tienen los mismos métodos,
pero su implementación la proporciona la clase TestTnterface1, por lo que no hay ambigüedad.

Herencia de interfaz
Una clase implementa una interfaz, pero una interfaz extiende otra interfaz.

1. interfaz  imprimible {  
2.  impresión vacía ();  
3. }  
4. interfaz  Showable  extiende  Printable {  
5.  mostrar vacío ();  
6. }  
7. clase  TestInterface4  implementa  Showable {  
8. public void  print () {System.out.println ( "Hola" );}   
9. public void  show () {System.out.println ( "Bienvenido" );}   
10.  
11.public static void  main (String args []) {    
12.TestInterface4 obj =  new  TestInterface4 ();  
13.obj.print ();  
14.obj.show ();  
15. }  
16.}  
Pruébelo ahora

Producción:

Hola
Bienvenidos

Método predeterminado de Java 8 en la interfaz


Desde Java 8, podemos tener el cuerpo del método en la interfaz. Pero tenemos que convertirlo en el
método predeterminado. Veamos un ejemplo:

Archivo: TestInterfaceDefault.java

1. interfaz  Drawable {  
2.  dibujar vacío ();  
3. default void  msg () {System.out.println ( "método predeterminado" );}   
4. }  
5. class  Rectangle  implementa  Drawable {  
6. public void  draw () {System.out.println ( "rectángulo de dibujo" );}   
7. }  
8. class  TestInterfaceDefault {  
9. public static void  main (String args []) {    
10.Dibujable d = nuevo  Rectángulo ();  
11.d.draw ();  
12.d.msg ();  
13.}}  
Pruébelo ahora

Producción:

dibujo de rectángulo
método predeterminado
Método estático de Java 8 en la interfaz
Desde Java 8, podemos tener un método estático en la interfaz. Veamos un ejemplo:

Archivo: TestInterfaceStatic.java

1. interfaz  Drawable {  
2.  dibujar vacío ();  
3. static int  cube ( int  x) { return  x * x * x;}   
4. }  
5. class  Rectangle  implementa  Drawable {  
6. public void  draw () {System.out.println ( "rectángulo de dibujo" );}   
7. }  
8.   
9. class  TestInterfaceStatic {  
10.public static void  main (String args []) {    
11.Dibujable d = nuevo  Rectángulo ();  
12.d.draw ();  
13.System.out.println (Drawable.cube ( 3 ));  
14.}}  
Pruébelo ahora

Producción:

dibujo de rectángulo
27

P) ¿Qué es el marcador o la interfaz etiquetada?


Una interfaz que no tiene miembro se conoce como interfaz de marcador o etiquetada, por
ejemplo, Serializable , Cloneable, Remote, etc. Se utilizan para proporcionar información esencial a la
JVM para que la JVM pueda realizar alguna operación útil.

1. // ¿Cómo se escribe la interfaz serializable?  


2. interfaz pública  serializable {   
3. }  

Interfaz anidada en Java


Nota: Una interfaz puede tener otra interfaz que se conoce como interfaz anidada. Lo aprenderemos en
detalle en el capítulo de clases anidadas . Por ejemplo:

1. interfaz  imprimible {  
2.   impresión vacía ();  
3.  interfaz  MessagePrintable {  
4.     mensaje vacío ();  
5.  }  
6. }  
Más sobre la interfaz anidada

Diferencia entre clase abstracta e interfaz


Tanto la clase abstracta como la interfaz se utilizan para lograr la abstracción donde podemos declarar
los métodos abstractos. No se pueden crear instancias de la clase abstracta y la interfaz.

Pero hay muchas diferencias entre la clase abstracta y la interfaz que se detallan a continuación.

Clase abstracta Interfaz

1) La clase abstracta La interfaz solo puede tener métodos abstracto


puede tener métodos abstractos y no Java 8, también puede tener métodos predeter
abstractos . estáticos .

2) La clase abstracta no admite herencia La interfaz admite herencia múltiple .


múltiple .

3) La clase abstracta puede tener variables La interfaz solo tiene variables estáticas y fina


finales, no finales, estáticas y no estáticas .

4) La clase abstracta puede proporcionar la La interfaz no puede proporcionar la impleme


implementación de la interfaz . la clase abstracta .

5) La palabra clave abstracta se utiliza para La palabra clave interfaz se utiliza para declara
declarar la clase abstracta.

6) Una clase abstracta puede extender otra clase Una interfaz solo puede ampliar otra interfaz Ja
Java e implementar múltiples interfaces Java.

7) Una clase abstracta se puede ampliar Se puede implementar una interfaz utilizando la


utilizando la palabra clave "amplía". clave "implementos".

8) Una clase abstracta de Java puede tener Los miembros de una interfaz Java son públicos d
miembros de clase como privado, protegido, etc. predeterminada.

9) Ejemplo: Ejemplo:
forma de clase interfaz pública Drawable {
abstracta pública { dibujo vacío abstracto público void draw ();
(); }
}

Simplemente, la clase abstracta logra una abstracción parcial (0 a 100%) mientras que la interfaz logra
una abstracción total (100%).

Ejemplo de clase e interfaz abstractas en Java


Veamos un ejemplo simple en el que estamos usando tanto la interfaz como la clase abstracta.

1. // Creando interfaz que tiene 4 métodos  


2. interfaz  A {  
3. anular  un (); // por defecto, público y abstracto  
4. void  b ();  
5. vacío  c ();  
6. void  d ();  
7. }  
8.   
9. // Creando una clase abstracta que proporciona la implementación de un método de una interfaz  
10.clase abstracta  B  implementa  A {   
11.public void  c () {System.out.println ( "Soy C" );}   
12.}  
13.  
14.// Creando subclase de clase abstracta, ahora necesitamos proporcionar la implementación del resto de
los métodos  
15.la clase  M se  extiende a  B {  
16.public void  a () {System.out.println ( "Soy un" );}   
17.public void  b () {System.out.println ( "Soy b" );}   
18.public void  d () {System.out.println ( "Soy d" );}   
19.}  
20.  
21.// Creando una clase de prueba que llama a los métodos de una interfaz  
22.class  Test5 {  
23.public static void  main (String args []) {    
24.A a = nuevo  M ();  
25.Automóvil club británico();  
26.ab ();  
27.C.A();  
28.anuncio();  
29.}}  
Pruébelo ahora

Producción:
soy un
Yo soy b
Yo soy c
Yo soy d

Paquete Java
1. Paquete Java

2. Ejemplo de paquete

3. Accediendo al paquete

1. Por nombre de paquete de importación. *

2. Por importación packagename.classname

3. Por nombre completo

4. Subpaquete

5. Envío de archivo de clase a otro directorio

6. -conmutador de ruta de clase

7. 4 formas de cargar el archivo de clase o el archivo jar

8. Cómo poner dos clases públicas en un paquete

9. Importación estática

10. Clase de paquete

Un paquete java es un grupo de tipos similares de clases, interfaces y subpaquetes.

El paquete en Java se puede clasificar en dos formas, paquete integrado y paquete definido por el
usuario.

Hay muchos paquetes integrados como java, lang, awt, javax, swing, net, io, util, sql, etc.

Aquí, tendremos el aprendizaje detallado de cómo crear y usar paquetes definidos por el usuario.

Ventaja del paquete Java

1) El paquete Java se utiliza para categorizar las clases y las interfaces para que se puedan mantener
fácilmente.

2) El paquete Java proporciona protección de acceso.

3) El paquete Java elimina la colisión de nombres.


Ejemplo simple de paquete java
La palabra clave del paquete se utiliza para crear un paquete en java.

1. // guardar como Simple.java  


2. paquete  mypack;  
3. public class  Simple {   
4.  public static void  main (String args []) {    
5.     System.out.println ( "Bienvenido al paquete" );  
6.    }  
7. }  

Cómo compilar el paquete java

Si no está utilizando ningún IDE, debe seguir la sintaxis que se indica a continuación:

1. javac -d directorio nombrearchivojava  

Por ejemplo

1. javac -d. Simple.java  

El modificador -d especifica el destino donde colocar el archivo de clase generado. Puede usar cualquier
nombre de directorio como / home (en el caso de Linux), d: / abc (en el caso de Windows), etc. Si desea
mantener el paquete dentro del mismo directorio, puede usar. (punto).
Cómo ejecutar el programa de paquetes de Java

Debe usar un nombre completo, por ejemplo, mypack.Simple, etc. para ejecutar la clase.

Para compilar: javac -d. Simple.java

Para ejecutar: java mypack.Simple


Salida: Bienvenido al paquete

La -d es un modificador que le dice al compilador dónde colocar el archivo de clase, es decir, representa e
destino. La . representa la carpeta actual.

¿Cómo acceder al paquete desde otro paquete?


Hay tres formas de acceder al paquete desde fuera del paquete.

1. importar paquete. *;

2. import package.classname;

3. nombre completo.

1) Usando el nombre del paquete. *


Si usa package. *, Todas las clases e interfaces de este paquete serán accesibles, pero no los
subpaquetes.

La palabra clave de importación se utiliza para hacer que las clases y la interfaz de otro paquete sean
accesibles al paquete actual.

Ejemplo de paquete que importa el nombre del paquete. *

1. // guardar por A.java  


2. paquete de  paquete;  
3. clase pública  A {   
4.   public void  msg () {System.out.println ( "Hola" );}   
5. }  
1. // guardar por B.java  
2. paquete  mypack;  
3.  paquete de importación . *;  
4.   
5. clase  B {  
6.   public static void  main (String args []) {    
7.    A obj =  nuevo  A ();  
8.    obj.msg ();  
9.   }  
10.}  
Salida: Hola

2) Usando packagename.classname
Si importa package.classname, solo se podrá acceder a la clase declarada de este paquete.

Ejemplo de paquete por import package.classname

1. // guardar por A.java  


2.   
3. paquete de  paquete;  
4. clase pública  A {   
5.   public void  msg () {System.out.println ( "Hola" );}   
6. }  
1. // guardar por B.java  
2. paquete  mypack;  
3. import  pack.A;  
4.   
5. clase  B {  
6.   public static void  main (String args []) {    
7.    A obj =  nuevo  A ();  
8.    obj.msg ();  
9.   }  
10.}  
Salida: Hola

3) Usando un nombre completo


Si usa un nombre completo, solo se podrá acceder a la clase declarada de este paquete. Ahora no es
necesario importar. Pero debe usar un nombre completo cada vez que acceda a la clase o interfaz.

It is generally used when two packages have same class name e.g. java.util and java.sql packages
contain Date class.

Example of package by import fully qualified name

1. //save by A.java  
2. package pack;  
3. public class A{  
4.   public void msg(){System.out.println("Hello");}  
5. }  
1. //save by B.java  
2. package mypack;  
3. class B{  
4.   public static void main(String args[]){  
5.    pack.A obj = new pack.A();//using fully qualified name  
6.    obj.msg();  
7.   }  
8. }  
Output:Hello
Note: If you import a package, subpackages will not be imported.

If you import a package, all the classes and interface of that package will be imported excluding the
classes and interfaces of the subpackages. Hence, you need to import the subpackage as well.

Note: Sequence of the program must be package then import then class.

Subpackage in java
Package inside the package is called the subpackage. It should be created to categorize the package
further.

Let's take an example, Sun Microsystem has definded a package named java that contains many classes
like System, String, Reader, Writer, Socket etc. These classes represent a particular group e.g. Reader
and Writer classes are for Input/Output operation, Socket and ServerSocket classes are for networking
etc and so on. So, Sun has subcategorized the java package into subpackages such as lang, net, io etc.
and put the Input/Output related classes in io package, Server and ServerSocket classes in net packages
and so on.

El estándar para definir el paquete es domain.company.package, por ejemplo, com.javatpoint.bean u


org.sssit.dao.
Ejemplo de subpaquete
1. paquete  com.javatpoint.core;  
2. class  Simple {  
3.   public static void  main (String args []) {    
4.    System.out.println ( "Hola subpaquete" );  
5.   }  
6. }  
Para compilar: javac -d. Simple.java

Para ejecutar: java com.javatpoint.core.Simple


Salida: subpaquete Hola

¿Cómo enviar el archivo de clase a otro directorio o unidad?


Hay un escenario, quiero poner el archivo de clase del archivo fuente A.java en la carpeta de clases de c:
drive. Por ejemplo:

1. // guardar como Simple.java  


2. paquete  mypack;  
3. public class  Simple {   
4.  public static void  main (String args []) {    
5.     System.out.println ( "Bienvenido al paquete" );  
6.    }  
7. }  
Compilar:

e: \ fuentes> javac -dc: \ classes Simple.java

Correr:
Para ejecutar este programa desde el directorio e: \ source, debe establecer la ruta de clase del directorio
archivo de clase.
e: \ fuentes> establecer classpath = c: \ classes;.;

e: \ fuentes> java mypack.Simple


Otra forma de ejecutar este programa mediante el conmutador -classpath
de java:
El modificador -classpath se puede utilizar con javac y java tool.

Para ejecutar este programa desde el directorio e: \ source, puede usar el modificador -classpath de java
que indica dónde buscar el archivo de clase. Por ejemplo:

e: \ fuentes> java -classpath c: \ classes mypack.Simple

Salida: Bienvenido al paquete

Formas de cargar los archivos de clase o archivos jar


Hay dos formas de cargar los archivos de clase de forma temporal y permanente.

o Temporal

o Configurando la ruta de clase en el símbolo del sistema

o Por -classpath switch

o Permanente

o Estableciendo la ruta de clase en las variables de entorno

o Creando el archivo jar, que contiene todos los archivos de clase y copiando el archivo jar en
la carpeta jre / lib / ext.

Regla: solo puede haber una clase pública en un archivo fuente de Java y debe guardarse con el
nombre de la clase pública.
1. // guardar como C.java, de lo contrario, compilar error de tiempo  
2.   
3. clase  A {}  
4. clase  B {}  
5. clase pública  C {}   

¿Cómo poner dos clases públicas en un paquete?


Si desea poner dos clases públicas en un paquete, tenga dos archivos fuente java que contengan una clas
mantenga el mismo nombre del paquete. Por ejemplo:

1. // guardar como A.java  


2.   
3. paquete  javatpoint;  
4. clase pública  A {}   
1. // guardar como B.java  
2.   
3. paquete  javatpoint;  
4. clase pública  B {}   

Modificadores de acceso en Java


1. Modificador de acceso privado

2. Rol del constructor privado

3. Modificador de acceso predeterminado

4. Modificador de acceso protegido

5. Modificador de acceso público

6. Modificador de acceso con anulación de método

Hay dos tipos de modificadores en Java: modificadores de acceso y modificadores de no acceso .

Los modificadores de acceso en Java especifican la accesibilidad o el alcance de un campo, método,


constructor o clase. Podemos cambiar el nivel de acceso de campos, constructores, métodos y clases
aplicando el modificador de acceso en él.

Hay cuatro tipos de modificadores de acceso a Java:

1. Private: The access level of a private modifier is only within the class. It cannot be accessed from
outside the class.

2. Default: The access level of a default modifier is only within the package. It cannot be accessed
from outside the package. If you do not specify any access level, it will be the default.

3. Protected: The access level of a protected modifier is within the package and outside the
package through child class. If you do not make the child class, it cannot be accessed from
outside the package.

4. Public: The access level of a public modifier is everywhere. It can be accessed from within the
class, outside the class, within the package and outside the package.

There are many non-access modifiers, such as static, abstract, synchronized, native, volatile, transient,
etc. Here, we are going to learn the access modifiers only.

Understanding Java Access Modifiers


Let's understand the access modifiers in Java by a simple table.

Access Modifier within class within package outside package by subclass only outsid

Private Y N N N

Default Y Y N N
Protected Y Y Y N

Public Y Y Y Y

1) Private
The private access modifier is accessible only within the class.

Simple example of private access modifier

In this example, we have created two classes A and Simple. A class contains private data member and
private method. We are accessing these private members from outside the class, so there is a compile-
time error.

1. class A{  
2. privado int data=40;  
3. private void  msg () {System.out.println ( "Hola java" );}   
4. }  
5.   
6. public class  Simple {   
7.  public static void  main (String args []) {    
8.    A obj = nuevo  A ();  
9.    System.out.println (obj.data); // Error de tiempo de compilación  
10.   obj.msg (); // Error de tiempo de compilación  
11.   }  
12.}  
Rol del constructor privado

Si hace que cualquier constructor de clase sea privado, no puede crear la instancia de esa clase desde
fuera de la clase. Por ejemplo:

1. clase  A {  
2. private  A () {} // constructor privado  
3. void  msg () {System.out.println ( "Hola java" );}  
4. }  
5. public class  Simple {   
6.  public static void  main (String args []) {    
7.    A obj = nuevo  A (); // Error de tiempo de compilación  
8.  }  
9. }  
Nota: una clase no puede ser privada ni estar protegida, excepto una clase anidada.
2) Por defecto
Si no usa ningún modificador, se trata como predeterminado de forma predeterminada. El modificador
predeterminado es accesible solo dentro del paquete. No se puede acceder desde fuera del
paquete. Proporciona más accesibilidad que privada. Pero es más restrictivo que protegido y público.

Ejemplo de modificador de acceso predeterminado

En este ejemplo, hemos creado dos paquetes pack y mypack. Estamos accediendo a la clase A desde
fuera de su paquete, ya que la clase A no es pública, por lo que no se puede acceder desde fuera del
paquete.

1. // guardar por A.java  


2. paquete de  paquete;  
3. clase  A {  
4.   void  msg () {System.out.println ( "Hola" );}  
5. }  
1. // guardar por B.java  
2. paquete  mypack;  
3.  paquete de importación . *;  
4. clase  B {  
5.   public static void  main (String args []) {    
6.    A obj =  nuevo  A (); // Error de tiempo de compilación  
7.    obj.msg (); // Error de tiempo de compilación  
8.   }  
9. }  

En el ejemplo anterior, el alcance de la clase A y su método msg () es predeterminado, por lo que no se


puede acceder desde fuera del paquete.

3) Protegido
El modificador de acceso protegido es accesible dentro y fuera del paquete, pero solo a través de la
herencia.

El modificador de acceso protegido se puede aplicar en el miembro de datos, el método y el


constructor. No se puede aplicar en la clase.

Proporciona más accesibilidad que el modificador predeterminado.

Ejemplo de modificador de acceso protegido

En este ejemplo, hemos creado los dos paquetes pack y mypack. El paquete de clase A de paquete es
público, por lo que se puede acceder desde fuera del paquete. Pero el método msg de este paquete se
declara como protegido, por lo que se puede acceder desde fuera de la clase solo a través de la herencia.

1. // guardar por A.java  


2. paquete de  paquete;  
3. clase pública  A {   
4. protected void  msg () {System.out.println ( "Hola" );}   
5. }  
1. // guardar por B.java  
2. paquete  mypack;  
3.  paquete de importación . *;  
4.   
5. la clase  B se  extiende  A {  
6.   public static void  main (String args []) {    
7.    B obj =  nuevo  B ();  
8.    obj.msg ();  
9.   }  
10.}  
Salida: Hola

4) Público
El modificador de acceso público es accesible en todas partes. Tiene el alcance más amplio entre
todos los demás modificadores.

Ejemplo de modificador de acceso público

1. // guardar por A.java  


2.   
3. paquete de  paquete;  
4. clase pública  A {   
5. public void  msg () {System.out.println ( "Hola" );}   
6. }  
1. // guardar por B.java  
2.   
3. paquete  mypack;  
4.  paquete de importación . *;  
5.   
6. clase  B {  
7.   public static void  main (String args []) {    
8.    A obj =  nuevo  A ();  
9.    obj.msg ();  
10.  }  
11.}  
Salida: Hola
Modificadores de acceso de Java con anulación de métodos
Si está anulando cualquier método, el método anulado (es decir, declarado en subclase) no debe ser más
restrictivo.

1. clase  A {  
2. protected void  msg () {System.out.println ( "Hola java" );}   
3. }  
4.   
5. clase pública  Simple  extiende  A {   
6. void  msg () {System.out.println ( "Hola java" );} // CTError  
7.  public static void  main (String args []) {    
8.    Obj simple = nuevo  Simple ();  
9.    obj.msg ();  
10.   }  
11.}  

El modificador predeterminado es más restrictivo que protegido. Por eso, hay un error en tiempo de
compilación.

Encapsulación en Java
La encapsulación en Java es un proceso de empaquetar código y datos en una sola unidad , por
ejemplo, una cápsula que se mezcla con varios medicamentos.

Podemos crear una clase completamente encapsulada en Java haciendo que todos los miembros de
datos de la clase sean privados. Ahora podemos usar los métodos setter y getter para configurar y
obtener los datos en él.

La clase Java Bean es el ejemplo de una clase completamente encapsulada.

Ventaja de la encapsulación en Java


Al proporcionar solo un método setter o getter, puede hacer que la clase sea de solo lectura o de solo
escritura . En otras palabras, puede omitir los métodos getter o setter.

Le proporciona el control sobre los datos . Supongamos que desea establecer el valor de id que debe
ser superior a 100 solamente, puede escribir la lógica dentro del método setter. Puede escribir la lógica
para no almacenar los números negativos en los métodos de establecimiento.

Es una forma de lograr la ocultación de datos en Java porque otra clase no podrá acceder a los datos a
través de los miembros de datos privados.

La clase encapsular es fácil de probar . Por lo tanto, es mejor para las pruebas unitarias.
Los IDE estándar ofrecen la posibilidad de generar captadores y definidores. Por lo tanto, es fácil y
rápido crear una clase encapsulada en Java.

Ejemplo simple de encapsulación en Java


Veamos el ejemplo simple de encapsulación que tiene un solo campo con sus métodos setter y getter.

Archivo: Student.java

1. // Una clase Java que es una clase completamente encapsulada.  


2. // Tiene un miembro de datos privados y métodos getter y setter.  
3. paquete  com.javatpoint;  
4.  estudiante de clase pública {   
5. // miembro de datos privados  
6.  nombre de cadena privada ;  
7. // método getter para el nombre  
8. public  String getName () {  
9.  nombre de retorno ;  
10.}  
11.// método setter para el nombre  
12.public void  setName (nombre de cadena) {   
13.este .nombre = nombre  
14.}  
15.}  

Archivo: Test.java

1. // Una clase Java para probar la clase encapsulada.  


2. paquete  com.javatpoint;  
3.  prueba de clase {  
4. public static void  main (String [] args) {    
5. // creando instancia de la clase encapsulada  
6. Estudiante s = nuevo  Estudiante ();  
7. // establecer valor en el nombre del miembro  
8. s.setName ( "vijay" );  
9. // obteniendo el valor del nombre del miembro  
10.System.out.println (s.getName ());  
11.}  
12.}  
Compilar por: javac -d. Test.java
Ejecutado por: java com.javatpoint.Test

Producción:

vijay
Clase de solo lectura
1. // Una clase Java que solo tiene métodos getter.  
2.  estudiante de clase pública {   
3. // miembro de datos privados  
4.  colegio privado String = "AKG" ;  
5. //getter method for college  
6. public String getCollege(){  
7. return college;  
8. }  
9. }  

Now, you can't change the value of the college data member which is "AKG".

1. s.setCollege("KITE");//will render compile time error  
Write-Only class
1. //A Java class which has only setter methods.  
2. public class Student{  
3. //private data member  
4. private String college;  
5. //getter method for college  
6. public void setCollege(String college){  
7. this.college=college;  
8. }  
9. }  

Now, you can't get the value of the college, you can only change the value of college data member.

1. System.out.println(s.getCollege());//Compile Time Error, because there is no such method  
2. System.out.println(s.college);//Compile Time Error, because the college data member is private.   
3. //So, it can't be accessed from outside the class  
Another Example of Encapsulation in Java
Let's see another example of encapsulation that has only four fields with its setter and getter methods.

File: Account.java

1. //A Account class which is a fully encapsulated class.  
2. //It has a private data member and getter and setter methods.  
3. class Account {  
4. //private data members  
5. private long acc_no;  
6. private String name,email;  
7. private float amount;  
8. //public getter and setter methods  
9. public long getAcc_no() {  
10.    return acc_no;  
11.}  
12.public void  setAcc_no ( long  acc_no) {   
13.    this .acc_no = acc_no;  
14.}  
15.public  String getName () {  
16.     nombre de retorno ;  
17.}  
18.public void  setName (nombre de cadena) {   
19.    este .nombre = nombre;  
20.}  
21.public  String getEmail () {  
22.    devolver el  correo electrónico;  
23.}  
24.public void  setEmail (String email) {   
25.    este .email = correo electrónico;  
26.}  
27.public float  getAmount () {   
28.     monto de devolución ;  
29.}  
30.public void  setAmount (  cantidad flotante ) {   
31.    esta .cantidad = cantidad;  
32.}  
33.  
34.}  

Archivo: TestAccount.java

1. // Una clase Java para probar la clase encapsulada Account.  


2. público de clase  TestEncapsulation {   
3. public static void  main (String [] args) {    
4.     // creando instancia de clase de cuenta  
5.     Cuenta acc = nueva  cuenta ();  
6.     // establecer valores a través de métodos de establecimiento  
7.     acc.setAcc_no (7560504000L);  
8.     acc.setName ( "Sonoo Jaiswal" );  
9.     acc.setEmail ( "sonoojaiswal@javatpoint.com" );  
10.    acc.setAmount (500000f);  
11.    // obtener valores a través de métodos getter  
12.    System.out.println (acc.getAcc_no () + "" + acc.getName () + "" + acc.getEmail () + "" +
acc.getAmount ());  
13.}  
14.}  
Pruébelo ahora

Producción:

7560504000 Sonoo Jaiswal sonoojaiswal@javatpoint.com 500000.0

Matrices de Java
Normalmente, una matriz es una colección de tipos similares de elementos que tienen una ubicación de
memoria contigua.

La matriz de Java es un objeto que contiene elementos de un tipo de datos similar. Además, los
elementos de una matriz se almacenan en una ubicación de memoria contigua. Es una estructura de
datos donde almacenamos elementos similares. Solo podemos almacenar un conjunto fijo de elementos
en una matriz de Java.

La matriz en Java está basada en índices, el primer elemento de la matriz se almacena en el índice 0, el
segundo elemento se almacena en el primer índice y así sucesivamente.

A diferencia de C / C ++, podemos obtener la longitud de la matriz utilizando el miembro de longitud. En


C / C ++, necesitamos usar el operador sizeof.

En Java, la matriz es un objeto de una clase generada dinámicamente. La matriz Java hereda la clase
Object e implementa las interfaces Serializable y Cloneable. Podemos almacenar valores u objetos
primitivos en una matriz en Java. Al igual que C / C ++, también podemos crear matrices de una o
varias dimensiones en Java.

Además, Java proporciona la función de matrices anónimas que no está disponible en C / C ++.

Ventajas
o Optimización de código: optimiza el código, podemos recuperar u ordenar los datos de manera
eficiente.

o Acceso aleatorio: podemos obtener cualquier dato ubicado en una posición de índice.

Desventajas
o Límite de tamaño: podemos almacenar solo el tamaño fijo de los elementos en la matriz. No
aumenta su tamaño en tiempo de ejecución. Para resolver este problema, se utiliza un marco de
recopilación en Java que crece automáticamente.

Tipos de matriz en java


Hay dos tipos de matrices.
o Matriz unidimensional

o Matriz multidimensional

Matriz unidimensional en Java


Sintaxis para declarar una matriz en Java

1. dataType [] arr; (o)  
2. dataType [] arr; (o)  
3. dataType arr [];  

Creación de instancias de una matriz en Java

1. arrayRefVar = nuevo  tipo de datos [tamaño];  


Ejemplo de matriz de Java
Veamos el ejemplo simple de una matriz java, donde vamos a declarar, instanciar, inicializar y atravesar
una matriz.

1. // Programa Java para ilustrar cómo declarar, instanciar, inicializar  


2. // y recorre la matriz de Java.  
3. clase  Testarray {  
4. public static void main(String args[]){  
5. int a[]=new int[5];//declaration and instantiation  
6. a[0]=10;//initialization  
7. a[1]=20;  
8. a[2]=70;  
9. a[3]=40;  
10.a[4]=50;  
11.//traversing array  
12.for(int i=0;i<a.length;i++)//length is the property of array  
13.System.out.println(a[i]);  
14.}}  
Test it Now

Output:

10
20
70
40
50

Declaration, Instantiation and Initialization of Java Array


We can declare, instantiate and initialize the java array together by:

1. int a[]={33,3,4,5};//declaration, instantiation and initialization  

Let's see the simple example to print this array.

1. //Java Program to illustrate the use of declaration, instantiation   
2. //and initialization of Java array in a single line  
3. class Testarray1{  
4. public static void main(String args[]){  
5. int a[]={33,3,4,5};//declaration, instantiation and initialization  
6. //printing array  
7. for(int i=0;i<a.length;i++)//length is the property of array  
8. System.out.println(a[i]);  
9. }}  
Test it Now

Output:

33
3
4
5

For-each Loop for Java Array


We can also print the Java array using for-each loop. The Java for-each loop prints the array elements
one by one. It holds an array element in a variable, then executes the body of the loop.

The syntax of the for-each loop is given below:

1. for(data_type variable:array){  
2. //body of the loop  
3. }  

Let us see the example of print the elements of Java array using the for-each loop.

1. //Java Program to print the array elements using for-each loop  
2. class Testarray1{  
3. public static void main(String args[]){  
4. int arr[]={33,3,4,5};  
5. //printing array using for-each loop  
6. for(int i:arr)  
7. System.out.println (i);  
8. }}  

Producción:

33
3
4
5

Pasar matriz a un método en Java


Podemos pasar la matriz java al método para poder reutilizar la misma lógica en cualquier matriz.

Veamos el ejemplo simple para obtener el número mínimo de una matriz usando un método.

1. // Programa Java para demostrar la forma de pasar una matriz  


2. // al método.  
3. class  Testarray2 {  
4. // creando un método que recibe una matriz como parámetro  
5. static void  min ( int  arr []) {   
6. int  min = arr [ 0 ];  
7. para ( int  i = 1 ; i <longitud de arr.; i ++)  
8.  si (min> arr [i])  
9.   min = arr [i];  
10.  
11.System.out.println (min);  
12.}  
13.  
14.public static void  main (String args []) {    
15.int  a [] = { 33 , 3 , 4 , 5 }; // declarando e inicializando una matriz  
16.min (a); // pasando la matriz al método  
17.}}  
Pruébelo ahora

Producción:

Matriz anónima en Java


Java admite la función de una matriz anónima, por lo que no es necesario declarar la matriz mientras
pasa una matriz al método.

1. // Programa Java para demostrar la forma de pasar una matriz anónima  


2. // al método.  
3. public class  TestAnonymousArray {   
4. // creando un método que recibe una matriz como parámetro  
5. static void  printArray ( int  arr []) {   
6. para ( int  i = 0 ; i <longitud de arr.; i ++)  
7. System.out.println (arr [i]);  
8. }  
9.   
10.público estático  void  main (String args []) {  
11.printArray ( nuevo int [] { 10 , 22 , 44 , 66 }); // pasando una matriz anónima al método  
12.}}  
Pruébelo ahora

Producción:

10
22
44
66

Devolución de matriz del método


También podemos devolver una matriz del método en Java.

1. // Programa Java para devolver una matriz del método  


2. class  TestReturnArray {  
3. // método de creación que devuelve una matriz  
4. static int [] get () {   
5. return new int [] { 10 , 30 , 50 , 90 , 60 };    
6. }  
7.   
8. public static void  main (String args []) {    
9. // método de llamada que devuelve una matriz  
10.int  arr [] = obtener ();  
11.// imprimiendo los valores de una matriz  
12.para ( int  i = 0 ; i <longitud de arr.; i ++)  
13.System.out.println (arr [i]);  
14.}}  
Pruébelo ahora

Producción:

10
30
50
90
60

ArrayIndexOutOfBoundsException
La máquina virtual Java (JVM) arroja una ArrayIndexOutOfBoundsException si la longitud de la matriz es
negativa, igual al tamaño de la matriz o mayor que el tamaño de la matriz mientras atraviesa la matriz.

1. // Programa Java para demostrar el caso de   


2. // ArrayIndexOutOfBoundsException en una matriz Java.  
3. public class  TestArrayException {   
4. public static void  main (String args []) {    
5. int  arr [] = { 50 , 60 , 70 , 80 };  
6. para ( int  i = 0 ; i <= arr.length; i ++) {  
7. System.out.println (arr [i]);  
8. }  
9. }}  
Pruébelo ahora

Producción:

Excepción en el hilo "principal" java.lang.ArrayIndexOutOfBoundsException: 4


en TestArrayException.main (TestArrayException.java:5)
50
60
70
80

Matriz multidimensional en Java


En tal caso, los datos se almacenan en un índice basado en filas y columnas (también conocido como
forma de matriz).

Sintaxis para declarar una matriz multidimensional en Java

1. dataType [] [] arrayRefVar; (o)  
2. dataType [] [] arrayRefVar; (o)  
3. dataType arrayRefVar [] []; (o)  
4. dataType [] arrayRefVar [];   

Ejemplo para crear una instancia de matriz multidimensional en Java

1. int [] [] arr = new int [ 3 ] [ 3 ]; // 3 filas y 3 columnas   

Ejemplo para inicializar una matriz multidimensional en Java

1. arr[0][0]=1;  
2. arr[0][1]=2;  
3. arr[0][2]=3;  
4. arr[1][0]=4;  
5. arr[1][1]=5;  
6. arr[1][2]=6;  
7. arr[2][0]=7;  
8. arr[2][1]=8;  
9. arr[2][2]=9;  
Example of Multidimensional Java Array
Let's see the simple example to declare, instantiate, initialize and print the 2Dimensional array.
1. //Java Program to illustrate the use of multidimensional array  
2. class Testarray3{  
3. public static void main(String args[]){  
4. //declaring and initializing 2D array  
5. int arr[][]={{1,2,3},{2,4,5},{4,4,5}};  
6. //printing 2D array  
7. for(int i=0;i<3;i++){  
8.  for(int j=0;j<3;j++){  
9.    System.out.print(arr[i][j]+" ");  
10. }  
11. System.out.println();  
12.}  
13.}}  
Test it Now

Output:

1 2 3
2 4 5
4 4 5

Jagged Array in Java


If we are creating odd number of columns in a 2D array, it is known as a jagged array. In other words, it
is an array of arrays with different number of columns.

1. //Java Program to illustrate the jagged array  
2. class TestJaggedArray{  
3.     public static void main(String[] args){  
4.         //declaring a 2D array with odd columns  
5.         int arr[][] = new int[3][];  
6.         arr[0] = new int[3];  
7.         arr[1] = new int[4];  
8.         arr[2] = new int[2];  
9.         //initializing a jagged array  
10.        int count = 0;  
11.        for (int i=0; i<arr.length; i++)  
12.            for(int j=0; j<arr[i].length; j++)  
13.                arr[i][j] = count++;  
14.   
15.        //printing the data of a jagged array   
16.        for (int i=0; i<arr.length; i++){  
17.            for (int j=0; j<arr[i].length; j++){  
18.                System.out.print(arr[i][j]+" ");  
19.            }  
20.            System.out.println();//new line  
21.        }  
22.    }  
23.}  
Test it Now

Output:

0 1 2
3 4 5 6
7 8

What is the class name of Java array?


In Java, an array is an object. For array object, a proxy class is created whose name can be obtained by
getClass().getName() method on the object.

1. //Java Program to get the class name of array in Java  
2. class Testarray4{  
3. public static void main(String args[]){  
4. //declaration and initialization of array  
5. int arr[]={4,4,5};  
6. //getting the class name of Java array  
7. Class c=arr.getClass();  
8. String name=c.getName();  
9. //printing the class name of Java array   
10.System.out.println(name);  
11.  
12.}}  
Test it Now

Output:

Copying a Java Array


We can copy an array to another by the arraycopy() method of System class.

Syntax of arraycopy method

1. public static void arraycopy(  
2. Object src, int srcPos,Object dest, int destPos, int length  
3. )  
Example of Copying an Array in Java
1. //Java Program to copy a source array into a destination array in Java  
2. class TestArrayCopyDemo {  
3.     public static void main(String[] args) {  
4.         //declaring a source array  
5.         char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e',  
6.                 'i', 'n', 'a', 't', 'e', 'd' };  
7.         //declaring a destination array  
8.         char[] copyTo = new char[7];  
9.         //copying array using System.arraycopy() method  
10.        System.arraycopy(copyFrom, 2, copyTo, 0, 7);  
11.        //printing the destination array  
12.        System.out.println(String.valueOf(copyTo));  
13.    }  
14.}  
Test it Now

Output:

caffein

Cloning an Array in Java


Since, Java array implements the Cloneable interface, we can create the clone of the Java array. If we
create the clone of a single-dimensional array, it creates the deep copy of the Java array. It means, it
will copy the actual value. But, if we create the clone of a multidimensional array, it creates the shallow
copy of the Java array which means it copies the references.

1. //Java Program to clone the array  
2. class Testarray1{  
3. public static void main(String args[]){  
4. int arr[]={33,3,4,5};  
5. System.out.println("Printing original array:");  
6. for(int i:arr)  
7. System.out.println(i);  
8.   
9. System.out.println("Printing clone of the array:");  
10.int carr[]=arr.clone();  
11.for(int i:carr)  
12.System.out.println(i);  
13.  
14.System.out.println("Are both equal?");  
15.System.out.println(arr==carr);  
16.  
17.}}  
Output:

Printing original array:


33
3
4
5
Printing clone of the array:
33
3
4
5
Are both equal?
false

Addition of 2 Matrices in Java


Let's see a simple example that adds two matrices.

1. //Java Program to demonstrate the addition of two matrices in Java  
2. class Testarray5{  
3. public static void main(String args[]){  
4. //creating two matrices  
5. int a[][]={{1,3,4},{3,4,5}};  
6. int b[][]={{1,3,4},{3,4,5}};  
7.   
8. //creating another matrix to store the sum of two matrices  
9. int c[][]=new int[2][3];  
10.  
11.//adding and printing addition of 2 matrices  
12.for(int i=0;i<2;i++){  
13.for(int j=0;j<3;j++){  
14.c[i][j]=a[i][j]+b[i][j];  
15.System.out.print(c[i][j]+" ");  
16.}  
17.System.out.println();//new line  
18.}  
19.  
20.}}  
Test it Now

Output:

2 6 8
6 8 10

Multiplication of 2 Matrices in Java


In the case of matrix multiplication, a one-row element of the first matrix is multiplied by all the columns
of the second matrix which can be understood by the image given below.
Let's see a simple example to multiply two matrices of 3 rows and 3 columns.

1. //Java Program to multiply two matrices  
2. public class MatrixMultiplicationExample{  
3. public static void main(String args[]){  
4. //creating two matrices    
5. int a[][]={{1,1,1},{2,2,2},{3,3,3}};    
6. int b[][]={{1,1,1},{2,2,2},{3,3,3}};    
7.     
8. //creating another matrix to store the multiplication of two matrices    
9. int c[][]=new int[3][3];  //3 rows and 3 columns  
10.    
11.//multiplying and printing multiplication of 2 matrices    
12.for(int i=0;i<3;i++){    
13.for(int j=0;j<3;j++){    
14.c[i][j]=0;      
15.for(int k=0;k<3;k++)      
16.{      
17.c[i][j]+=a[i][k]*b[k][j];      
18.}//end of k loop  
19.System.out.print(c[i][j]+" ");  //printing matrix element  
20.}//end of j loop  
21.System.out.println();//new line    
22.}    
23.}}  
Test it Now

Output:
6 6 6
12 12 12
18 18 18

Related Topics
1) Java Program to copy all elements of one array into another array

2) Java Program to find the frequency of each element in the array

3) Java Program to left rotate the elements of an array

4) Java Program to print the duplicate elements of an array

5) Java Program to print the elements of an array

6) Java Program to print the elements of an array in reverse order

7) Java Program to print the elements of an array present on even position

8) Java Program to print the elements of an array present on odd position

9) Java Program to print the largest element in an array

10) Java Program to print the smallest element in an array

11) Java Program to print the number of elements present in an array

12) Java Program to print the sum of all the items of the array

13) Java Program to right rotate the elements of an array

14) Java Program to sort the elements of an array in ascending order

15) Java Program to sort the elements of an array in descending order

16) Find 3rd Largest Number in an Array

17) Find 2nd Largest Number in an Array

18) Find Largest Number in an Array

19) Find 2nd Smallest Number in an Array

20) Find Smallest Number in an Array

21) Remove Duplicate Element in an Array

22) Add Two Matrices

23) Multiply Two Matrices

24) Print Odd and Even Number from an Array


25) Transpose matrix

26) Java Program to subtract the two matrices

27) Java Program to determine whether a given matrix is an identity matrix

28) Java Program to determine whether a given matrix is a sparse matrix

29) Java Program to determine whether two matrices are equal

30) Java Program to display the lower triangular matrix

31) Java Program to display the upper triangular matrix

32) Java Program to find the frequency of odd & even numbers in the given matrix

33) Java Program to find the product of two matrices

34) Java Program to find the sum of each row and each column of a matrix

35) Java Program to find the transpose of a given matrix

Clase de objeto en Java


La clase Object es la clase padre de todas las clases en Java de forma predeterminada. En otras
palabras, es la clase más alta de java.

La clase Object es beneficiosa si desea hacer referencia a cualquier objeto cuyo tipo no conoce. Tenga en
cuenta que la variable de referencia de la clase principal puede hacer referencia al objeto de la clase
secundaria, conocido como upcasting.

Tomemos un ejemplo, hay un método getObject () que devuelve un objeto pero puede ser de cualquier
tipo como Empleado, Estudiante, etc., podemos usar la referencia de clase de Objeto para referir ese
objeto. Por ejemplo:

1. Objeto obj = getObject (); // no sabemos qué objeto será devuelto por este método  

La clase Object proporciona algunos comportamientos comunes a todos los objetos, como el objeto se
puede comparar, el objeto se puede clonar, el objeto se puede notificar, etc.
 

Métodos de clase de objeto


La clase Object proporciona muchos métodos. Son los siguientes:

Método Descripción

clase final pública getClass () devuelve el objeto de clase Class de este objeto
Class también se puede utilizar para obtener los
de esta clase.

public int hashCode () devuelve el número de código hash para este o

public boolean es igual a (Object obj) compara el objeto dado con este objeto.

objeto protegido clone () lanza crea y devuelve la copia exacta (clon) de este o
CloneNotSupportedException

cadena pública toString () devuelve la representación de cadena de este o

notificación de nulidad final pública () despierta un solo hilo, esperando en el monitor


objeto.

public final void notificar a todos () despierta todos los hilos, esperando en el monit
objeto.

La espera vacía final pública (tiempo de espera hace que el hilo actual espere los milisegundos
prolongado) arroja una excepción especificados, hasta que otro hilo notifique (invo
InterruptedException método notificar () o notificar a todos ()).

La espera vacía final pública (tiempo de espera hace que el hilo actual espere los milisegundos
prolongado, nanos int) lanza InterruptedException nanosegundos especificados, hasta que otro hilo
(invoca el método notificar () o notificar a todos

public final void wait () lanza InterruptedException hace que el hilo actual espere, hasta que otro h
(invoca el método notificar () o notificar a todos

vacío protegido finalizar () arroja Lanzable es invocado por el recolector de basura antes de
objeto sea recolectado.

Tendremos el aprendizaje detallado de estos métodos en los próximos capítulos.

Clonación de objetos en Java

La clonación de objetos es una forma de crear una copia exacta


de un objeto. El método clone () de la clase Object se usa para clonar un objeto.

La interfaz java.lang.Cloneable debe ser implementada por la clase cuyo objeto clon queremos
crear. Si no implementamos la interfaz Cloneable, el método clone ()
genera CloneNotSupportedException .

El método clone () se define en la clase Object. La sintaxis del método clone () es la siguiente:

1.  objeto protegido clone ()  lanza  CloneNotSupportedException  
¿Por qué utilizar el método clone ()?

El método clone () guarda la tarea de procesamiento adicional para crear la copia exacta de un
objeto. Si lo realizamos usando la nueva palabra clave, llevará mucho tiempo de procesamiento
realizarlo, por eso usamos la clonación de objetos.

Ventaja de la clonación de objetos

Aunque Object.clone () tiene algunos problemas de diseño, sigue siendo una forma popular y fácil de
copiar objetos. A continuación se muestra una lista de las ventajas de usar el método clone ():
o No es necesario escribir códigos largos y repetitivos. Simplemente use una clase abstracta con un
método clone () de 4 o 5 líneas de largo.

o Es la forma más fácil y eficiente de copiar objetos, especialmente si lo estamos aplicando a un


proyecto ya desarrollado o antiguo. Simplemente defina una clase principal, implemente Cloneable
en ella, proporcione la definición del método clone () y la tarea estará lista.
o Clone () es la forma más rápida de copiar una matriz.

Desventaja de la clonación de objetos

A continuación se muestra una lista de algunas desventajas del método clone ():

o Para usar el método Object.clone (), tenemos que cambiar muchas sintaxis de nuestro código,
como implementar una interfaz Cloneable, definir el método clone () y manejar
CloneNotSupportedException, y finalmente, llamar a Object.clone (), etc.

o Tenemos que implementar una interfaz clonable mientras no tenga ningún método. Solo tenemos
que usarlo para decirle a la JVM que podemos realizar clone () en nuestro objeto.

o Object.clone () está protegido, por lo que tenemos que proporcionar nuestro propio clone () e
indirectamente llamar a Object.clone () desde él.

o Object.clone () no invoca ningún constructor, por lo que no tenemos ningún control sobre la
construcción del objeto.

o Si desea escribir un método clon en una clase secundaria, todas sus superclases deben definir el
método clone () en ellas o heredarlo de otra clase principal. De lo contrario, la cadena super.clone
() fallará.
o Object.clone () solo admite copias superficiales, pero necesitaremos anularlo si necesitamos una
clonación profunda.

Ejemplo de método clone () (clonación de objetos)


Veamos el ejemplo simple de clonación de objetos.

1. class  Student18  implementa  Cloneable {  
2. int  rollno;  
3. Nombre de cadena;  
4.   
5. Student18 ( int  rollno, String name) {  
6. este .rollno = rollno;  
7. este .nombre = nombre;  
8. }  
9.   
10.public  Object clone () lanza  CloneNotSupportedException {  
11.return super .clone ();   
12.}  
13.  
14.public static void  main (String args []) {    
15.prueba {  
16.Student18 s1 = nuevo  Student18 ( 101 , "amit" );  
17.  
18.Student18 s2 = (Student18) s1.clone ();  
19.  
20.System.out.println (s1.rollno + "" + s1.name);  
21.System.out.println (s2.rollno + "" + s2.name);  
22.  
23.} captura (CloneNotSupportedException c) {}  
24.  
25.}  
26.}  
Pruébelo ahora
Salida: 101 amit
101 amit
descargar el ejemplo de clonación de objetos

Como puede ver en el ejemplo anterior, ambas variables de referencia tienen el mismo valor. Por lo
tanto, clone () copia los valores de un objeto a otro. Entonces no necesitamos escribir código explícito
para copiar el valor de un objeto a otro.

Si creamos otro objeto por nueva palabra clave y le asignamos los valores de otro objeto, requerirá
mucho procesamiento en este objeto. Entonces, para guardar la tarea de procesamiento adicional,
usamos el método clone ().

Clase de Java Math


La clase Java Math proporciona varios métodos para trabajar en cálculos matemáticos como min (), max
(), avg (), sin (), cos (), tan (), round (), ceil (), floor (), abs ( ) etc.

A diferencia de algunos de los métodos numéricos de la clase StrictMath, todas las implementaciones de
la función equivalente de la clase Math no se pueden definir para devolver los mismos resultados bit por
bit. Esta relajación permite una implementación con mejor rendimiento donde no se requiere una
reproducibilidad estricta.

Si el tamaño es int o long y los resultados sobrepasan el rango de valor, los métodos addExact (),
subtractExact (), multiplyExact () y toIntExact () arrojan una ArithmeticException.

Para otras operaciones aritméticas como incremento, decremento, división, valor absoluto y
desbordamiento de negación, se produce solo con un valor mínimo o máximo específico. Debe
comprobarse con el valor máximo y mínimo según corresponda.

Ejemplo 1
1. clase pública  JavaMathExample1     
2. {    
3.     public static void  main (String [] args)       
4.     {    
5.         doble  x =  28 ;    
6.         doble  y =  4 ;    
7.           
8.         // devuelve el máximo de dos números  
9.         System.out.println ( "El número máximo de xey es:"  + Math.max (x, y));   
10.          
11.        // devuelve la raíz cuadrada de y   
12.        System.out.println ( "La raíz cuadrada de y es:"  + Math.sqrt (y));   
13.          
14.        // devuelve 28 potencia de 4, es decir, 28 * 28 * 28 * 28    
15.        System.out.println ( "La potencia de xey es:"  + Math.pow (x, y));      
16.  
17.        // devuelve el logaritmo del valor dado       
18.        System.out.println ( "El logaritmo de x es:"  + Math.log (x));   
19.        System.out.println ( "El logaritmo de y es:"  + Math.log (y));  
20.          
21.        // devuelve el logaritmo del valor dado cuando la base es 10      
22.        System.out.println ( "log10 de x es:"  + Math.log10 (x));   
23.        System.out.println ( "log10 de y es:"  + Math.log10 (y));    
24.          
25.        // devuelve el logaritmo de x + 1  
26.        System.out.println ( "log1p de x es:"  + Math.log1p (x));    
27.  
28.        // devuelve una potencia de 2    
29.        System.out.println ( "exp de un es:"  + Math.exp (x));    
30.          
31.        // return (una potencia de 2) -1  
32.        System.out.println ( "expm1 de un es:"  + Math.expm1 (x));  
33.    }    
34.}    
Pruébelo ahora

Producción:

El número máximo de xey es: 28,0


La raíz cuadrada de y es: 2.0
La potencia de xey es: 614656.0
El logaritmo de x es: 3.332204510175204
El logaritmo de y es: 1.3862943611198906
log10 de x es: 1,4471580313422192
log10 de y es: 0.6020599913279624
log1p de x es: 3.367295829986474
exp de a es: 1.446257064291475E12
expm1 de a es: 1.446257064290475E12
Ejemplo 2
1. clase pública  JavaMathExample2     
2. {    
3.     public static void  main (String [] args)       
4.     {    
5.         doble  a =  30 ;    
6.           
7.         // convertir valores a radianes    
8.         doble  b = Math.toRadians (a);   
9.           
10.        // devuelve el seno trigonométrico de un      
11.        System.out.println ( "El valor del seno de a es:"  + Math.sin (a));    
12.          
13.        // devuelve el valor del coseno trigonométrico de un  
14.        System.out.println ( "El valor de coseno de a es:"  + Math.cos (a));  
15.          
16.        // devuelve el valor de la tangente trigonométrica de un  
17.        System.out.println ( "El valor de tangente de a es:"  + Math.tan (a));  
18.          
19.        // devuelve el arco seno trigonométrico de un      
20.        System.out.println ( "El valor sinusoidal de a es:"  + Math.asin (a));    
21.          
22.        // devuelve el valor del arco coseno trigonométrico de un  
23.        System.out.println ( "El valor de coseno de a es:"  + Math.acos (a));  
24.          
25.        // devuelve el valor de arco tangente trigonométrico de un  
26.        System.out.println ( "El valor de tangente de a es:"  + Math.atan (a));  
27.  
28.        // devuelve el seno hiperbólico de un      
29.        System.out.println ( "El valor sinusoidal de a es:"  + Math.sinh (a));    
30.          
31.        // devuelve el valor del coseno hiperbólico de un  
32.        System.out.println ( "El valor de coseno de a es:"  + Math.cosh (a));  
33.          
34.        // devuelve el valor de la tangente hiperbólica de un  
35.        System.out.println ( "El valor de tangente de a es:"  + Math.tanh (a));  
36.    }    
37.}    
Pruébelo ahora

Producción:
El valor de seno de a es: -0,9880316240928618
El valor de coseno de a es: 0,15425144988758405
El valor de la tangente de a es: -6,405331196646276
El valor sinusoidal de a es: NaN
El valor de coseno de a es: NaN
El valor de la tangente a es: 1,5374753309166493
El valor de seno de a es: 5.343237290762231E12
El valor de coseno de a es: 5.343237290762231E12
El valor de la tangente de a es: 1.0

Métodos matemáticos de Java


La clase java.lang.Math contiene varios métodos para realizar operaciones numéricas básicas como el
logaritmo, la raíz cúbica y las funciones trigonométricas, etc. Los diversos métodos matemáticos de Java
son los siguientes:

Métodos matemáticos básicos

Método Descripción

Math.abs () Devolverá el valor absoluto del valor dado.

Math.max () Devuelve el mayor de dos valores.

Math.min () Se utiliza para devolver el más pequeño de dos valores.

Math.round () Se utiliza para redondear los números decimales al valor más cercano.

Math.sqrt () Se usa para devolver la raíz cuadrada de un número.

Math.cbrt () Se utiliza para devolver la raíz cúbica de un número.

Math.pow () Devuelve el valor del primer argumento elevado a la potencia del segundo ar

Math.signum () Se utiliza para encontrar el signo de un valor dado.

Math.ceil () Se utiliza para encontrar el valor entero más pequeño que sea mayor o igual
entero matemático.

Math.copySign () Se utiliza para encontrar el valor absoluto del primer argumento junto con el
especificado en el segundo argumento.

Math.nextAfter () Se utiliza para devolver el número de coma flotante adyacente al primer argu
dirección del segundo argumento.
Math.nextUp () Devuelve el valor de punto flotante adyacente ad en la dirección del infinito p

Math.nextDown () Devuelve el valor de punto flotante adyacente ad en la dirección del infinito n

Math.floor () Se utiliza para encontrar el valor entero más grande que es menor o igual qu
y es igual al entero matemático de un valor doble.

Math.floorDiv () Se utiliza para encontrar el valor entero más grande que es menor o igual qu
algebraico.

Math.random () Devuelve un valor doble con signo positivo, mayor o igual a 0.0 y menor a 1.

Math.rint () Devuelve el valor doble más cercano al argumento dado e igual a un entero m

Math.hypot () Devuelve sqrt (x 2  + y 2 ) sin desbordamiento o subdesbordamiento interme

Math.ulp () Devuelve el tamaño de un ulp del argumento.

Math.getExponent () Se utiliza para devolver el exponente insesgado utilizado en la representación

Math.IEEEremainder () Se utiliza para calcular la operación restante en dos argumentos según lo pre
estándar IEEE 754 y devuelve el valor.

Math.addExact () Se usa para devolver la suma de sus argumentos, lanzando una excepción si
desborda un int o long.

Math.subtractExact () Devuelve la diferencia de los argumentos, lanzando una excepción si el resul


un int.

Math.multiplyExact () Se usa para devolver el producto de los argumentos, lanzando una excepción
desborda un int o long.

Math.incrementExact Devuelve el argumento incrementado en uno, lanzando una excepción si el re


() desborda un int.

Math.decrementExact Se usa para devolver el argumento decrementado en uno, lanzando una exce
() resultado desborda un int o long.

Math.negateExact () Se usa para devolver la negación del argumento, lanzando una excepción si
desborda un int o long.

Math.toIntExact () Devuelve el valor del argumento largo, lanzando una excepción si el valor de

Métodos matemáticos logarítmicos

Método Descripción

Math.log () Devuelve el logaritmo natural de un valor doble.

Math.log10 () Se utiliza para devolver el logaritmo en base 10 de un valor doble.

Math.log1p () Devuelve el logaritmo natural de la suma del argumento y 1.

Math.exp () Devuelve E elevado a la potencia de un valor doble, donde E es el número de Euler y


aproximadamente igual a 2,71828.

Math.expm1 Se utiliza para calcular la potencia de E y restarle uno.


()

Métodos matemáticos trigonométricos

Método Descripción

Math.sin () Se utiliza para devolver el valor de seno trigonométrico de un valor doble dado.

Math.cos () Se utiliza para devolver el valor trigonométrico del coseno de un valor doble dado.

Math.tan () Se utiliza para devolver el valor de la tangente trigonométrica de un valor doble dado

Math.asin () Se utiliza para devolver el valor trigonométrico del seno del arco de un valor doble da

Math.acos () Se utiliza para devolver el valor trigonométrico del arco coseno de un valor doble dad

Math.atan () Se utiliza para devolver el valor trigonométrico del arco tangente de un valor doble d

Métodos matemáticos hiperbólicos


Método Descripción

Math.sinh () Se utiliza para devolver el valor trigonométrico del coseno hiperbólico de un valor dob

Math.cosh () Se utiliza para devolver el valor trigonométrico del seno hiperbólico de un valor doble

Math.tanh () Se utiliza para devolver el valor de Tangente hiperbólica trigonométrica de un valor do

Métodos matemáticos angulares

Método Descripción

Matemáticas a Se utiliza para convertir el ángulo en radianes especificado en un ángulo equiv


grados grados.

Math.toRadians Se utiliza para convertir el ángulo en grados especificado en un ángulo equival


radianes.

Clases de envoltura en Java


La clase contenedora en Java proporciona el mecanismo para convertir primitivo en objeto y objeto
en primitivo .

Desde J2SE 5.0, la función de autoboxing y unboxing convierte las primitivas en objetos y los objetos
en primitivas automáticamente. La conversión automática de primitivo en un objeto se conoce como
autoboxing y viceversa unboxing.

Uso de clases Wrapper en Java


Java es un lenguaje de programación orientado a objetos, por lo que necesitamos tratar con objetos
muchas veces como en Colecciones, Serialización, Sincronización, etc. Veamos los diferentes escenarios,
donde necesitamos usar las clases contenedoras.

o Cambie el valor en Método: Java solo admite llamadas por valor. Entonces, si pasamos un valor
primitivo, no cambiará el valor original. Pero, si convertimos el valor primitivo en un objeto,
cambiará el valor original.
o Serialización: Necesitamos convertir los objetos en flujos para realizar la serialización. Si
tenemos un valor primitivo, podemos convertirlo en objetos a través de las clases contenedoras.
o Sincronización: la sincronización de Java funciona con objetos en Multithreading.

o Paquete java.util: el paquete java.util proporciona las clases de utilidad para tratar con objetos.
o Marco de recopilación: el marco de recopilación de Java solo funciona con objetos. Todas las
clases del marco de la colección (ArrayList, LinkedList, Vector, HashSet, LinkedHashSet, TreeSet,
PriorityQueue, ArrayDeque, etc.) tratan solo con objetos.

Las ocho clases del paquete java.lang se conocen como clases contenedoras en Java. La lista de ocho
clases contenedoras se muestra a continuación:

Tipo primitivo Clase de envoltura

boolean Boolean

char Character

byte Byte

short Short

int Integer

long Long

float Float

double Double

Autoboxing
The automatic conversion of primitive data type into its corresponding wrapper class is known as
autoboxing, for example, byte to Byte, char to Character, int to Integer, long to Long, float to Float,
boolean to Boolean, double to Double, and short to Short.

Since Java 5, we do not need to use the valueOf() method of wrapper classes to convert the primitive
into objects.

Wrapper class Example: Primitive to Wrapper

1. //Java program to convert primitive into objects  
2. //Autoboxing example of int to Integer  
3. public class WrapperExample1{  
4. public static void main(String args[]){  
5. //Converting int into Integer  
6. int a=20;  
7. Entero i = Integer.valueOf (a); // convertir int en Integer explícitamente  
8. Entero j = a; // autoboxing, ahora el compilador escribirá Integer.valueOf (a) internamente  
9.   
10.System.out.println (a + "" + i + "" + j);  
11.}}  

Producción:

20 20 20

Desembalaje
La conversión automática del tipo de contenedor en su tipo primitivo correspondiente se conoce como
unboxing. Es el proceso inverso del autoboxing. Desde Java 5, no necesitamos usar el método intValue ()
de las clases contenedoras para convertir el tipo contenedor en primitivas.

Ejemplo de clase de envoltura: envoltura a primitiva

1. // Programa Java para convertir objetos en primitivas  


2. // Ejemplo de unboxing de Integer a int  
3. public class  WrapperExample2 {     
4. public static void  main (String args []) {      
5. // Conversión de Integer a int    
6. Integer a=new Integer(3);    
7. int i=a.intValue();//converting Integer to int explicitly  
8. int j=a;//unboxing, now compiler will write a.intValue() internally    
9.     
10.System.out.println(a+" "+i+" "+j);    
11.}}    

Output:

3 3 3

Java Wrapper classes Example


1. //Java Program to convert all primitives into its corresponding   
2. //wrapper objects and vice-versa  
3. public class WrapperExample3{  
4. public static void main(String args[]){  
5. byte b=10;  
6. short s=20;  
7. int i=30;  
8. long l=40;  
9. float f=50.0F;  
10.double d=60.0D;  
11.char c='a';  
12.boolean b2=true;  
13.  
14.//Autoboxing: Converting primitives into objects  
15.Byte byteobj=b;  
16.Short shortobj=s;  
17.Integer intobj=i;  
18.Long longobj=l;  
19.Float floatobj=f;  
20.Double doubleobj=d;  
21.Character charobj=c;  
22.Boolean boolobj=b2;  
23.  
24.//Printing objects  
25.System.out.println("---Printing object values---");  
26.System.out.println("Byte object: "+byteobj);  
27.System.out.println("Short object: "+shortobj);  
28.System.out.println("Integer object: "+intobj);  
29.System.out.println("Long object: "+longobj);  
30.System.out.println("Float object: "+floatobj);  
31.System.out.println("Double object: "+doubleobj);  
32.System.out.println("Character object: "+charobj);  
33.System.out.println("Boolean object: "+boolobj);  
34.  
35.//Unboxing: Converting Objects to Primitives  
36.byte bytevalue=byteobj;  
37.short shortvalue=shortobj;  
38.int intvalue=intobj;  
39.long longvalue=longobj;  
40.float floatvalue=floatobj;  
41.double doublevalue=doubleobj;  
42.char charvalue=charobj;  
43.boolean boolvalue=boolobj;  
44.  
45.//Printing primitives  
46.System.out.println("---Printing primitive values---");  
47.System.out.println("byte value: "+bytevalue);  
48.System.out.println("short value: "+shortvalue);  
49.System.out.println("int value: "+intvalue);  
50.System.out.println("long value: "+longvalue);  
51.System.out.println("float value: "+floatvalue);  
52.System.out.println("double value: "+doublevalue);  
53.System.out.println("char value: "+charvalue);  
54.System.out.println("boolean value: "+boolvalue);  
55.}}  

Output:

---Printing object values---


Byte object: 10
Short object: 20
Integer object: 30
Long object: 40
Float object: 50.0
Double object: 60.0
Character object: a
Boolean object: true
---Printing primitive values---
byte value: 10
short value: 20
int value: 30
long value: 40
float value: 50.0
double value: 60.0
char value: a
boolean value: true

Custom Wrapper class in Java


Java Wrapper classes wrap the primitive data types, that is why it is known as wrapper classes. We can
also create a class which wraps a primitive data type. So, we can create a custom wrapper class in Java.

1. //Creating the custom wrapper class  
2. class Javatpoint{  
3. private int i;  
4. Javatpoint(){}  
5. Javatpoint(int i){  
6. this.i=i;  
7. }  
8. public int getValue(){  
9. return i;  
10.}  
11.public void setValue(int i){  
12.this.i=i;  
13.}  
14.@Override  
15.public String toString() {  
16.  return Integer.toString(i);  
17.}  
18.}  
19.//Testing the custom wrapper class  
20.public class TestJavatpoint{  
21.public static void main(String[] args){  
22.Javatpoint j=new Javatpoint(10);  
23.System.out.println(j);  
24.}}  

Output:

10

La recursividad en Java es un proceso en el que un método se llama a sí mismo continuamente. Un


método en Java que se llama a sí mismo se llama método recursivo.

Hace que el código sea compacto pero complejo de entender.

Sintaxis:

1. returnntype methodname () {  


2. // código a ejecutar  
3. nombre_método (); // llamando al mismo método  
4. }  

Ejemplo 1 de recursividad de Java: tiempos infinitos


1. public class  RecursionExample1 {   
2. vacío estático  p () {   
3. System.out.println ( "hola" );  
4. pag();  
5. }  
6.   
7. vacío estático público   main(String[] args) {  
8. pag();  
9. }  
10.}  

Producción:

hello
Hola
...
java.lang.StackOverflowError

Ejemplo 2 de recursividad de Java: tiempos finitos


1. public class  RecursionExample2 {   
2.  cuenta int estática = 0 ;   
3. vacío estático  p () {   
4. contar ++;  
5. si (cuenta <= 5 ) {  
6. System.out.println ( "hola" + cuenta);  
7. pag();  
8. }  
9. }  
10.public static void main(String[] args) {  
11.p();  
12.}  
13.}  

Output:

hello 1
hello 2
hello 3
hello 4
hello 5

Java Recursion Example 3: Factorial Number


1. public class RecursionExample3 {  
2.     static int factorial(int n){      
3.           if (n == 1)      
4.             return 1;      
5.           else      
6.             return(n * factorial(n-1));      
7.     }      
8.   
9. public static void main(String[] args) {  
10.System.out.println("Factorial of 5 is: "+factorial(5));  
11.}  
12.}  

Output:

Factorial of 5 is: 120

Working of above program:

factorial(5)
factorial(4)
factorial(3)
factorial(2)
factorial(1)
return 1
return 2*1 = 2
return 3*2 = 6
return 4*6 = 24
return 5*24 = 120

Java Recursion Example 4: Fibonacci Series


1. public class RecursionExample4 {  
2.     static int n1=0,n2=1,n3=0;      
3.      static void printFibo(int count){      
4.         if(count>0){      
5.              n3 = n1 + n2;      
6.              n1 = n2;      
7.              n2 = n3;      
8.              System.out.print(" "+n3);     
9.              printFibo(count-1);      
10.         }      
11.     }        
12.  
13.public static void main(String[] args) {  
14.    int count=15;      
15.      System.out.print(n1+" "+n2);//printing 0 and 1      
16.      printFibo(count-2);//n-2 because 2 numbers are already printed     
17.}  
18.}  

Output:

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377

Llamada por valor y llamada por referencia en Java


Solo hay llamada por valor en java, no llamada por referencia. Si llamamos a un método pasando un valor
como llamada por valor. Los cambios que se realizan en el método llamado no se ven afectados en el mét
llamada.

Ejemplo de llamada por valor en java


En caso de llamada por valor, el valor original no se modifica. Tomemos un ejemplo simple:

1. clase  Operación {  
2.  int  datos = 50 ;  
3.   
4.   cambio nulo (  datos int ) {  
5.  datos = datos + 100 ; // los cambios estarán solo en la variable local  
6.  }  
7.      
8.  public static void  main (String args []) {    
9.    Operación op = nueva  Operación ();  
10.  
11.   System.out.println ( "antes del cambio" + op.data);  
12.   op.change ( 500 );  
13.   System.out.println ( "después del cambio" + op.data);  
14.  
15. }  
16.}  
descarga este ejemplo
Salida: antes del cambio 50
después del cambio 50

Otro ejemplo de llamada por valor en java


En caso de llamada por referencia, el valor original se cambia si realizamos cambios en el método
llamado. Si pasamos el objeto en lugar de cualquier valor primitivo, se cambiará el valor original. En este
ejemplo, estamos pasando un objeto como un valor. Tomemos un ejemplo simple:

1. class  Operation2 {  
2.  int  datos = 50 ;  
3.   
4.  anular el  cambio (Operación2 op) {  
5.  op.data = op.data + 100 ; // los cambios estarán en la variable de instancia  
6.  }  
7.      
8.     
9.  public static void  main (String args []) {    
10.   Operation2 op = new  Operation2 ();  
11.  
12.   System.out.println ( "antes del cambio" + op.data);  
13.   op.change (op); // pasando objeto  
14.   System.out.println("after change "+op.data);  
15.  
16. }  
17.}  
download this example
Output:before change 50
after change 150

Palabra clave de Java Strictfp


La palabra clave estrictafp de Java asegura que obtendrá el mismo resultado en todas las plataformas si
realiza operaciones en la variable de punto flotante. La precisión puede diferir de una plataforma a otra,
por eso el lenguaje de programación java ha proporcionado la palabra clave estrictafp, para que obtenga
el mismo resultado en todas las plataformas. Entonces, ahora tiene un mejor control sobre la aritmética
de punto flotante.

Código legal para la palabra clave estrictafp


La palabra clave estrictafp se puede aplicar a métodos, clases e interfaces.

1. estricfp clase  A {} // estrictofp aplicado en la clase   


1. estrictafp interfaz  M {} // estrictafp aplicada en la interfaz   
1. clase  A {  
2. estrictofp void  m () {} // estrictofp aplicado al método   
3. }  

Código ilegal para la palabra clave estrictafp


La palabra clave estrictafp no se puede aplicar a métodos abstractos, variables o constructores.

1. clase  B {  
2. Strictfp abstract void  m (); // Combinación ilegal de modificadores    
3. }  
1. clase  B {  
2. estrictofp int  datos = 10 ; // modificador rigidfp no permitido aquí   
3. }  
1. clase  B {  
2. estricfp  B () {} // modificador estrictofp no permitido aquí  
3. } 

Creación de documento API | herramienta javadoc


Podemos crear documentos api en java con la ayuda de la herramienta javadoc . En el archivo java,
debemos usar el comentario de documentación / ** ... * / para publicar información para la clase,
método, constructor, campos, etc.

Veamos la clase simple que contiene el comentario de la documentación.

1. paquete  com.abc;  
2. / ** Esta clase es una clase definida por el usuario que contiene un cubo de métodos. * /  
3. clase pública  M {   
4.   
5. / ** El método del cubo imprime el cubo del número dado * /  
6.   cubo vacío estático público ( int  n) {System.out.println (n * n * n);}    
7. }  

Para crear la API del documento, debe utilizar la herramienta javadoc seguida del nombre del archivo
java. No es necesario compilar el archivo java.
En el símbolo del sistema, debe escribir:

javadoc M.java

para generar la api del documento. Ahora, se crearán muchos archivos html. Abra el archivo index.html
para obtener información sobre las clases.

Argumentos de la línea de comandos de Java


1. Argumento de la línea de comandos

2. Ejemplo simple de argumento de línea de comandos

3. Ejemplo de argumento de línea de comando que imprime todos los valores

El argumento de la línea de comandos de Java es un argumento, es decir, que se pasa en el momento de


ejecutar el programa de Java.

Los argumentos pasados desde la consola se pueden recibir en el programa java y se pueden utilizar
como entrada.

Por lo tanto, proporciona una forma conveniente de verificar el comportamiento del programa para los
diferentes valores. Puede pasar N (1,2,3 y así sucesivamente) números de argumentos desde el símbolo
del sistema.

Ejemplo simple de argumento de línea de comandos en java


En este ejemplo, recibimos solo un argumento y lo imprimimos. Para ejecutar este programa Java, debe p
menos un argumento desde el símbolo del sistema.

1. class  CommandLineExample {  
2. public static void  main (String args []) {    
3. System.out.println ( "Su primer argumento es:" + args [ 0 ]);  
4. }  
5. }  
1. compilar por> javac CommandLineExample.java  
2. ejecutado por> java CommandLineExample sonoo  
Resultado: Su primer argumento es: sonoo

Ejemplo de argumento de línea de comando que imprime todos los


valores
En este ejemplo, estamos imprimiendo todos los argumentos pasados desde la línea de comandos. Para e
hemos atravesado la matriz usando for loop.

1. clase  A {  
2. public static void  main (String args []) {    
3.   
4. for(int i=0;i<args.length;i++)  
5. System.out.println(args[i]);  
6.   
7. }  
8. }  
1. compile by > javac A.java  
2. run by > java A sonoo jaiswal 1 3 abc  
Output: sonoo
jaiswal
1
3
abc

Diferencia entre objeto y clase


Hay muchas diferencias entre objeto y clase. A continuación, se proporciona una lista de diferencias
entre el objeto y la clase:

No. Objeto Clase

1 El objeto es una instancia de una clase. La clase es un plano o pla


) a partir de la cual se crean

2 El objeto es una entidad del mundo real , como un bolígrafo, La clase es un grupo de o


) una computadora portátil, un dispositivo móvil, una cama, un similares .
teclado, un mouse, una silla, etc.

3 El objeto es una entidad física . La clase es una entidad lóg


)

4 El objeto se crea a través de una nueva palabra La clase se declara usando


) clave principalmente, por ejemplo, clave de
Student s1 = new Student (); clase, por ejemplo, clase E

5 El objeto se crea muchas veces según los requisitos. La clase se declara una ve


)

6 El objeto asigna memoria cuando se crea . La clase no asigna memo


) se crea .

7 Hay muchas formas de crear objetos en Java, como nueva Solo hay una forma de de
) palabra clave, método newInstance (), método clone (), método clase en java usando la pa
de fábrica y deserialización. class.

Veamos un ejemplo de la vida real de clase y objeto en Java para comprender bien la diferencia:

Clase: Humano Objeto: Hombre, Mujer

Clase: Fruta Objeto: Manzana, Plátano, Mango, Guayaba wtc.

Clase: teléfono móvil Objeto: iPhone, Samsung, Moto

Clase: Comida Objeto: Pizza, Hamburguesa, Samosa


Diferencia entre la sobrecarga de métodos y la anulación
de métodos en Java
Hay muchas diferencias entre la sobrecarga de métodos y la anulación de métodos en java. A
continuación se proporciona una lista de diferencias entre la sobrecarga de métodos y la anulación de
métodos:

No. Sobrecarga de métodos Anulación de método

1) La sobrecarga de métodos se utiliza para aumentar la La anulación de método se


legibilidad del programa. proporcionar la implement
específica del método que
su superclase.

2) La sobrecarga de métodos se realiza dentro de la clase . La anulación de método se


clases que tienen una rela
(herencia).

3) En caso de sobrecarga del método, el parámetro debe ser En caso de anulación del m
diferente . el parámetro debe ser el m

4) La sobrecarga de métodos es el ejemplo de polimorfismo en La anulación de método es


tiempo de compilación . de polimorfismo en tiempo

5) En Java, la sobrecarga del método no se puede realizar El tipo de retorno debe se


cambiando el tipo de retorno del método únicamente. El tipo de covariante en la sustitució
retorno puede ser el mismo o diferente en la sobrecarga del
método. Pero debes tener que cambiar el parámetro.

Ejemplo de sobrecarga del método Java


1. class  OverloadingExample {  
2. static int  add ( int  a, int  b) { return  a + b;}   
3. static int  add ( int  a, int  b, int  c) { return  a + b + c;}   
4. }  

Ejemplo de anulación del método Java


1. class  Animal {  
2. void  eat () {System.out.println ( "comiendo ..." );}  
3. }  
4. clase  Perro  extiende  Animal {  
5. void  eat () {System.out.println ( "comiendo pan ..." );}  
6. }  

Cadena de Java
En Java , la cadena es básicamente un objeto que representa una secuencia de valores de
caracteres. Una matriz de caracteres funciona igual que una cadena de Java. Por ejemplo:

1. char [] ch = { 'j' , 'a' , 'v' , 'a' , 't' , 'p' , 'o' , 'i' , 'n' , 't' };  
2. Cadena s = nueva  Cadena (ch);  

es lo mismo que:

1. String s = "javatpoint" ;  

La clase Java String proporciona muchos métodos para realizar operaciones en cadenas como compare
(), concat (), equals (), split (), length (), replace (), compareTo (), intern (), substring () etc.

La clase java.lang.String implementa interfaces Serializable , Comparable y CharSequence .

Interfaz CharSequence
La interfaz CharSequence se utiliza para representar la secuencia de
caracteres. Las clases String, StringBuffer y StringBuilder lo implementan. Significa que podemos crear
cadenas en Java usando estas tres clases.
La cadena de Java es inmutable, lo que significa que no se puede cambiar. Siempre que cambiamos
cualquier cadena, se crea una nueva instancia. Para cadenas mutables, puede usar las clases
StringBuffer y StringBuilder.

Hablaremos de la cadena inmutable más adelante. Primero entendamos qué es String en Java y cómo
crear el objeto String.

¿Qué es String en Java?


Generalmente, String es una secuencia de caracteres. Pero en Java, la cadena es un objeto que
representa una secuencia de caracteres. La clase java.lang.String se usa para crear un objeto de cadena.

¿Cómo crear un objeto de cadena?


Hay dos formas de crear un objeto String:

1. Por literal de cadena

2. Por nueva palabra clave

1) Literal de cadena
El literal de cadena de Java se crea mediante comillas dobles. Por ejemplo:

1. String s = "bienvenido" ;  

Cada vez que crea un literal de cadena, la JVM comprueba primero el "grupo de constantes de
cadena". Si la cadena ya existe en el grupo, se devuelve una referencia a la instancia agrupada. Si la
cadena no existe en el grupo, se crea una nueva instancia de cadena y se coloca en el grupo. Por
ejemplo:

1. String s1 = "Bienvenido" ;  
2. String s2 = "Bienvenido" ; // No crea una nueva instancia  
En el ejemplo anterior, solo se creará un objeto. En primer lugar, JVM no encontrará ningún objeto de
cadena con el valor "Bienvenido" en el grupo de constantes de cadena, por eso creará un nuevo
objeto. Después de eso, encontrará la cadena con el valor "Bienvenido" en el grupo, no creará un nuevo
objeto pero devolverá la referencia a la misma instancia.

Nota: Los objetos de cadena se almacenan en un área de memoria especial conocida como "grupo de
constantes de cadena".

¿Por qué Java usa el concepto de literal de cadena?


Para hacer que Java sea más eficiente en memoria (porque no se crean nuevos objetos si ya existe en el
grupo de constantes de cadena).

2) Por nueva palabra clave


1. String s = new  String ( "Bienvenido" ); // crea dos objetos y una variable de referencia  

En tal caso, JVM creará un nuevo objeto de cadena en la memoria de pila normal (no agrupada), y la
"Bienvenida" literal se colocará en la agrupación de constantes de cadena. La variable s se referirá al
objeto en un montón (sin grupo).
Ejemplo de cadena de Java
1. public class  StringExample {   
2. public static void  main (String args []) {    
3. String s1 = "java" ; // creando cadena por literal de cadena java  
4. char  ch [] = { 's' , 't' , 'r' , 'i' , 'n' , 'g' , 's' };  
5. Cadena s2 = nueva  Cadena (ch); // convertir una matriz de caracteres en una cadena  
6. String s3 = new  String ( "ejemplo" ); // creando una cadena java con una nueva palabra clave  
7. System.out.println (s1);  
8. System.out.println (s2);  
9. System.out.println (s3);  
10.}}  
Pruébelo ahora
Java
instrumentos de cuerda
ejemplo

Métodos de clase Java String


La clase java.lang.String proporciona muchos métodos útiles para realizar operaciones en la secuencia de
valores char.

No. Método Descripción

1 char charAt (índice int) devuelve el valor char para el ín


particular

2 longitud int () devuelve la longitud de la caden

3 formato de cadena estático (formato de cadena, devuelve una cadena formatead


objeto ... argumentos)

4 Formato de cadena estático (Locale l, formato de devuelve una cadena formatead


cadena, objeto ... args) configuración regional dada.

5 Subcadena de cadena (int beginIndex) devuelve una subcadena para e


inicio dado.

6 Subcadena de cadena (int beginIndex, int endIndex) devuelve una subcadena para e
inicial y final dados.

7 booleano contiene (CharSequence s) devuelve verdadero o falso des


coincidir con la secuencia del va

8 Unión de cadena estática (delimitador CharSequence, devuelve una cadena unida.


CharSequence ... elementos)

9 Unión de cadena estática (delimitador de devuelve una cadena unida.


CharSequence, elementos Iterable <? extiende
CharSequence>)

10 booleano es igual (Objeto otro) comprueba la igualdad de la ca


objeto dado.

11 boolean isEmpty () comprueba si la cadena está va

12 String concat (String str) concatena la cadena especificad

13 Reemplazo de cadena (char antiguo, char nuevo) reemplaza todas las apariciones
char especificado.

14 Reemplazo de cadenas (CharSequence antiguo, reemplaza todas las apariciones


CharSequence nuevo) CharSequence especificada.

15 static String equalsIgnoreCase (String otro) compara otra cadena. No marca

dieciséi String [] split (String regex) devuelve una expresión regular


s de cadena dividida.

17 String [] split (String regex, int limit) devuelve una cadena dividida q
con la expresión regular y el lím

18 Pasante de cuerdas () devuelve una cadena interna.

19 int indexOf (int ch) devuelve el índice de valor de c


especificado.

20 int indexOf (int ch, int fromIndex) devuelve el índice de valor de c


especificado comenzando con e
dado.
21 int indexOf (subcadena de cadena) devuelve el índice de subcadena
especificado.

22 int indexOf (cadena subcadena, int fromIndex) devuelve el índice de subcadena


especificado comenzando con e
dado.

23 Cadena toLowerCase () devuelve una cadena en minúsc

24 Cadena toLowerCase (configuración regional l) devuelve una cadena en minúsc


utilizando la configuración regio
especificada.

25 Cadena toUpperCase () devuelve una cadena en mayús

26 Cadena toUpperCase (Locale l) devuelve una cadena en mayús


utilizando la configuración regio
especificada.

27 Recorte de hilo () elimina los espacios iniciales y f


esta cadena.

28 static String valueOf (valor int) convierte el tipo dado en una ca


método sobrecargado.

Cadena inmutable en Java


En Java, los objetos de cadena son inmutables . Inmutable simplemente significa inmodificable o
inmutable.

Una vez que se crea el objeto de cadena, sus datos o su estado no se pueden cambiar, pero se crea un
nuevo objeto de cadena.

Intentemos comprender el concepto de inmutabilidad con el ejemplo que se muestra a continuación:

1. class  Testimmutablestring {  
2.  public static void  main (String args []) {    
3.    String s = "Sachin" ;  
4.    s.concat ( "Tendulkar" ); // el método concat () agrega la cadena al final  
5.    System.out.println (s); // imprimirá Sachin porque las cadenas son objetos inmutables  
6.  }  
7. }  
Pruébelo ahora
Salida: Sachin

Ahora se puede entender mediante el diagrama que se muestra a continuación. Aquí no se cambia


Sachin sino que se crea un nuevo objeto con sachintendulkar. Es por eso que la cuerda se conoce como
inmutable.

Como puede ver en la figura anterior, se crean dos objetos, pero la variable de referencia todavía se
refiere a "Sachin", no a "Sachin Tendulkar".

Pero si lo asignamos explícitamente a la variable de referencia, se referirá al objeto "Sachin Tendulkar".


Por ejemplo:

1. class  Testimmutablestring1 {  
2.  public static void  main (String args []) {    
3.    String s = "Sachin" ;  
4.    s = s.concat ( "Tendulkar" );  
5.    System.out.println (s);  
6.  }  
7. }  
Pruébelo ahora
Salida: Sachin Tendulkar

En tal caso, s apunta al "Sachin Tendulkar". Tenga en cuenta que aún el objeto sachin no se modifica.
¿Por qué los objetos de cadena son inmutables en Java?
Debido a que java usa el concepto de literal de cadena. Suponga que hay 5 variables de referencia, todas
un objeto "sachin". Si una variable de referencia cambia el valor del objeto, se verá afectada por todas las
referencia. Es por eso que los objetos de cadena son inmutables en java.

Comparación de cadenas de Java

Podemos comparar cadenas en Java sobre la base del contenido y la referencia.

Se utiliza en autenticación (por método equals ()), clasificación (por método compareTo


()), coincidencia de referencias (por operador ==), etc.

Hay tres formas de comparar cadenas en Java:

1. Por el método equals ()

2. Por = = operador

3. Por el método compareTo ()

1) Método de comparación de cadenas por equals ()


El método String equals () compara el contenido original de la cadena. Compara los valores de la cadena
para determinar la igualdad. La clase String proporciona dos métodos:

o public boolean equals (Object otro) compara esta cadena con el objeto especificado.

o public boolean equalsIgnoreCase (String otro) compara este String con otro string,
ignorando el caso.

1. class  Teststringcomparison1 {  
2.  public static void  main (String args []) {    
3.    String s1 = "Sachin" ;  
4.    String s2 = "Sachin" ;  
5.    Cadena s3 = nueva  Cadena ( "Sachin" );  
6.    String s4 = "Saurav" ;  
7.    System.out.println (s1.equals (s2)); //cierto  
8.    System.out.println (s1.equals (s3)); //cierto  
9.    System.out.println (s1.equals (s4)); //falso  
10. }  
11.}  
Pruébelo ahora
Salida: verdadero
cierto
falso
1. class  Teststringcomparison2 {  
2.  public static void  main (String args []) {    
3.    String s1 = "Sachin" ;  
4.    String s2 = "SACHIN" ;  
5.   
6.    System.out.println (s1.equals (s2)); //falso  
7.    System.out.println (s1.equalsIgnoreCase (s2)); //cierto  
8.  }  
9. }  
Pruébelo ahora

Producción:

falso
cierto
Haga clic aquí para obtener más información sobre el método equals ()

2) Comparación de cadenas por operador ==


El operador = = compara referencias, no valores.

1. class  Teststringcomparison3 {  
2.  public static void  main (String args []) {    
3.    String s1 = "Sachin" ;  
4.    String s2 = "Sachin" ;  
5.    Cadena s3 = nueva  Cadena ( "Sachin" );  
6.    System.out.println (s1 == s2); // verdadero (porque ambos se refieren a la misma instancia)  
7.    System.out.println (s1 == s3); // falso (porque s3 se refiere a la instancia creada en nonpool)  
8.  }  
9. }  
Pruébelo ahora
Salida: verdadero
falso
3) Comparación de cadenas mediante el método compareTo ()
El método String compareTo () compara valores lexicográficamente y devuelve un valor entero que
describe si la primera cadena es menor, igual o mayor que la segunda cadena.

Suponga que s1 y s2 son dos variables de cadena. Si:

o s1 == s2 : 0

o s1> s2   : valor positivo

o s1 <s2   : valor negativo

1. class  Teststringcomparison4 {  
2.  public static void  main (String args []) {    
3.    String s1 = "Sachin" ;  
4.    String s2 = "Sachin" ;  
5.    String s3 = "Ratan" ;  
6.    System.out.println (s1.compareTo (s2)); // 0  
7.    System.out.println (s1.compareTo (s3)); // 1 (porque s1> s3)  
8.    System.out.println (s3.compareTo (s1)); // - 1 (porque s3 <s1)  
9.  }  
10.}  
Pruébelo ahora
Salida: 0
1
-1

Haga clic en mí para obtener más información sobre el método compareTo

()Concatenación de cadenas en Java


En Java, la concatenación de cadenas forma una nueva cadena que es la combinación de varias
cadenas. Hay dos formas de concatizar cadenas en java:

1. Por operador + (concatenación de cadenas)

2. Por el método concat ()

1) Concatenación de cadenas mediante el operador +


(concatenación de cadenas)
El operador de concatenación de cadenas de Java (+) se utiliza para agregar cadenas. Por ejemplo:

1. class  TestStringConcatenation1 {  
2.  public static void  main (String args []) {    
3.    Cadena s = "Sachin" + "Tendulkar" ;  
4.    System.out.println (s); // Sachin Tendulkar  
5.  }  
6. }  
Pruébelo ahora
Salida: Sachin Tendulkar

El compilador de Java transforma el código anterior en esto:

1. String s = ( new  StringBuilder ()). Append ( "Sachin" ) .append ("Tendulkar) .toString ();  

En Java, la concatenación de cadenas se implementa a través de la clase StringBuilder (o StringBuffer) y


su método append. El operador de concatenación de cadenas produce una nueva cadena añadiendo el
segundo operando al final del primer operando. El operador de concatenación de cadenas puede
concatizar no solo cadenas, sino también valores primitivos. Por ejemplo:

1. class  TestStringConcatenation2 {  
2.  public static void  main (String args []) {    
3.    Cadena s = 50 + 30 + "Sachin" + 40 + 40 ;  
4.    System.out.println (s); // 80Sachin4040  
5.  }  
6. }  
Pruébelo ahora
80Sachin4040
Nota: Después de un literal de cadena, todos los + se tratarán como un operador de concatenación de
cadenas.
2) Concatenación de cadenas mediante el método concat ()
El método String concat () concatena la cadena especificada al final de la cadena actual. Sintaxis:

1. público  String concat (String otro)  

Veamos el ejemplo del método String concat ().

1. class  TestStringConcatenation3 {  
2.  public static void  main (String args []) {    
3.    String s1 = "Sachin" ;  
4.    String s2 = "Tendulkar" ;  
5.    Cadena s3 = s1.concat (s2);  
6.    System.out.println (s3); // Sachin Tendulkar  
7.   }  
8. }  
Pruébelo ahora
Sachin Tendulkar

Subcadena en Java
Una parte de la cadena se llama subcadena . En otras palabras, la subcadena es un subconjunto de otra
cadena. En el caso de la subcadena, startIndex es inclusivo y endIndex es exclusivo.

Nota: el índice comienza en 0.

Puede obtener una subcadena del objeto de cadena dado mediante uno de los dos métodos:
1. public String substring (int startIndex): este método devuelve un nuevo objeto String que
contiene la subcadena de la cadena dada de startIndex especificado (inclusive).

2. public String substring (int startIndex, int endIndex): este método devuelve un nuevo
objeto String que contiene la subcadena de la cadena dada desde startIndex especificado hasta
endIndex.

En caso de cadena:

o startIndex: inclusivo

o endIndex: exclusivo

Entendamos el startIndex y endIndex por el código que se proporciona a continuación.

1. String s = "hola" ;  
2. System.out.println (s.substring ( 0 , 2 )); //él  

En la subcadena anterior, 0 apunta ah pero 2 apunta a e (porque el índice final es exclusivo).

Ejemplo de subcadena de Java


1. público de clase  TestSubstring {   
2.  public static void  main (String args []) {    
3.    String s = "SachinTendulkar" ;  
4.    System.out.println (en la subcadena ( 6 )); // Tendulkar  
5.    System.out.println (s.substring ( 0 , 6 )); // Sachin  
6.  }  
7. }  
Pruébelo ahora
Tendulkar
Sachin

Métodos de clase Java String


La clase java.lang.String proporciona muchos métodos para trabajar con cadenas. Con la ayuda de estos
métodos, podemos realizar operaciones en cadenas como recortar, concatenar, convertir, comparar,
reemplazar cadenas, etc.

Java String es un concepto poderoso porque todo se trata como una cadena si envía cualquier formulario
en una aplicación basada en ventana, web o móvil.

Veamos los métodos importantes de la clase String.

Java String toUpperCase () y método toLowerCase ()


El método java string toUpperCase () convierte esta cadena en letra mayúscula y el método string
toLowerCase () en letra minúscula.

1. String s = "Sachin" ;  
2. System.out.println (s.toUpperCase ()); // SACHIN  
3. System.out.println (s.toLowerCase ()); // sachin  
4. System.out.println (s); // Sachin (sin cambios en el original)  
Pruébelo ahora
SACHIN
sachin
Sachin

Método Java String trim ()


El método string trim () elimina los espacios en blanco antes y después de la cadena.

1. String s = "Sachin" ;  
2. System.out.println (s); // Sachin    
3. System.out.println (s.trim ()); // Sachin  
Pruébelo ahora
Sachin
Sachin

Java String método startsWith () y endsWith ()


1. String s = "Sachin" ;  
2.  System.out.println(s.startsWith("Sa"));//true  
3.  System.out.println(s.endsWith("n"));//true  
Test it Now
true
true

Java String charAt() method


The string charAt() method returns a character at specified index.

1. String s="Sachin";  
2. System.out.println(s.charAt(0));//S  
3. System.out.println(s.charAt(3));//h  
Test it Now
S
h

Java String length() method


The string length() method returns length of the string.

1. String s="Sachin";  
2. System.out.println(s.length());//6  
Test it Now
6

Java String intern() method


A pool of strings, initially empty, is maintained privately by the class String.
Cuando se invoca el método interno, si el grupo ya contiene una cadena igual a este objeto String según
lo determinado por el método equals (Object), se devuelve la cadena del grupo. De lo contrario, este
objeto String se agrega al grupo y se devuelve una referencia a este objeto String.

1. Cadena s = nueva  Cadena ( "Sachin" );  


2. Cadena s2 = s.intern ();  
3. System.out.println (s2); // Sachin  
Pruébelo ahora
Sachin

Método Java String valueOf ()


El método string valueOf () convierte un tipo dado como int, long, float, double, boolean, char y char en
una cadena.

1. int  a = 10 ;  
2. Cadena s = String.valueOf (a);  
3. System.out.println (s + 10 );  

Producción:

1010

Método Java String replace ()


El método string replace () reemplaza todas las ocurrencias de la primera secuencia de caracteres con la
segunda secuencia de caracteres.

1. String s1 = "Java es un lenguaje de programación. Java es una plataforma. Java es una isla". ;    
2. String replaceString = s1.replace ( "Java" , "Kava" ); // reemplaza todas las apariciones de "Java" por
"Kava"    
3. System.out.println (replaceString);    

Producción:

Kava es un lenguaje de programación. Kava es una plataforma. Kava es una isla.

Clase Java StringBuffer


La clase Java StringBuffer se utiliza para crear cadenas mutables (modificables). La clase StringBuffer en
java es la misma que la clase String excepto que es mutable, es decir, se puede cambiar.

Nota: La clase Java StringBuffer es segura para subprocesos, es decir, varios subprocesos no
pueden acceder a ella simultáneamente. Por lo tanto, es seguro y dará lugar a un pedido.

Constructores importantes de la clase StringBuffer


Constructor Descripción

StringBuffer () crea un búfer de cadena vacío con la capacidad inicial de 16.

StringBuffer (String str) crea un búfer de cadena con la cadena especificada.


StringBuffer (capacidad int) crea un búfer de cadena vacío con la capacidad especificada como lon

Métodos importantes de la clase StringBuffer


Modificador y tipo Método Descripción

StringBuffer añadir (String s) se utiliza para agregar la cadena especificada con e


sincronizado cadena. El método append () está sobrecargado co
público (char), append (boolean), append (int), append (flo
(doble), etc.

StringBuffer insertar (int se utiliza para insertar la cadena especificada con e


sincronizado desplazamiento, String s) en la posición especificada. El método insert () está
público sobrecargado como insert (int, char), insert (int, bo
insert (int, int), insert (int, float), insert (int, double

StringBuffer reemplazar (int se utiliza para reemplazar la cadena de startIndex


sincronizado startIndex, int endIndex, especificados.
público String str)

StringBuffer eliminar (int startIndex, is used to delete the string from specified startInde
sincronizado int endIndex) endIndex.
público

public reverse() is used to reverse the string.


synchronized
StringBuffer

public int capacity() is used to return the current capacity.

public void ensureCapacity(int is used to ensure the capacity at least equal to the
minimumCapacity) minimum.

public char charAt(int index) is used to return the character at the specified posi

public int length() is used to return the length of the string i.e. total n
characters.
public String substring(int beginIndex) is used to return the substring from the specified b

public String substring(int beginIndex, is used to return the substring from the specified b
int endIndex) and endIndex.

What is mutable string


Una cadena que se puede modificar o cambiar se conoce como cadena mutable. Las clases StringBuffer y
StringBuilder se utilizan para crear cadenas mutables.

1) Método StringBuffer append ()


El método append () concatena el argumento dado con esta cadena.

1. class  StringBufferExample {  
2. public static void  main (String args []) {    
3. StringBuffer sb = new  StringBuffer ( "Hola" );  
4. sb.append ( "Java" ); // ahora se cambia la cadena original  
5. System.out.println (sb); // imprime Hola Java  
6. }  
7. }  
2) Método StringBuffer insert ()
El método insert () inserta la cadena dada con esta cadena en la posición dada.

1. class  StringBufferExample2 {  
2. public static void  main (String args []) {    
3. StringBuffer sb = new  StringBuffer ( "Hola" );  
4. sb.insert ( 1 , "Java" ); // ahora se cambia la cadena original  
5. System.out.println (sb); // imprime HJavaello  
6. }  
7. }  
3) Método StringBuffer replace ()
El método replace () reemplaza la cadena dada del beginIndex y endIndex especificados.

1. class  StringBufferExample3 {  
2. public static void  main (String args []) {    
3. StringBuffer sb = new  StringBuffer ( "Hola" );  
4. sb.replace ( 1 , 3 , "Java" );  
5. System.out.println (sb); // imprime HJavalo  
6. }  
7. }  
4) Método StringBuffer delete ()
El método delete () de la clase StringBuffer elimina la cadena del beginIndex especificado al endIndex.

1. class  StringBufferExample4 {  
2. public static void  main (String args []) {    
3. StringBuffer sb = new  StringBuffer ( "Hola" );  
4. sb.delete ( 1 , 3 );  
5. System.out.println (sb); // imprime Hlo  
6. }  
7. }  
5) Método StringBuffer reverse ()
El método reverse () de la clase StringBuilder invierte la cadena actual.

1. class  StringBufferExample5 {  
2. public static void  main (String args []) {    
3. StringBuffer sb = new  StringBuffer ( "Hola" );  
4. sb.reverse ();  
5. System.out.println (sb); // imprime olleH  
6. }  
7. }  
6) Método StringBuffer capacity ()
El método capacity () de la clase StringBuffer devuelve la capacidad actual del búfer. La capacidad
predeterminada del búfer es 16. Si el número de caracteres aumenta con respecto a su capacidad actual,
aumenta la capacidad en (capacidad anterior * 2) +2. Por ejemplo, si su capacidad actual es 16, será
(16 * 2) + 2 = 34.

1. class  StringBufferExample6 {  
2. public static void  main (String args []) {    
3. StringBuffer sb = new  StringBuffer ();  
4. System.out.println (sb.capacity ()); // por defecto 16  
5. sb.append ( "Hola" );  
6. System.out.println (sb.capacity ()); // ahora 16  
7. sb.append ( "java es mi idioma favorito" );  
8. System.out.println (sb.capacity ()); // ahora (16 * 2) + 2 = 34 es decir (capacidad anterior * 2) +2  
9. }  
10.}  
7) Método StringBuffer asegurarCapacidad ()
El método secureCapacity () de la clase StringBuffer asegura que la capacidad dada es el mínimo de la
capacidad actual. Si es mayor que la capacidad actual, aumenta la capacidad en (capacidad anterior * 2)
+2. Por ejemplo, si su capacidad actual es 16, será (16 * 2) + 2 = 34.

1. class  StringBufferExample7 {  
2. public static void  main (String args []) {    
3. StringBuffer sb = new  StringBuffer ();  
4. System.out.println (sb.capacity ()); // por defecto 16  
5. sb.append ( "Hola" );  
6. System.out.println (sb.capacity ()); // ahora 16  
7. sb.append ( "java es mi idioma favorito" );  
8. System.out.println (sb.capacity ()); // ahora (16 * 2) + 2 = 34 es decir (capacidad anterior * 2) +2  
9. sb.ensureCapacity ( 10 ); // ahora sin cambios  
10.System.out.println (sb.capacity ()); // ahora 34  
11.sb.ensureCapacity ( 50 ); // ahora (34 * 2) +2  
12.System.out.println (sb.capacity ()); // ahora 70  
13.}  
14.}  

Clase Java StringBuilder


La clase Java StringBuilder se utiliza para crear cadenas mutables (modificables). La clase Java
StringBuilder es la misma que la clase StringBuffer excepto que no está sincronizada. Está disponible
desde JDK 1.5.

Constructores importantes de la clase StringBuilder

Constructor Descripción

StringBuilder () crea un generador de cadenas vacío con la capacidad inicial de 16.

StringBuilder (String str) crea un generador de cadenas con la cadena especificada.

StringBuilder (longitud int) crea un generador de cadenas vacío con la capacidad especificada com

Métodos importantes de la clase StringBuilder

Método Descripción

agregado de StringBuilder público se utiliza para agregar la cadena especificada con esta cadena. 
(String s) append () está sobrecargado como append (char), append (boo
(int), append (float), append (doble), etc.

inserción pública de StringBuilder se utiliza para insertar la cadena especificada con esta cadena e
(int offset, String s) especificada. El método insert () está sobrecargado como insert
insert (int, boolean), insert (int, int), insert (int, float), insert (in

reemplazo de StringBuilder público se utiliza para reemplazar la cadena de startIndex y endIndex e


(int startIndex, int endIndex, String
str)

public StringBuilder delete (int se utiliza para eliminar la cadena de startIndex y endIndex espe
startIndex, int endIndex)

público StringBuilder reverse () se utiliza para invertir la cuerda.

capacidad int pública () se utiliza para devolver la capacidad actual.

public void asegurarCapacidad (int se utiliza para asegurar que la capacidad sea al menos igual al m
mínimaCapacidad)

charAt pública (índice int) se utiliza para devolver el carácter a la posición especificada.

public int length () se utiliza para devolver la longitud de la cadena, es decir, el núm
caracteres.

subcadena de cadena pública (int se utiliza para devolver la subcadena del beginIndex especificad
beginIndex)

subcadena de cadena pública (int se utiliza para devolver la subcadena del beginIndex y endIndex
beginIndex, int endIndex)

Ejemplos de Java StringBuilder


Veamos los ejemplos de diferentes métodos de la clase StringBuilder.

1) Método append () de StringBuilder


El método append () de StringBuilder concatena el argumento dado con esta cadena.

1. class  StringBuilderExample {  
2. public static void  main (String args []) {    
3. StringBuilder sb = new  StringBuilder ( "Hola" );  
4. sb.append ( "Java" ); // ahora se cambia la cadena original  
5. System.out.println (sb); // imprime Hola Java  
6. }  
7. }  
2) Método insert () de StringBuilder
El método insert () de StringBuilder inserta la cadena dada con esta cadena en la posición dada.

1. class  StringBuilderExample2 {  
2. public static void  main (String args []) {    
3. StringBuilder sb = new  StringBuilder ( "Hola" );  
4. sb.insert ( 1 , "Java" ); // ahora se cambia la cadena original  
5. System.out.println (sb); // imprime HJavaello  
6. }  
7. }  
3) Método de reemplazo () de StringBuilder
El método replace () de StringBuilder reemplaza la cadena dada del beginIndex y endIndex
especificados.

1. class  StringBuilderExample3 {  
2. public static void  main (String args []) {    
3. StringBuilder sb = new  StringBuilder ( "Hola" );  
4. sb.replace ( 1 , 3 , "Java" );  
5. System.out.println (sb); // imprime HJavalo  
6. }  
7. }  
4) Método delete () de StringBuilder
El método delete () de la clase StringBuilder elimina la cadena del beginIndex especificado al endIndex.

1. class  StringBuilderExample4 {  
2. public static void  main (String args []) {    
3. StringBuilder sb = new  StringBuilder ( "Hola" );  
4. sb.delete ( 1 , 3 );  
5. System.out.println (sb); // imprime Hlo  
6. }  
7. }  
5) Método StringBuilder reverse ()
El método reverse () de la clase StringBuilder invierte la cadena actual.

1. class  StringBuilderExample5 {  
2. public static void  main (String args []) {    
3. StringBuilder sb = new  StringBuilder ( "Hola" );  
4. sb.reverse ();  
5. System.out.println (sb); // imprime olleH  
6. }  
7. }  
6) Método de capacidad () de StringBuilder
El método capacity () de la clase StringBuilder devuelve la capacidad actual del Builder. La capacidad
predeterminada del Constructor es 16. Si el número de caracteres aumenta con respecto a su capacidad
actual, aumenta la capacidad en (capacidad anterior * 2) +2. Por ejemplo, si su capacidad actual es 16,
será (16 * 2) + 2 = 34.

1. class  StringBuilderExample6 {  
2. public static void  main (String args []) {    
3. StringBuilder sb = nuevo  StringBuilder ();  
4. System.out.println (sb.capacity ()); // por defecto 16  
5. sb.append ( "Hola" );  
6. System.out.println (sb.capacity ()); // ahora 16  
7. sb.append ( "java es mi idioma favorito" );  
8. System.out.println (sb.capacity ()); // ahora (16 * 2) + 2 = 34 es decir (capacidad anterior * 2) +2  
9. }  
10.}  
7) Método StringBuilder sureCapacity ()
El método secureCapacity () de la clase StringBuilder asegura que la capacidad dada es el mínimo de la
capacidad actual. Si es mayor que la capacidad actual, aumenta la capacidad en (capacidad anterior * 2)
+2. Por ejemplo, si su capacidad actual es 16, será (16 * 2) + 2 = 34.

1. class  StringBuilderExample7 {  
2. public static void  main (String args []) {    
3. StringBuilder sb = nuevo  StringBuilder ();  
4. System.out.println (sb.capacity ()); // por defecto 16  
5. sb.append ( "Hola" );  
6. System.out.println (sb.capacity ()); // ahora 16  
7. sb.append ( "java es mi idioma favorito" );  
8. System.out.println (sb.capacity ()); // ahora (16 * 2) + 2 = 34 es decir (capacidad anterior * 2) +2  
9. sb.ensureCapacity ( 10 ); // ahora sin cambios  
10.System.out.println (sb.capacity ()); // ahora 34  
11.sb.ensureCapacity ( 50 ); // ahora (34 * 2) +2  
12.System.out.println (sb.capacity ()); // ahora 70  
13.}  
14.} 

Diferencia entre String y StringBuffer


Hay muchas diferencias entre String y StringBuffer. A continuación se proporciona una lista de
diferencias entre String y StringBuffer:
No. Cuerda StringBuffer

1) La clase de cadena es inmutable. La clase StringBuffer e

2) La cadena es lenta y consume más memoria cuando se concatenan StringBuffer es rápido


demasiadas cadenas porque cada vez crea una nueva instancia. menos memoria cuan
cadenas.

3) La clase String anula el método equals () de la clase Object. Por lo La clase StringBuffer n


tanto, puede comparar el contenido de dos cadenas mediante el método equals () de l
método equals ().

Prueba de rendimiento de String y StringBuffer


1. público class ConcatTest{  
2.     public static String concatWithString()    {  
3.         String t =  "Java" ;  
4.         para  ( int  i = 0 ; i < 10000; i++){  
5.             t = t +  "Tpoint" ;  
6.         }  
7.         return  t;  
8.     }  
9.     público estático  String concatWithStringBuffer(){  
10.        StringBuffer sb =  new  StringBuffer ( "Java" );  
11.        para  ( int  i =0; i<10000; i++){  
12.            sb.append ( "Tpoint" );  
13.        }  
14.        return  sb.toString ();  
15.    }  
16.    public static void  main (String [] args) {    
17.         startTime largo = System.currentTimeMillis ();  
18.        concatWithString();  
19.        System.out.println ( "Tiempo necesario para la concatenación con cadena:" +
(System.currentTimeMillis () - startTime) + "ms" );  
20.        startTime = System.currentTimeMillis ();  
21.        concatWithStringBuffer();  
22.        System.out.println ( "Tiempo necesario para la concatenación con StringBuffer:" +
(System.currentTimeMillis () - startTime) + "ms" );  
23.    }  
24.}  
Tiempo de concatenación con String: 578ms
Tiempo de concatenación con StringBuffer: 0ms

Prueba de HashCode String y StringBuffer


Como puede ver en el programa que se muestra a continuación, String devuelve un nuevo valor de
código hash cuando concat cadena, pero StringBuffer devuelve el mismo.

1.  InstanceTest de clase pública {   
2.     público estático  void main(String args[]){  
3.         System.out.println ( "Prueba de código hash de cadena:" );  
4.         String str = "java" ;  
5.         System.out.println (str.hashCode ());  
6.         str = str + "tpoint" ;  
7.         System.out.println (str.hashCode ());  
8.    
9.         System.out.println ( "Prueba de código hash de StringBuffer:" );  
10.        StringBuffer sb = new  StringBuffer ( "java" );  
11.        System.out.println (sb.hashCode ());  
12.        sb.append ( "tpoint" );  
13.        System.out.println (sb.hashCode ());  
14.    }  
15.}  
Prueba de
código
hash de String: 3254818
229541438 Prueba de código hash de StringBuffer:
118352462
118352462

Diferencia entre StringBuffer y StringBuilder


Java proporciona tres clases para representar una secuencia de caracteres: String, StringBuffer y
StringBuilder. La clase String es una clase inmutable, mientras que las clases StringBuffer y StringBuilder
son mutables. Hay muchas diferencias entre StringBuffer y StringBuilder. La clase StringBuilder se
introdujo desde JDK 1.5.

A continuación se proporciona una lista de diferencias entre StringBuffer y StringBuilder:

No. StringBuffer StringBuilder

1) StringBuffer está sincronizado, es decir, seguro StringBuilder no está sincronizado, es decir


para subprocesos. Significa que dos subprocesos para subprocesos. Significa que dos subpro
no pueden llamar a los métodos de StringBuffer llamar a los métodos de StringBuilder simu
simultáneamente.

2) StringBuffer es menos eficiente que StringBuilder es más eficiente que StringBu


StringBuilder.
Ejemplo de StringBuffer
1. // Programa Java para demostrar el uso de la clase StringBuffer.  
2. public class  BufferTest {   
3.     public static void  main (String [] args) {    
4.         StringBuffer buffer = nuevo  StringBuffer ( "hola" );  
5.         buffer.append ( "java" );  
6.         System.out.println (búfer);  
7.     }  
8. }  
holajava

Ejemplo de StringBuilder
1. // Programa Java para demostrar el uso de la clase StringBuilder.  
2. public class  BuilderTest {   
3.     public static void  main (String [] args) {    
4.         Generador de StringBuilder = nuevo  StringBuilder ( "hola" );  
5.         constructor.append ( "java" );  
6.         System.out.println (constructor);  
7.     }  
8. }  
holajava

Prueba de rendimiento de StringBuffer y StringBuilder


Veamos el código para comprobar el rendimiento de las clases StringBuffer y StringBuilder.

1. // Programa Java para demostrar el rendimiento de las clases StringBuffer y StringBuilder.  


2. public class  ConcatTest {   
3.     public static void  main (String [] args) {    
4.          startTime largo = System.currentTimeMillis ();  
5.         StringBuffer sb =  new  StringBuffer ( "Java" );  
6.         para  ( int  i = 0 ; i < 10000 ; i ++) {  
7.             sb.append ( "Tpoint" );  
8.         }  
9.         System.out.println ( "Tiempo empleado por StringBuffer:"  + (System.currentTimeMillis () -
startTime) +  "ms" );  
10.        startTime = System.currentTimeMillis ();  
11.        StringBuilder sb2 =  new  StringBuilder ( "Java" );  
12.        para  ( int  i = 0 ; i < 10000 ; i ++) {  
13.            sb2.append ( "Tpoint" );  
14.        }  
15.        System.out.println ( "Tiempo empleado por StringBuilder:"  + (System.currentTimeMillis () -
startTime) +  "ms" );  
16.    }  
17.}  
Tiempo empleado por StringBuffer: 16 ms
Tiempo empleado por StringBuilder: 0ms

¿Cómo crear una clase inmutable?


Hay muchas clases inmutables como String, Boolean, Byte, Short, Integer, Long, Float, Double, etc. En
resumen, todas las clases contenedoras y la clase String son inmutables. También podemos crear una
clase inmutable creando una clase final que tenga miembros de datos finales como el ejemplo que se
muestra a continuación:

Ejemplo para crear una clase inmutable


En este ejemplo, hemos creado una clase final llamada Empleado. Tiene un miembro de datos final, un co
parametrizado y un método captador.

1.  Empleado público de clase final {    
2. final  String pancardNumber;  
3.   
4.  Empleado público (String pancardNumber) {  
5. este .pancardNumber = pancardNumber;  
6. }  
7.   
8. public  String getPancardNumber () {  
9. return  pancardNumber;  
10.}  
11.  
12.}  

La clase anterior es inmutable porque:

o La variable de instancia de la clase es final, es decir, no podemos cambiar su valor después de


crear un objeto.

o La clase es definitiva, por lo que no podemos crear la subclase.

o No hay métodos de establecimiento, es decir, no tenemos la opción de cambiar el valor de la


variable de instancia.

Estos puntos hacen que esta clase sea inmutable.

Método Java toString ()


Si desea representar cualquier objeto como una cadena, aparece el método toString () .

El método toString () devuelve la representación de cadena del objeto.


Si imprime cualquier objeto, el compilador de Java invoca internamente el método toString () en el
objeto. Entonces, anular el método toString (), devuelve la salida deseada, puede ser el estado de un
objeto, etc.depende de su implementación.

Ventaja del método Java toString ()


Al anular el método toString () de la clase Object, podemos devolver valores del objeto, por lo que no
necesitamos escribir mucho código.

Comprender el problema sin el método toString ()


Veamos el código simple que imprime la referencia.

1. clase  estudiante {  
2.  int  rollno;  
3.  Nombre de cadena;  
4.  Ciudad de cuerdas;  
5.   
6.  Estudiante ( int  rollno, nombre de cadena, ciudad de cadena) {  
7.  este .rollno = rollno;  
8.  este .nombre = nombre;  
9.  esta .ciudad = ciudad;  
10. }  
11.  
12. public static void  main (String args []) {    
13.   Estudiante s1 = nuevo  Estudiante ( 101 , "Raj" , "lucknow" );  
14.   Estudiante s2 = nuevo  Estudiante ( 102 , "Vijay" , "ghaziabad" );  
15.     
16.   System.out.println (s1); // el compilador escribe aquí s1.toString ()  
17.   System.out.println (s2); // el compilador escribe aquí s2.toString ()  
18. }  
19.}  
Salida: Student @ 1fee6fc
Estudiante @ 1eed786

Como puede ver en el ejemplo anterior, la impresión de s1 y s2 imprime los valores del código hash de los
quiero imprimir los valores de estos objetos. Dado que el compilador de Java llama internamente al métod
anular este método devolverá los valores especificados. Entendamos con el ejemplo que se da a continuac

Ejemplo del método toString () de Java


Ahora veamos el ejemplo real del método toString ().

1. clase  estudiante {  
2.  int  rollno;  
3.  Nombre de cadena;  
4.  Ciudad de cuerdas;  
5.   
6.  Estudiante ( int  rollno, nombre de cadena, ciudad de cadena) {  
7.  este .rollno = rollno;  
8.  este .nombre = nombre;  
9.  esta .ciudad = ciudad;  
10. }  
11.   
12. public  String toString () { // anulando el método toString ()  
13.  return  rollno + "" + nombre + "" + ciudad;  
14. }  
15. public static void  main (String args []) {    
16.   Estudiante s1 = nuevo  Estudiante ( 101 , "Raj" , "lucknow" );  
17.   Student s2=new Student(102,"Vijay","ghaziabad");  
18.     
19.   System.out.println(s1);//compiler writes here s1.toString()  
20.   System.out.println(s2);//compiler writes here s2.toString()  
21. }  
22.}  
download this example of toString method
Output:101 Raj lucknow
102 Vijay ghaziabad

StringTokenizer en Java
1. StringTokenizer

2. Métodos de StringTokenizer

3. Ejemplo de StringTokenizer

La clase java.util.StringTokenizer le permite dividir una cadena en tokens. Es una forma sencilla de


romper la cuerda.

No proporciona la posibilidad de diferenciar números, cadenas entre comillas, identificadores, etc., como
la clase StreamTokenizer. Discutiremos sobre la clase StreamTokenizer en el capítulo de E / S.

Constructores de la clase StringTokenizer

Hay 3 constructores definidos en la clase StringTokenizer.

Constructor Descripción

StringTokenizer (String str) crea StringTokenizer con una cadena especificada.


StringTokenizer (String str, crea StringTokenizer con una cadena y un delimitador especificados.
String delim)

StringTokenizer (String str, crea StringTokenizer con una cadena especificada, delimitador y retur
String delim, boolean valor devuelto es verdadero, los caracteres delimitadores se considera
returnValue) es falso, los caracteres delimitadores sirven para separar tokens.

Métodos de la clase StringTokenizer

Los 6 métodos útiles de la clase StringTokenizer son los siguientes:

Método público Descripción

booleano hasMoreTokens () comprueba si hay más tokens disponibles.

Cadena nextToken () devuelve el siguiente token del objeto StringTokenizer.

String nextToken (String delim) devuelve el siguiente token basado en el delimitador.

boolean hasMoreElements () igual que el método hasMoreTokens ().

Objeto nextElement () igual que nextToken () pero su tipo de retorno es Object.

int countTokens () devuelve el número total de tokens.

Ejemplo simple de la clase StringTokenizer


Veamos el ejemplo simple de la clase StringTokenizer que tokeniza una cadena "mi nombre es khan"
sobre la base de espacios en blanco.

1. import  java.util.StringTokenizer;  
2. public class  Simple {   
3.  public static void  main (String args []) {    
4.    StringTokenizer st =  new  StringTokenizer ( "mi nombre es khan" , "" );  
5.      while  (st.hasMoreTokens ()) {  
6.          System.out.println (st.nextToken ());  
7.      }  
8.    }  
9. }  
Salida: mi
nombre
es
kan

Ejemplo del método nextToken (String delim) de la clase


StringTokenizer
1. importar  java.util. *;  
2.   
3.  Prueba de clase pública {   
4.    public static void  main (String [] args) {    
5.        StringTokenizer st =  new  StringTokenizer ( "mi, nombre, es, khan" );  
6.         
7.       // imprimiendo el siguiente token  
8.       System.out.println ( "El siguiente token es:"  + st.nextToken ( "," ));  
9.    }      
10.}  
Salida: el siguiente token es: mi
La clase StringTokenizer está obsoleta ahora. Se recomienda utilizar el método split () de la clase
String o regex (expresión regular).

Preguntas frecuentes sobre cadenas de Java o


preguntas de entrevistas
A continuación se incluye una lista de las principales preguntas frecuentes sobre cadenas de Java
(preguntas más frecuentes) o preguntas de la entrevista. El entrevistador puede hacer estas preguntas.

1) ¿Cuántos objetos se crearán en el siguiente código?


String s1 = "punto_javat";
String s2 = "javatpoint";

Respuesta: solo uno.

2) ¿Cuál es la diferencia entre el método equals () y el operador ==?


El método equals () coincide con el contenido de las cadenas, mientras que el operador == coincide con
el objeto o la referencia de las cadenas.

3) ¿La clase String es definitiva?


Respuesta: si.

4) ¿Cómo invertir String en Java?


Aporte:
esto es javatpoint

Producción:

tnioptavaj si siht

5) ¿Cómo verificar Palindrome String en Java?


Aporte:

nitin

Producción:

cierto

Aporte:

jatin

Producción:

falso

6) ¿Escribe un programa java para poner en mayúscula cada palabra en


una cadena?
Aporte:

esto es javatpoint

Producción:

Esto es Javatpoint

7) ¿Escribir un programa Java para invertir cada palabra en una cadena?


Aporte:

esto es javatpoint

Producción:

siht si tnioptavaj

8) ¿Escribe un programa Java para TOCAR cada palabra en una cadena?


Aporte:

esto es javatpoint

Producción:

ESTE ES JAVATPOINT

9) ¿Escribir un programa java para cambiar cada palabra en una cadena?


Aporte:

esto es javatpoint
Producción:

sIHT sI tNIOPTAVAJ

10) ¿Cuál es la diferencia entre String y StringBuffer en Java?


11) ¿Cuál es la diferencia entre StringBuffer y StringBuilder en Java?
12) ¿Qué significa el método intern () en Java?
13) ¿Cómo convertir String a int en Java?
14) ¿Cómo convertir int a String en Java?
15) ¿Cómo convertir String a Date en Java?
16) ¿Cómo optimizar la creación de cadenas de Java?
17) Programa Java para verificar si dos cadenas son anagramas o no
18) Programa Java para encontrar el porcentaje de mayúsculas,
minúsculas, dígitos y caracteres especiales en una cadena
19) Cómo convertir String a Integer y Integer a String en Java
20) Programa Java para encontrar caracteres duplicados en una cadena
21) Programa Java para demostrar que las cadenas son inmutables en
Java
22) Programa Java para eliminar todos los espacios en blanco de una
cadena
23) Programa Java para verificar si una cadena es una rotación de otra
24) Programa Java para contar el número de palabras en una cadena
25) Programa Java para revertir una Cadena dada preservando la
posición del espacio
26) Cómo intercambiar dos variables de cadena sin una tercera variable
27) Cómo eliminar un carácter en particular de una cadena
Programas Java | Ejemplos de programación Java
Los programas Java se preguntan con frecuencia en la entrevista. Estos programas se pueden solicitar
desde declaraciones de control, matrices , cadenas , oops , etc. Los programas básicos de Java como
series de fibonacci, números primos, números factoriales y números palíndromos se preguntan con
frecuencia en las entrevistas y exámenes. Todos estos programas se dan con el máximo de ejemplos y
resultados. Si es nuevo en la programación de Java, le recomendamos que lea primero nuestro tutorial
de Java . Veamos la lista de programas Java.

o Programas básicos de Java

o Programas numéricos de Java

o Programas de matriz de Java

o Programas de Java Matrix

o Programas de cadenas de Java

o Programas de búsqueda y clasificación de Java

o Programas de conversión de Java


o Programas de patrones

o Programas de listas vinculadas individualmente

o Programas de lista enlazada circular

o Programas de lista doblemente enlazados

o Programas de árboles

Programas básicos de Java


1) Serie Fibonacci en Java

2) Programa de números primos en Java

3) Programa Palindrome en Java

4) Programa factorial en Java

5) Número Armstrong en Java

6) Cómo generar números aleatorios en Java

7) Cómo imprimir patrones en Java

8) Cómo comparar dos objetos en Java

9) Cómo crear objetos en Java

10) Cómo imprimir un valor ASCII en Java

Programas numéricos de Java


1) Cómo invertir un número en Java

2) Programa Java para convertir Number a Word

3) Programa de números automórficos en Java

4) Número Peterson en Java

5) Sunny Number en Java

6) Número de tecnología en Java

7) Número fascinante en Java

8) Número de Keith en Java

9) Número de neón en Java


10) Número de espía en Java

11) programa de cajero automático Java

12) Número autobiográfico en Java

13) Número Emirp en Java

14) Número esfénico en Java

15) Buzz Number Java

16) Número de pato Java

17) Número malvado Java

18) Número ISBN Java

19) Número de Krishnamurthy Java

20) Número hinchable en Java

21) Número misterioso en Java

22) Número de Smith en Java

23) Número de Strontio en Java

24) Número de xilema y floema en Java

25) n-ésimo número primo Java

26) Programa Java para mostrar números primos alternativos

27) Programa Java para encontrar la raíz cuadrada de un número sin el método sqrt

28) Programa Java para intercambiar dos números usando el operador bit a bit

29) Programa Java para encontrar GCD de dos números

30) Programa Java para encontrar el mayor de tres números

31) Programa Java para encontrar el menor de tres números usando el operador ternario

32) Programa Java para verificar si un número es positivo o negativo

33) Programa Java para verificar si un número dado es cuadrado perfecto

34) Programa Java para mostrar números pares del 1 al 100

35) Programa Java para mostrar números impares del 1 al 100


36) Programa Java para encontrar la suma de números naturales

Programas de matriz de Java


1) Programa Java para copiar todos los elementos de una matriz en otra matriz

2) Programa Java para encontrar la frecuencia de cada elemento en la matriz

3) Programa Java para girar a la izquierda los elementos de una matriz

4) Programa Java para imprimir los elementos duplicados de una matriz

5) Programa Java para imprimir los elementos de una matriz.

6) Programa Java para imprimir los elementos de una matriz en orden inverso

7) Programa Java para imprimir los elementos de una matriz presente en una posición pareja

8) Programa Java para imprimir los elementos de una matriz presente en una posición impar

9) Programa Java para imprimir el elemento más grande en una matriz

10) Programa Java para imprimir el elemento más pequeño en una matriz

11) Programa Java para imprimir el número de elementos presentes en una matriz.

12) Programa Java para imprimir la suma de todos los elementos de la matriz

13) Programa Java para rotar a la derecha los elementos de una matriz

14) Programa Java para ordenar los elementos de una matriz en orden ascendente

15) Programa Java para ordenar los elementos de una matriz en orden descendente

16) Programa Java para encontrar el tercer número más grande en una matriz

17) Programa Java para encontrar el segundo número más grande en una matriz

18) Programa Java para encontrar el número más grande en una matriz

19) Java para programar Encuentra el segundo número más pequeño en una matriz

20) Programa Java para encontrar el número más pequeño en una matriz

21) Programa Java para eliminar elementos duplicados en una matriz

22) Programa Java para imprimir números pares e impares desde una matriz

23) Cómo ordenar una matriz en Java


Programas de Java Matrix
1) Programas Java Matrix

2) Programa Java para agregar dos matrices

3) Programa Java para multiplicar dos matrices

4) Programa Java para restar las dos matrices

5) Programa Java para determinar si dos matrices son iguales

6) Programa Java para mostrar la matriz triangular inferior

7) Programa Java para mostrar la matriz triangular superior

8) Programa Java para encontrar la frecuencia de números pares e impares en la matriz dada

9) Programa Java para encontrar el producto de dos matrices

10) Programa Java para encontrar la suma de cada fila y cada columna de una matriz

11) Programa Java para encontrar la transposición de una matriz dada

12) Programa Java para determinar si una matriz dada es una matriz de identidad

13) Programa Java para determinar si una matriz dada es una matriz dispersa

14) Programa Java para transponer matriz

Programas de cadenas de Java


1) Programa Java para contar el número total de caracteres en una cadena

2) Programa Java para contar el número total de caracteres en una cadena 2

3) Programa Java para contar el número total de caracteres de puntuación que existe en una
cadena

4) Programa Java para contar el número total de vocales y consonantes en una cadena

5) Programa Java para determinar si dos cadenas son el anagrama

6) Programa Java para dividir una cadena en 'N' partes iguales.

7) Programa Java para encontrar todos los subconjuntos de una cadena

8) Programa Java para encontrar la secuencia repetida más larga en una cadena
9) Programa Java para encontrar todas las permutaciones de una cadena

10) Programa Java para eliminar todos los espacios en blanco de una cadena

11) Programa Java para reemplazar caracteres en minúsculas con mayúsculas y viceversa

12) Programa Java para reemplazar los espacios de una cadena con un carácter específico

13) Programa Java para determinar si una cadena dada es palíndromo

14) Programa Java para determinar si una cadena es una rotación de otra

15) Programa Java para encontrar caracteres máximos y mínimos en una cadena

16) Programa Java para encontrar el reverso de la cadena

17) programa Java para encontrar los caracteres duplicados en una cadena

18) programa Java para encontrar las palabras duplicadas en una cadena

19) Programa Java para encontrar la frecuencia de caracteres

20) Programa Java para encontrar la palabra más grande y más pequeña en una cadena

21) Programa Java para encontrar la palabra más repetida en un archivo de texto

22) Programa Java para encontrar el número de palabras en el archivo de texto dado

23) Programa Java para separar los caracteres individuales de una cadena

24) Programa Java para intercambiar dos variables de cadena sin usar una tercera variable o
variable temporal.

25) Programa Java para imprimir la palabra palíndromo más pequeña y más grande posible en
una cadena determinada

26) Cadena inversa en Java Word por Word

27) Cadena de reserva sin función reverse ()

Programas de búsqueda y clasificación de Java


1) Búsqueda lineal en Java

2) Búsqueda binaria en Java

3) Clasificación de burbujas en Java

4) Orden de selección en Java


5) Orden de inserción en Java

Programas de conversión de Java


1) Cómo convertir String a int en Java

2) Cómo convertir int a String en Java

3) Cómo convertir String a largo en Java

4) Cómo convertir long a String en Java

5) Cómo convertir String en flotante en Java

6) Cómo convertir float a String en Java

7) Cómo convertir String a doble en Java

8) Cómo convertir double a String en Java

9) Cómo convertir String a Date en Java

10) Cómo convertir Date a String en Java

11) Cómo convertir String a char en Java

12) Cómo convertir char a String en Java

13) Cómo convertir una cadena en un objeto en Java

14) Cómo convertir un objeto a una cadena en Java

15) Cómo convertir int a long en Java

16) Cómo convertir long a int en Java

17) Cómo convertir int a double en Java

18) Cómo convertir double a int en Java

19) Cómo convertir char a int en Java

20) Cómo convertir int a char en Java

21) Cómo convertir String a booleano en Java

22) Cómo convertir booleano a cadena en Java

23) Cómo convertir la fecha a la marca de tiempo en Java


24) Cómo convertir la marca de tiempo a la fecha en Java

25) Cómo convertir binario a decimal en Java

26) Cómo convertir decimal a binario en Java

27) Cómo convertir hexadecimal a decimal en Java

28) Cómo convertir decimal a hexadecimal en Java

29) Cómo convertir Octal a Decimal en Java

30) Cómo convertir decimal a octal en Java

Programas de patrones de Java


1) Programa Java para imprimir el siguiente patrón en espiral en la consola

2) programa Java para imprimir el siguiente patrón

3) Programa Java para imprimir el siguiente patrón 2

4) Programa Java para imprimir el siguiente patrón 3

5) Programa Java para imprimir el siguiente patrón 4

6) Programa Java para imprimir el siguiente patrón 5

7) Programa Java para imprimir el siguiente patrón en la consola

8) Programa Java para imprimir el siguiente patrón en la consola 2

9) Programa Java para imprimir el siguiente patrón en la consola 3

10) Programa Java para imprimir el siguiente patrón en la consola 4

11) Programa Java para imprimir el siguiente patrón en la consola 5

12) Programa Java para imprimir el siguiente patrón en la consola 6

13) Programa Java para imprimir el siguiente patrón en la consola 7

14) Programa Java para imprimir el siguiente patrón en la consola 8

15) Programa Java para imprimir el siguiente patrón en la consola 9

16) Programa Java para imprimir el siguiente patrón en la consola 10

17) Programa Java para imprimir el siguiente patrón en la consola 11


18) Programa Java para imprimir el siguiente patrón en la consola 12

Programas Java de lista única enlazada


1) Ejemplos de listas vinculadas individualmente en Java

2) Programa Java para crear y mostrar una lista enlazada individualmente

3) Programa Java para crear una lista enlazada individualmente de n nodos y contar el número
de nodos

4) Programa Java para crear una lista enlazada de n nodos y mostrarla en orden inverso

5) Programa Java para eliminar un nodo del principio de la lista enlazada individualmente

6) Programa Java para eliminar un nodo del medio de la lista enlazada individualmente

7) Programa Java para eliminar un nodo del final de la lista enlazada individualmente

8) Programa Java para determinar si una lista enlazada individualmente es el palíndromo

9) Programa Java para encontrar el nodo de valor máximo y mínimo de una lista vinculada

10) Programa Java para insertar un nuevo nodo en el medio de la lista enlazada individualmente

11) Programa Java para insertar un nuevo nodo al comienzo de la lista enlazada individualmente

12) Programa Java para insertar un nuevo nodo al final de la lista enlazada individualmente

13) Programa Java para eliminar elementos duplicados de una lista enlazada individualmente

14) Programa Java para buscar un elemento en una lista enlazada individualmente

Programas de lista enlazada circular de Java


1) Programa Java para crear y mostrar una lista enlazada circular

2) Programa Java para crear una lista enlazada circular de N nodos y contar el número de nodos

3) Programa Java para crear una lista enlazada circular de n nodos y mostrarla en orden inverso

4) Programa Java para eliminar un nodo del principio de la lista enlazada circular

5) Programa Java para eliminar un nodo del final de la lista enlazada circular

6) Programa Java para eliminar un nodo del medio de la lista enlazada circular
7) Programa Java para encontrar el nodo de valor máximo y mínimo de una lista enlazada
circular

8) Programa Java para insertar un nuevo nodo al comienzo de la Circular Linked List

9) Programa Java para insertar un nuevo nodo al final de la Lista Enlazada Circular

10) Programa Java para insertar un nuevo nodo en el medio de la Lista Enlazada Circular

11) Programa Java para eliminar elementos duplicados de una lista enlazada circular

12) programa Java para buscar un elemento en una lista enlazada circular

13) Programa Java para ordenar los elementos de la Circular Linked List

Programas Java de lista doblemente enlazados


1) Programa Java para convertir un árbol binario dado en una lista doblemente enlazada

2) Programa Java para crear una lista doblemente enlazada a partir de un árbol ternario

3) Programa Java para crear una lista doblemente enlazada de n nodos y contar el número de
nodos

4) Programa Java para crear una lista doblemente enlazada de n nodos y mostrarla en orden
inverso

5) Programa Java para crear y mostrar una lista doblemente enlazada

6) Programa Java para eliminar un nuevo nodo desde el principio de la lista doblemente
enlazada

7) Programa Java para eliminar un nuevo nodo del final de la lista doblemente enlazada

8) Programa Java para eliminar un nuevo nodo del medio de la lista doblemente enlazada

9) Programa Java para encontrar el nodo de valor máximo y mínimo de una lista doblemente
enlazada

10) Programa Java para insertar un nuevo nodo al comienzo de la lista Doblemente Vinculada

10) Programa Java para insertar un nuevo nodo al final de la Lista Doblemente Vinculada

12) Programa Java para insertar un nuevo nodo en el medio de la Lista Doblemente Vinculada

13) Programa Java para eliminar elementos duplicados de una lista doblemente enlazada

14) Programa Java para rotar lista doblemente enlazada por N nodos


15) Programa Java para buscar un elemento en una lista doblemente enlazada

16) Programa Java para ordenar los elementos de la lista doblemente enlazada

Programas de árbol Java


1) Programa Java para calcular la diferencia entre la suma del nivel impar y los nodos de nivel
par de un árbol binario

2) Programa Java para construir un árbol de búsqueda binario y realizar la eliminación y el


recorrido en orden

3) Programa Java para convertir Binary Tree en Binary Search Tree

4) programa Java para determinar si todas las hojas están al mismo nivel

5) programa Java para determinar si dos árboles son idénticos

6) programa Java para encontrar el ancho máximo de un árbol binario

7) programa Java para encontrar el elemento más grande en un árbol binario

8) programa Java para encontrar la profundidad o altura máxima de un árbol

9) Programa Java para encontrar los nodos que están a la distancia máxima en un árbol binario

10) programa Java para encontrar el elemento más pequeño en un árbol

11) programa Java para encontrar la suma de todos los nodos de un árbol binario

12) Programa Java para encontrar el número total de posibles árboles de búsqueda binaria con
teclas N

13) Programa Java para implementar Binary Tree usando la Linked List

14) programa Java para buscar un nodo en un árbol binario

También podría gustarte