0% encontró este documento útil (0 votos)
0 vistas70 páginas

Java

Java es un lenguaje de programación versátil y popular, utilizado en diversas aplicaciones como móviles, web y juegos, con más de 3 mil millones de dispositivos que lo utilizan. Su facilidad de aprendizaje, seguridad y gran demanda en el mercado laboral lo hacen atractivo para los desarrolladores. El documento también cubre aspectos básicos de la sintaxis de Java, incluyendo la declaración de variables, tipos de datos y la importancia de los comentarios en el código.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como ODT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
0 vistas70 páginas

Java

Java es un lenguaje de programación versátil y popular, utilizado en diversas aplicaciones como móviles, web y juegos, con más de 3 mil millones de dispositivos que lo utilizan. Su facilidad de aprendizaje, seguridad y gran demanda en el mercado laboral lo hacen atractivo para los desarrolladores. El documento también cubre aspectos básicos de la sintaxis de Java, incluyendo la declaración de variables, tipos de datos y la importancia de los comentarios en el código.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como ODT, PDF, TXT o lee en línea desde Scribd

Introducción a Java

¿Qué es Java?
Java es un lenguaje de programación popular y potente, creado en 1995.

Es propiedad de Oracle, y más de 3 mil millones de dispositivos utilizan Java.

Se utiliza para:

Aplicaciones móviles (especialmente aplicaciones para Android)


Aplicaciones de escritorio
Aplicaciones web
Servidores web y servidores de aplicaciones
Juegos
Conexión a la base de datos
¡Y mucho, mucho más!

¿Por qué usar Java?


Java funciona en diferentes plataformas (Windows, Mac, Linux, Raspberry Pi, etc.).
Es uno de los lenguajes de programación más populares del mundo.
Tiene una gran demanda en el mercado laboral actual.
Es fácil de aprender y sencillo de usar.
Es de código abierto y gratuito.
Es seguro, rápido y potente.
Cuenta con un enorme apoyo de la comunidad (decenas de millones de desarrolladores).
Java es un lenguaje orientado a objetos que proporciona una estructura clara a los
programas y permite reutilizar el código, reduciendo los costos de desarrollo.
Como Java es similar a C++ y C# , facilita que los programadores cambien a Java o
viceversa.

Sintaxis de Java
En el capítulo anterior, creamos un archivo Java llamado [Link], y utilizamos el siguiente
código para imprimir "Hola Mundo" en la pantalla:

Ejemplo explicado
Cada línea de código que se ejecuta en Java debe estar dentro de un class. El nombre de la clase
siempre debe comenzar con una letra mayúscula. En nuestro ejemplo, nombramos la clase Main .

Nota: Java distingue entre mayúsculas y minúsculas. MyClassy myclassse tratarían como dos
nombres completamente diferentes.

El nombre del archivo Java debe coincidir con el nombre de la clase. Por lo tanto, si tu clase se
llama Main, el archivo debe guardarse como [Link]. Esto se debe a que Java utiliza el nombre
de la clase para encontrar y ejecutar tu código. Si los nombres no coinciden, Java generará un
error y el programa no se ejecutará.

Al guardar el archivo, guárdelo con el nombre de la clase y agréguelo .javaal final del nombre del
archivo. Para ejecutar el ejemplo anterior en su computadora, asegúrese de que Java esté
correctamente instalado: vaya al capítulo "Primeros pasos" para obtener instrucciones sobre cómo
instalar Java. La salida debería ser:
El método principal
Este main()método es necesario en todos los programas Java. Es donde comienza la ejecución del
programa:

Cualquier código que se coloque dentro del main()método se ejecutará.

Por ahora, no necesitas entender las palabras clave public, static, y void. Aprenderás sobre
ellas más adelante en este tutorial. Solo recuerda: main()es el punto de partida de todo programa
Java.

[Link]()
Dentro del main()método, podemos usarlo println() para imprimir una línea de texto en la
pantalla:

Nota: Las llaves {}marcan el principio y el final de un bloque de código.

[Link]()Puede parecer largo, pero puedes pensar en ello como un solo comando
que significa: "Envía este texto a la pantalla".

Aquí te explicamos qué significa cada parte (más adelante conocerás los detalles):

Systemes una clase Java integrada.


outes miembro de System, abreviatura de "output".
println()es un método, abreviatura de "print line" (línea de impresión).
Por último, recuerda que cada instrucción de Java debe terminar con un punto y coma ( ;).

Declaraciones
Un programa informático es una lista de "instrucciones" que deben ser "ejecutadas" por un
ordenador.

En un lenguaje de programación, estas instrucciones de programación se denominan sentencias .

La siguiente instrucción "instruye" al compilador para que imprima el texto "¡Java es divertido!" en
la pantalla:

Es importante que finalices la frase con un punto y coma ;.

Si olvida el punto y coma ( ;), se producirá un error y el programa no se ejecutará:

Consejo: Puedes pensar en una instrucción como en una oración en inglés. Así como las oraciones
terminan con un punto ., las instrucciones de Java terminan con un punto y coma ;.

Muchas afirmaciones
La mayoría de los programas Java contienen muchas instrucciones.

Ejemplo explicado
Del ejemplo anterior, tenemos tres afirmaciones:

[Link]("Hello World!");
[Link]("Have a good day!");
[Link]("Learning Java is fun!");
Primero se ejecuta la primera instrucción (imprime "¡Hola Mundo!" en la pantalla).
Luego se ejecuta la segunda instrucción (imprime "¡Que tengas un buen día!" en la pantalla).
Y finalmente, se ejecuta la tercera instrucción (imprime "¡Aprender Java es divertido!" en la
pantalla).

Aprenderás más sobre las sentencias al leer este tutorial. Por ahora, recuerda terminarlas siempre
con un punto y coma para evitar errores.

Desafío: Crear un programa Java sencillo


Pon a prueba tus conocimientos de sintaxis Java completando un pequeño reto de programación.

Instrucciones

Dentro main(), complete el siguiente paso:

 Imprimir "¡Hola, Java!"


Nota: Recuerde terminar cada instrucción con un punto y coma.

Imprimir texto
En el capítulo anterior aprendiste que puedes usar este println()método para mostrar valores o
imprimir texto en Java:

Puedes añadir tantos println()métodos como quieras. Ten en cuenta que se añadirá una nueva
línea por cada método:

Comillas dobles
El texto debe ir entre comillas dobles "".

Si olvidas las comillas dobles, se produce un error:

El método Print()
También existe un print()método similar a println().

La única diferencia es que no inserta una nueva línea al final de la salida:

Tenga en cuenta que agregamos un espacio adicional (después de "¡Hola Mundo!" en el ejemplo
anterior) para una mejor legibilidad.

En este tutorial, solo utilizaremos println() ya que facilita la lectura del código.

Imprimir números
También puedes utilizar este println()método para imprimir números.

Sin embargo, a diferencia del texto, no colocamos números entre comillas dobles:

También puedes realizar cálculos matemáticos dentro del println()método:

Desafío: Imprime tu nombre y edad.


Pon a prueba tu comprensión de la salida de Java completando un pequeño desafío de
programación.
Instrucciones

En el interior main(), complete los siguientes pasos:

1. Utilice print()o println()para imprimir su nombre

2. Utilice otro print()o println()para imprimir su edad

Nota: Finalice cada instrucción con un punto y coma ( ;).

Comentarios de Java
Los comentarios pueden utilizarse para explicar el código Java y hacerlo más legible. También
pueden usarse para impedir la ejecución al probar código alternativo.

Comentarios de una sola línea


Los comentarios de una sola línea comienzan con dos barras inclinadas ( //).

Cualquier texto que se encuentre entre //y el final de la línea es ignorado por Java (no se
ejecutará).

Este ejemplo utiliza un comentario de una sola línea antes de una línea de código:

Comentarios multilínea en Java


Los comentarios de varias líneas comienzan con /*y terminan con */.

Cualquier texto entre /*y */será ignorado por Java.

¿Comentarios de una sola línea o de varias líneas?


Depende de ti cuál usar. Normalmente, usamos //para comentarios cortos y /* */para
comentarios más largos.

Variables de Java
Las variables son contenedores para almacenar valores de datos.

En Java, existen diferentes tipos de variables, por ejemplo:

String- Almacena texto, como "Hola". Los valores de cadena están entre comillas dobles.
int- Almacena números enteros, sin decimales, como 123 o -123.
float- Almacena números de punto flotante, con decimales, como 19.99 o -19.99.
char- Almacena caracteres individuales, como 'a' o 'B'. Los valores de los caracteres se
encierran entre comillas simples.
boolean- Almacena valores con dos estados: verdadero o falso

Declarar (crear) variables

Para crear una variable en Java, necesitas:

Elige un tipo (como into String)


Dale un nombre a la variable (como x, age, o name).
Opcionalmente, asígnele un valor usando=

Ejemplo
Crea una variable llamada nombre de tipo Stringy asígnale el valor " John ".
Luego la usamos println()para imprimir la variable nombre :

Variables finales
Si no quieres que otros (o tú mismo) sobrescriban los valores existentes, usa la finalpalabra clave
(esto declarará la variable como "final" o "constante", lo que significa inmutable y de solo lectura):

Otros tipos
Una demostración de cómo declarar variables de otros tipos:

int myNum = 5;
float myFloatNum = 5.99f;
char myLetter = 'D';
boolean myBool = true;
String myText = "Hello";

Variables de visualización
Este println()método se utiliza a menudo para mostrar variables.

Para combinar texto y una variable, utilice el +carácter:

En Java, el +símbolo tiene dos significados:

Para texto (cadenas), las une (lo que se denomina concatenación ).


Para los números, suma los valores.

Para valores numéricos, el +carácter funciona como un operador matemático (nótese que aquí
usamos intvariables (enteras)):

Mezclando texto y números


Tenga cuidado al combinar texto y números en la misma línea de código. Sin paréntesis, Java
tratará los números como texto después de la primera cadena:

Identificadores
Todas las variables de Java deben identificarse con nombres únicos .

Estos nombres únicos se denominan identificadores .

Los identificadores pueden ser nombres cortos (como x e y) o nombres más descriptivos (edad,
suma, volumen total).

Nota: Se recomienda utilizar nombres descriptivos para crear código comprensible y fácil de
mantener:

Las reglas generales para nombrar variables son:

Los nombres pueden contener letras, dígitos, guiones bajos y signos de dólar.
Los nombres deben comenzar con una letra.
Los nombres deben comenzar con una letra minúscula y no pueden contener espacios en
blanco.
Los nombres también pueden comenzar con $ y _
Los nombres distinguen entre mayúsculas y minúsculas ("myVar" y "myvar" son variables
diferentes).
Las palabras reservadas (como las palabras clave de Java, por ejemplo into boolean) no
se pueden usar como nombres

Constantes (palabra clave final)


Cuando no quieras que cambie el valor de una variable, usa la finalpalabra clave.

Una variable declarada con finalse convierte en una constante , lo que significa que es
inmutable y de solo lectura:

¿Cuándo usar la versión final?


Debes declarar las variables como fijas finalcuando sus valores nunca deban cambiar. Por
ejemplo, el número de minutos en una hora o tu año de nacimiento:

Nota: Por convención, las variables finales en Java suelen escribirse en mayúsculas (por
ejemplo, BIRTHYEAR). No es obligatorio, pero resulta útil para la legibilidad del código y es común
entre muchos programadores.

Ejemplos de la vida real


A menudo, en nuestros ejemplos, simplificamos los nombres de las variables para que coincidan
con su tipo de dato (myInt o myNum para inttipos, myChar para chartipos, etc.). Esto se hace
para evitar confusiones.

Sin embargo, como ejemplo práctico del uso de variables, hemos creado un programa que
almacena diferentes datos sobre un estudiante universitario:

Desafío: Imprimir nombre y edad con variables


Pon a prueba tus conocimientos sobre variables en Java completando un pequeño ejercicio de
programación.

Instrucciones

En el interior main(), complete los siguientes pasos:

1. Crea una Stringvariable llamada namey asígnale tu nombre.

2. Crea una intvariable con un nombre agey asígnale tu edad.

3. Imprimirname

4. Imprimirage
Nota: Recuerde usar punto y coma.

Tipos de datos de Java


Como se explicó en el capítulo anterior, una variable en Java debe ser de un tipo de dato
específico:

int myNum = 5; // Integer (whole number)


float myFloatNum = 5.99f; // Floating point number
char myLetter = 'D'; // Character
boolean myBool = true; // Boolean
String myText = "Hello"; // String
Los tipos de datos se dividen en dos grupos:

Tipos de datos primitivos: incluye byte, short, int, long, float, double, booleanychar
StringTipos de datos no primitivos , como matrices y clases (aprenderás más sobre estos
en un capítulo posterior).

Tipos de datos primitivos


Un tipo de dato primitivo especifica el tipo de una variable y el tipo de valores que puede
contener.

En Java existen ocho tipos de datos primitivos:

Tipo de datos Descripción


byte Almacena números enteros desde -128 hasta 127.
short Almacena números enteros desde -32.768 hasta 32.767.
int Almacena números enteros desde -[Link] hasta [Link].
long Almacena números enteros desde -[Link].854.775.808 hasta
[Link].854.775.807
float Almacena números fraccionarios. Suficiente para almacenar de 6 a 7 dígitos
decimales.
double Almacena números fraccionarios. Suficiente para almacenar de 15 a 16
dígitos decimales.
boolean Almacena valores verdaderos o falsos.
char Almacena un solo carácter/letra o valores ASCII

Nota: Esta regla hace que Java sea más seguro, ya que el compilador te detendrá si intentas
mezclar tipos por error.

Si realmente necesita cambiar entre tipos, debe utilizar métodos de conversión o conversión de
tipos (por ejemplo, convertir un inten un double).

Números
Los tipos de números primitivos se dividen en dos grupos:

Los tipos enteros almacenan números enteros, positivos o negativos (como 123 o -456), sin
decimales. Los tipos válidos son byte, short, int y long. El tipo que debe usar depende del valor
numérico.

Los tipos de punto flotante representan números con una parte fraccionaria, que contienen
uno o más decimales. Hay dos tipos: floaty double.

Aunque en Java existen muchos tipos numéricos, los más utilizados son int(para números
enteros) y double(para números de coma flotante). Sin embargo, los describiremos todos a
medida que continúe leyendo.
Tipos de enteros
Byte
Este bytetipo de datos puede almacenar números enteros desde -128 hasta 127. Esto se puede
usar en lugar de intotros tipos de enteros para ahorrar memoria cuando se tiene la certeza de
que el valor estará entre -128 y 127:

Corto
Este shorttipo de datos puede almacenar números enteros desde -32768 hasta 32767:

Int
Este inttipo de dato puede almacenar números enteros desde -2147483648 hasta
2147483647. En general, y en este tutorial, este intes el tipo de dato preferido cuando creamos
variables con un valor numérico.

Largo
Este longtipo de dato puede almacenar números enteros desde -9223372036854775808 hasta
9223372036854775807. Se utiliza cuando un entero no es lo suficientemente grande para
almacenar el valor. Tenga en cuenta que debe terminar el valor con una "L".

Tipos de punto flotante


Siempre que necesite un número con decimales, como 9,99 o 3,14515, debe utilizar un tipo de
dato de coma flotante.

Los tipos de datos floaty doublepueden almacenar números fraccionarios. Tenga en cuenta que
debe terminar el valor con una "f" para números de coma flotante y una "d" para números de
doble precisión:

¿Usar floato double?

La precisión de un valor de punto flotante indica cuántos dígitos puede tener después del punto
decimal. La precisión de un número entero floates de solo 6 o 7 dígitos decimales, mientras
que doublelas variables tienen una precisión de aproximadamente 16 dígitos.

Por lo tanto, es más seguro utilizarlo doublepara la mayoría de los cálculos.

Números científicos
Un número de punto flotante también puede ser un número científico con una "e" para indicar la
potencia de 10:

Tipos booleanos
Muy a menudo en programación, necesitarás un tipo de dato que solo puede tener uno de dos
valores, como por ejemplo:

•SÍ / NO
•ENCENDIDO / APAGADO
•VERDADERO / FALSO

Para ello, Java dispone de un booleantipo de dato que solo puede tomar los valores trueo false:

Los valores booleanos se utilizan principalmente para pruebas condicionales.


Personajes
Este chartipo de dato se utiliza para almacenar un solo carácter. El carácter debe ir entre comillas
simples, como 'A' o 'c':

Como alternativa, si está familiarizado con los valores ASCII, puede utilizarlos para mostrar ciertos
caracteres:
Consejo: Puede encontrar una lista de todos los valores ASCII en nuestra Tabla de Referencia
ASCII .
Instrumentos de cuerda

Este Stringtipo de datos se utiliza para almacenar una secuencia de caracteres (texto). Los
valores de cadena deben ir entre comillas dobles:

El tipo String se usa e integra tanto en Java que algunos lo llaman "el noveno tipo especial".

En Java, una cadena de caracteres (String) es un tipo de dato no primitivo , ya que hace
referencia a un objeto. El objeto String tiene métodos que se utilizan para realizar ciertas
operaciones con cadenas. No te preocupes si aún no entiendes el término "objeto" .
Aprenderemos más sobre cadenas y objetos en un capítulo posterior.

Tipos de datos no primitivos


Los tipos de datos no primitivos se denominan tipos de referencia porque hacen referencia a
objetos.

Las principales diferencias entre los tipos de datos primitivos y no primitivos son:

•Los tipos primitivos en Java están predefinidos e integrados en el lenguaje, mientras que
los tipos no primitivos son creados por el programador (excepto String).
•Los tipos no primitivos pueden utilizarse para llamar a métodos que realizan ciertas
operaciones, mientras que los tipos primitivos no.
•Los tipos primitivos comienzan con una letra minúscula (como int), mientras que los tipos
no primitivos suelen comenzar con una letra mayúscula (como String).
•Los tipos primitivos siempre tienen un valor, mientras que los tipos no primitivos pueden
ser null.

Ejemplos de tipos no primitivos son las cadenas de caracteres , los arreglos , las clases , etc.
Aprenderás más sobre ellos en un capítulo posterior.

La palabra clave var


Esta varpalabra clave se introdujo en Java 10 (lanzado en 2018).

Esta varpalabra clave permite que el compilador detecte automáticamente el tipo de una variable
en función del valor que se le asigne.

Esto te ayuda a escribir código más limpio y a evitar la repetición de tipos, especialmente para
tipos largos o complejos.

Por ejemplo , en lugar de escribir int x = 5;, puedes escribir: var x = 5;

Ejemplo con diferentes tipos


Aquí hay algunos ejemplos que muestran cómo varse puede usar para crear variables de
diferentes tipos, según los valores que les asigne:

var myNum = 5; // int


var myDouble = 9.98; // double
var myChar = 'D'; // char
var myBoolean = true; // boolean
var myString = "Hello"; // String

Notas importantes
1. varSolo funciona cuando se asigna un valor al mismo tiempo (no se puede declarar var x;sin
asignar un valor):

2. Una vez elegido el tipo, este permanece igual. Vea el ejemplo a continuación:

Cuándo usar var


Para variables simples, suele ser más claro escribir el tipo directamente ( int, double, char, etc.).

Pero para tipos más complejos, como ArrayListo HashMap, varpuede hacer que el código sea más
corto y fácil de leer:

// Without var
ArrayList<String> cars = new ArrayList<String>();

// With var
var cars = new ArrayList<String>();

No te preocupes si el ejemplo anterior parece un poco avanzado; aprenderás más sobre estos
tipos complejos más adelante. Por ahora, recuerda que varse introdujo en Java 10, y si trabajas
con otros, es posible que lo veas en su código, así que es bueno saber qué significa.
Desafío: Crear un boletín de calificaciones para estudiantes

Pon a prueba tus conocimientos sobre los tipos de datos de Java completando un pequeño
ejercicio de programación.

Instrucciones

En el interior main(), complete los siguientes pasos:

1. Declara una intvariable con nombre studentIDy asígnale un valor.

2. Declara una variable doublecon nombre scorey asígnale un valor (usa un número decimal).

3. Declara una variable charcon nombre gradey asígnale un solo carácter (entre comillas
simples).

4. Imprime los tres valores.

Nota: Recuerde usar punto y coma.

Conversión de tipos en Java


La conversión de tipos significa convertir un tipo de dato en otro. Por ejemplo, convertir un inten
un double.

En Java, existen dos tipos principales de conversión de tipos:


•Conversión a mayor tamaño (automática): conversión de un tipo de letra más pequeño
a un tamaño de letra más grande
byte-> short-> char-> int-> long-> float->double

•Reducción de tamaño de letra (manual): conversión de un tipo de letra más grande a


un tamaño de letra más pequeño
double-> float-> long-> int-> char-> short->byte

Fundición de mayor tamaño


El ensanchamiento de la conversión se realiza automáticamente al pasar un tipo de dato de menor
tamaño a un tipo de dato de mayor tamaño.

Esto funciona porque no hay riesgo de perder información. Por ejemplo, un int valor puede caber
de forma segura dentro de un double:

Fundición estrecha
La conversión a tipo restrictivo debe realizarse manualmente colocando el tipo entre
paréntesis ()delante del valor.

Esto es necesario porque la reducción puede provocar la pérdida de datos (por ejemplo, la
eliminación de decimales al convertir un doublea un int):

Ejemplo de la vida real


Aquí tenemos un ejemplo real de tipado de datos. Calculamos el porcentaje de la puntuación de un
usuario en relación con la puntuación máxima en un juego.

Utilizamos la conversión de tipos para asegurarnos de que el resultado sea un valor de punto
flotante , en lugar de un número entero:

Incrementar y decrementar
Incrementar y decrementar son operaciones muy comunes en programación, especialmente al
trabajar con contadores, bucles y matrices (sobre las que aprenderás más en capítulos
posteriores).

El ++operador incrementa un valor en 1, mientras que el --operador lo disminuye en 1:

A veces, es posible que incrementes y decrementes la misma variable. Recuerda que si


incrementas un valor y luego lo disminuyes, subirá en uno y luego bajará en uno, volviendo al
valor inicial.

Ejemplo de la vida real: Contar personas

Imagina que estás creando un programa para contar cuántas personas entran y salen de una
habitación. Puedes usar ++para incrementar el contador cuando alguien entra y --para disminuirlo
cuando alguien sale:

Ejemplo de la vida real: Seguimiento de ahorros


Los operadores de asignación también se pueden usar en situaciones reales. Por ejemplo, puede
usar el +=operador para llevar un registro de los ahorros cuando agrega dinero a una cuenta:

Operadores de comparación
Los operadores de comparación se utilizan para comparar dos valores (o variables). Esto es
importante en programación, ya que nos ayuda a encontrar respuestas y tomar decisiones.
El valor de retorno de una comparación es verdadero trueo falso false. Estos valores se conocen
como valores booleanos , y aprenderás más sobre ellos en el capítulo sobre valores
booleanos y condicionales (If...Else ).

En el siguiente ejemplo, utilizamos el operador mayor que> ( ) para averiguar si 5 es mayor que
3:

Orden de operaciones
Aquí tienes algunos operadores comunes, ordenados de mayor a menor prioridad:

•()- Paréntesis
•*, /, %- Multiplicación, División, Módulo
•+- -Suma, Resta
•>, <, >=, <=- Comparación
•==- !=Igualdad
•&&- Y lógico
•||- OR lógico
•=- Asignación
En el interior main(), complete los siguientes pasos:

[Link] dos intvariables llamadas itemPricey shippingCost, y asígnales valores.


[Link] una intvariable llamadasum
[Link] el coste total sumando itemPricey shippingCost(almacena el resultado en sum)
[Link] el costo total ( sum)
Consejo: Utilice el +operador.

Cadenas de Java
Las cadenas de texto se utilizan para almacenar texto.

Una Stringvariable contiene una colección de caracteres rodeados de comillas dobles ( ""):

Longitud de la cuerda
En Java, una cadena de caracteres (String) es en realidad un objeto, lo que significa que
contiene métodos que pueden realizar ciertas operaciones sobre las cadenas.

Por ejemplo, puedes encontrar la longitud de una cadena con el length()método:

Más métodos de cadena


En Java existen muchos métodos para trabajar con cadenas de caracteres.

Por ejemplo:

•Este toUpperCase()método convierte una cadena de texto a letras mayúsculas .


•Este toLowerCase()método convierte una cadena de texto a letras minúsculas .
Cómo encontrar un carácter en una cadena de texto.
Este indexOf()método devuelve el índice (la posición) de la primera aparición de un texto
específico en una cadena (incluidos los espacios en blanco):
Java cuenta las posiciones desde cero.
0 es la primera posición en una cadena, 1 es la segunda, 2 es la tercera...
Puedes utilizar este charAt()método para acceder a un carácter en una posición específica de
una cadena:

String txt = "Hello";


[Link]([Link](0)); // H
[Link]([Link](4)); // o

Comparación de cadenas
Para comparar dos cadenas, puedes usar el equals()método:

String txt1 = "Hello";


String txt2 = "Hello";

String txt3 = "Greetings";


String txt4 = "Great things";

[Link]([Link](txt2)); // true
[Link]([Link](txt4)); // false

Eliminación de espacios en blanco


Este trim()método elimina los espacios en blanco del principio y del final de una cadena:

Concatenación de cadenas
El +operador se puede utilizar entre cadenas para combinarlas. Esto se llama concatenación :

Tenga en cuenta que hemos añadido un texto vacío (" ") para crear un espacio entre firstName y
lastName en la impresión.

Concatenación en oraciones
Puedes usar la concatenación de cadenas para construir oraciones con texto y variables:

El método concat()
También puedes utilizar este concat()método para concatenar cadenas:

También puedes unir más de dos cadenas encadenando concat()llamadas:

Nota: Si bien puede usarlo concat()para unir varias cadenas, la mayoría de los desarrolladores
prefieren el +operador porque es más corto y más fácil de leer.

Suma de números y cadenas de texto

¡ADVERTENCIA!

Java utiliza el +operador tanto para la suma como para la concatenación.

Se suman números. Se concatenan cadenas.


Si sumas dos números, el resultado será un número:

Si sumas dos cadenas, el resultado será una concatenación de cadenas:

Si sumas un número y una cadena, el resultado será una concatenación de cadenas:

Cadenas de caracteres - Caracteres especiales


Debido a que las cadenas deben escribirse entre comillas, Java interpretará erróneamente esta
cadena y generará un error:

La solución para evitar este problema es utilizar el carácter de escape de barra invertida .

El \carácter de escape de barra invertida ( ) convierte los caracteres especiales en caracteres de


cadena:

Personaje de escape Resultado Descripción


\' ' Cotización única
\" " Doble cita
\\ \ barra invertida

La secuencia \" inserta una comilla doble en una cadena:

La secuencia \' inserta una comilla simple en una cadena:

La secuencia \\ inserta una sola barra invertida en una cadena:

Otras secuencias de escape comunes que son válidas en Java son:

Código resultado
\n Nueva línea
\t Pestaña
\b Retroceso
\r Retorno de carro
\f Fuente de formulario

Nota: La mayoría de estos códigos de escape rara vez se utilizan en la programación moderna.
Los más comunes son \n(salto de línea), \"(comillas dobles) y \\(barra invertida).

Desafío: Crea un mensaje de saludo


Pon a prueba tus conocimientos sobre cadenas de caracteres en Java completando un pequeño
ejercicio de programación.

Instrucciones

En el interior main(), complete los siguientes pasos:

1. Crea una Stringvariable llamada messagey asígnale un valor.


2. Imprime el mensaje

Nota: Las cadenas de texto deben escribirse entre comillas dobles.


Matemáticas en Java
La clase Java Math tiene muchos métodos que permiten realizar tareas matemáticas con números.

[Link]( x,y )
Este método se puede utilizar para encontrar el valor más alto de x e y :[Link](x,y)

Matemá[Link]( x,y )
Este método se puede utilizar para encontrar el valor mínimo de x e y :[Link](x,y)

[Link]( x )
El método devuelve la raíz cuadrada de x :[Link](x)

Matemá[Link]( x )
El método devuelve el valor absoluto (positivo) de x :[Link](x)

[Link]( x, y )
El método devuelve el valor de x elevado a la potencia de y :[Link](x, y)

Nota: [Link](2, 8) significa 2multiplicado por sí mismo 8 veces:


2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 = 256

Nota: El [Link]()método siempre devuelve un double, incluso si el resultado es un número


entero. Por ejemplo, [Link](2, 8)devuelve 256.0(no 256).

Métodos de redondeo
Java tiene varios métodos para redondear números:

•[Link](x)- redondea al entero más cercano


•[Link](x)- redondea hacia arriba (devuelve el entero más pequeño mayor o igual que
x)
•[Link](x)- redondea hacia abajo (devuelve el entero más grande menor o igual que
x)

Números aleatorios
[Link]()Devuelve un número aleatorio entre 0,0 (inclusive) y 1,0 (exclusivo):

Para tener más control sobre el número aleatorio, por ejemplo, si solo desea un número aleatorio
entre 0 y 100, puede utilizar la siguiente fórmula:

Nota: [Link]() devuelve un double. Para obtener un entero, debe convertirlo con (int).

Valores booleanos en Java


Muy a menudo en programación, necesitarás un tipo de dato que solo puede tener uno de dos
valores, como por ejemplo:

•SÍ / NO
•ENCENDIDO / APAGADO
•VERDADERO / FALSO

Para ello, Java dispone de un booleantipo de dato que puede almacenar truevalores false.

El nombre booleano proviene de George Boole , un matemático que definió por primera vez el
sistema lógico utilizado en las computadoras actuales.
Valores booleanos
Un tipo booleano se declara con la booleanpalabra clave y solo puede tomar los
valores trueo false:

En la práctica, los valores booleanos suelen ser el resultado de expresiones y se utilizan para
comprobar condiciones en los programas (véase más abajo).

Expresiones booleanas
Una expresión booleana devuelve un valor booleano: trueo false.

Esto resulta útil para desarrollar la lógica y tomar decisiones en los programas.

Por ejemplo, puede utilizar un operador de comparación , como el operador mayor que ( >), para
averiguar si una expresión (o una variable) es verdadera o falsa:

En los ejemplos que se muestran a continuación, utilizamos el operador de igualdad ( ==) para
evaluar una expresión:
Almacena el resultado en una variable booleana.

También puedes almacenar el resultado de una comparación en una booleanvariable:

Nota: Puedes almacenar el resultado de la comparación en una variable booleana o usar la


comparación directamente.
Almacenar el resultado puede facilitar la lectura del código, especialmente si deseas reutilizarlo.

Desafío: Comprueba la edad mínima.


Pon a prueba tus conocimientos sobre operadores booleanos en Java completando un pequeño
ejercicio de programación.

Instrucciones

En el interior main(), complete los siguientes pasos:

1. Declara dos intvariables: agey minAge, y asígnales valores.

2. Imprime el resultado de la comparació[Link] >= minAge

Condiciones y sentencias if en Java


Las condiciones y las sentencias if te permiten controlar el flujo de tu programa, decidiendo qué
código se ejecuta y qué código se omite.

Piénsalo como en la vida real: si llueve, lleva un paraguas. De lo contrario, no hagas nada.

Cada ifenunciado necesita una condición que dé como resultado trueo false.

Esto significa que iflas declaraciones trabajan de la mano con booleanlos valores:

Por lo general, las condiciones se crean utilizando operadores de comparación, como los que se
muestran a continuación:

•Menos que: a < b


•Menor o igual que: a <= b
•Mayor que: a > b
•Mayor o igual que: a >= b
•Igual a: a == b
•No es igual a: a != b
Puedes utilizar estas condiciones para realizar diferentes acciones en función de diferentes
decisiones.

Java tiene las siguientes sentencias condicionales:

•Se utiliza ifpara especificar un bloque de código que se ejecutará si se cumple una
condición determinada.
•Se utiliza elsepara especificar un bloque de código que se ejecutará si la misma condición
es falsa.
•Se utiliza else ifpara especificar una nueva condición a comprobar, si la primera
condición es falsa.
•Se utiliza switchpara especificar varios bloques de código alternativos que se ejecutarán.

La instrucción if
La ifinstrucción especifica un bloque de código que se ejecutará si se cumple una condición true:

La condición dentro de la ifinstrucción debe resultar en un booleanvalor; puede ser una


expresión booleana (como x > y) o una variable booleana (como isLightOn).

Tenga en cuenta también que ifestá en minúsculas. Las mayúsculas (If o IF) generarán un error.

Uso de variables booleanas


También puedes probar variables booleanas directamente en una if instrucción:

Nota: Escribir if (isLightOn)es lo mismo que escribir if (isLightOn == true), pero más corto
y fácil de leer.

Aquí está el mismo ejemplo con el valor falsepara ver que el programa continúa incluso cuando
el bloque de código no se ejecuta:

Si sin brackets
Si una ifinstrucción tiene solo una línea de código, puede escribirla sin llaves { }:

Problema potencial
Sin llaves, solo la primera línea después de la coma ifpertenece a ella. Cualquier otra línea se
ejecutará sin importar qué, lo que puede generar resultados inesperados:

El camino seguro
Para evitar errores, utilice siempre llaves { }. Esto deja claro a qué línea pertenece
la ifinstrucción:

Consejo: El uso constante de llaves { }hace que el código sea más claro, más fácil de leer y
previene errores sutiles.
La declaración else

La elseinstrucción permite ejecutar un bloque de código cuando ifse cumple la condición de la


instrucción false.

int time = 20;


if (time < 18) {

[Link]("Good day.");

} else {

[Link]("Good evening.");

// Outputs "Good evening."

Ejemplo explicado
En el ejemplo anterior, el tiempo (20) es mayor que 18, por lo que la condición es false. Debido a
esto, pasamos a la elsecondición e imprimimos en la pantalla "Buenas noches". Si el tiempo fuera
menor que 18, el programa imprimiría "Buen día".

Notas

• elseno tiene una condición: se ejecuta cuando ifse cumple la condición false.

• No coloque un punto y coma justo después de if (condition). Eso terminaría la


instrucción prematuramente y haría elseque se comportara de forma inesperada.

La instrucción else if
Utilice la else ifinstrucción para especificar una nueva condición para comprobar si la primera
condición es false.

Piénsalo como en la vida real: si llueve, lleva un paraguas. Si hace sol, ponte gafas de sol. Si no,
simplemente sal a la calle como siempre.

Como weatheres 2, la primera condición ( weather == 1) no se cumple, por lo que el ifbloque se


omite. El programa luego verifica la else ifcondición ( weather == 2), que es true. Eso significa
que el else ifbloque se ejecuta e imprime "Ponte gafas de sol".
Ejemplo explicado
El valor de timees 16. La primera condición ( time < 12) es falsa, pero la segunda condición
( time < 18) es verdadera. Debido a esto, el else ifbloque se ejecuta e imprime "Buen día."

Si el valor de timefuera 22, ninguna de las condiciones sería verdadera y el programa imprimiría
"Buenas noches." en su lugar:

Abreviatura if...else
También existe una forma abreviada de if else , que se conoce como operador ternario porque
consta de tres operandos.

Se puede utilizar para reemplazar varias líneas de código con una sola línea, y se usa con mayor
frecuencia para reemplazar simples sentencias if-else:
Ternario anidado (opcional)
Puedes anidar operadores ternarios para manejar más de dos resultados posibles, pero esto puede
hacer que tu código sea más difícil de leer:

Consejo: Utilice el operador ternario para opciones cortas y sencillas. Para lógica más larga o
compleja, el operador ternario if...elsees más fácil de leer.

Anidado si
También puedes colocar una ifinstrucción dentro de otra if. Esto se llama una instrucción if
anidada .

Una estructura anidada ifpermite comprobar una condición solo si otra condición ya está
presente true.

Notas
•Puedes anidar tantas ifinstrucciones como quieras, pero evita que el código sea
demasiado profundo, ya que puede resultar difícil de leer.
•El anidado ifse usa a menudo junto con elsey else ifpara la toma de decisiones más
complejas.

Operadores lógicos en condiciones


Puedes combinar o invertir condiciones usando operadores lógicos . Estos funcionan junto
con if, elsey else ifpara construir decisiones más complejas.

•&&(Y) - todas las condiciones deben ser verdaderas


•||(O) - al menos una condición debe ser verdadera
•!(NOT) - invierte una condición (verdadero = falso, falso = verdadero)
Y ( &&)
Utilice AND ( &&) cuando ambas condiciones deban ser verdaderas:

Y ( &&)
Utilice AND ( &&) cuando ambas condiciones deban ser verdaderas:

NO ( !)
Utilice NOT ( !) para invertir una condición:

Desafío: Tomar una decisión con If y Else


Pon a prueba tu comprensión de las condiciones en Java completando un pequeño ejercicio de
programación.

Instrucciones

En el interior main(), complete los siguientes pasos:

1. Declara una intvariable con un nombre agey asígnale un valor.

2. Utilice una ifinstrucción con el >=operador para comprobar si agetiene 18 años o más.

3. Si la condición es verdadera, imprime Permitido

4. De lo contrario, imprimir No permitido


Sentencias switch en Java
En lugar de escribir muchas if..else declaraciones, puede utilizar la switchdeclaración.

Imagínalo como pedir comida en un restaurante: si eliges el número 1, te dan pizza. Si eliges el 2,
te dan una hamburguesa. Si eliges el 3, te dan pasta. En caso contrario, no te dan nada .

La switchinstrucción selecciona uno de los muchos bloques de código que se ejecutarán:

Así es como funciona:

•La switchexpresión se evalúa una sola vez.


•El resultado se compara con cada casevalor.
•Si hay una coincidencia, se ejecuta el bloque de código correspondiente.
•La breakinstrucción detiene la instrucción switch después de que se haya ejecutado el
caso correspondiente.
•La defaultinstrucción se ejecuta si no hay coincidencia.
El siguiente ejemplo utiliza el número del día de la semana para calcular el nombre del día de la
semana:

La palabra clave de ruptura


Cuando Java encuentra una break palabra clave, sale del bloque switch.

Esto detendrá la ejecución de más código y pruebas de casos dentro del bloque.

Cuando se encuentra una coincidencia y el trabajo está hecho, es hora de un descanso. No hay
necesidad de realizar más pruebas.

Una pausa puede ahorrar mucho tiempo de ejecución porque "ignora" la ejecución de todo el resto
del código en el bloque switch.

La palabra clave predeterminada


La defaultpalabra clave especifica un código que se ejecutará si no hay coincidencia de
mayúsculas y minúsculas:

Tenga en cuenta que si la defaultinstrucción se utiliza como la última instrucción en un bloque


switch, no necesita un break.

Desafío: Solucionar el pedido del cliente


Pon a prueba tus conocimientos sobre Java Switch completando un pequeño ejercicio de
programación.

Instrucciones

Un cliente quiere pedir café.

El código del editor está incompleto. Corríjalo insertando los valores que faltan para que el
programa imprima el orden correcto.

1. Cambia choiceal número correcto para Café (ver los comentarios).

2. Insertar choicedentro switch().

3. Reemplaza cada uno case:con el número correcto.


4. Utilice dos breakafirmaciones (una para cada caso).

5. Pasar [Link]("Invalid choice")a un default:caso.

Bucles
Los bucles pueden ejecutar un bloque de código siempre que se cumpla una condición específica.

Los bucles son útiles porque ahorran tiempo, reducen errores y hacen que el código sea más
legible.

Bucle while de Java


El whilebucle repite un bloque de código mientras la condición especificada sea verdadera

Nota: ¡No olvides incrementar la variable utilizada en la condición ( i++), de lo contrario el bucle
nunca terminará!

¿Te preguntas por qué usamos esa letra ien el ejemplo anterior? Es una variable de contador y
una opción común en bucles simples porque es corta, tradicional y significa "índice" o "iterador".

Ejemplo de cuenta regresiva


También puedes usar un whilebucle para hacer una cuenta regresiva. Este ejemplo cuenta del 3 al
1 y luego imprime "¡Feliz Año Nuevo!" al final:

Bucle while con condición falsa


En los ejemplos anteriores, la condición era verdadera al principio, por lo que el bucle se
ejecutaba una o más veces. Pero si la condición es falsa al principio, el código dentro del bucle
nunca se ejecutará:

Nota: Un whilebucle puede no ejecutarse nunca si la condición es falsa desde el principio. En el


próximo capítulo, aprenderá sobre el do whilebucle, que siempre ejecuta el código al menos una
vez antes de comprobar la condición.

El bucle Do/While
El do/whilebucle es una variante del whilebucle. Este bucle ejecutará el bloque de código una
vez , antes de comprobar si la condición es verdadera . Luego, repetirá el bucle mientras la
condición sea verdadera .

Nota: ¡El punto y coma ;después de la whilecondición es obligatorio!

Ejemplo de Do/While
El siguiente ejemplo utiliza un do/whilebucle. El bucle siempre se ejecutará al menos una vez,
incluso si la condición es falsa , porque el bloque de código se ejecuta antes de que se compruebe
la condición:

¡No olvides incrementar la variable utilizada en la condición ( i++), de lo contrario el bucle nunca
terminará!

La condición es falsa desde el principio.


En el whilecapítulo sobre bucles, vimos que si la condición es falsa al principio, el bucle nunca se
ejecuta.

El do/whilebucle es diferente: siempre ejecutará el bloque de código al menos una vez , incluso
si la condición es falsa desde el principio.
En el ejemplo siguiente, la variable icomienza en 10, por lo que i < 5es falsa inmediatamente.
Aun así, el bucle se ejecuta una vez antes de comprobar la condición:

Resumen: Un do/whilebucle siempre se ejecuta al menos una vez, incluso si la condición inicial
es falsa. Esta es la principal diferencia con respecto a un whilebucle que omitiría completamente
el bloque de código en la misma situación.

Este comportamiento resulta do/whileútil cuando se desea que algo ocurra al menos una vez,
como mostrar un mensaje o solicitar información al usuario.

Desafío: Cuenta del 1 al 5


Pon a prueba tus conocimientos sobre los bucles While en Java completando un pequeño
ejercicio de programación.

Instrucciones

En el interior main(), complete los siguientes pasos:

1. Declara una intvariable con un nombre iy asígnale el valor 1.

2. Utilice un whilebucle que se ejecute durante el tiempo que sea necesario.i <= 5

3. Dentro del bucle, imprime el valor dei

4. Incrementar ien 1 en cada bucle

Nota: Recuerda actualizar la variable del bucle.

Bucle for de Java


Cuando sepa exactamente cuántas veces desea recorrer un bloque de código, utilice el forbucle
en lugar de un whilebucle:

for (statement 1; statement 2; statement 3) {


// code block to be executed
}

La instrucción 1 se ejecuta (una sola vez) antes de la ejecución del bloque de código.

La instrucción 2 define la condición para ejecutar el bloque de código.

La instrucción 3 se ejecuta (siempre) después de que se haya ejecutado el bloque de código.

Imprimir números
El siguiente ejemplo imprimirá los números del 0 al 4:

for (int i = 0; i < 5; i++) {


[Link](i);
}

Ejemplo explicado
•La instrucción 1 establece una variable antes de que comience el bucle:int i = 0
•La instrucción 2 define la condición para que se ejecute el bucle: i < 5. Si la condición
es verdadera, el bucle se ejecutará de nuevo; si es falsa, el bucle terminará.
•La instrucción 3 incrementa un valor cada vez que se ejecuta el bloque de código:i++
El bucle foreach
También existe un bucle " for-each ", que se utiliza exclusivamente para recorrer los elementos
de una matriz (u otras estructuras de datos ):

El bucle for-each es más simple y legible que un forbucle regular, ya que no necesita un
contador (como i < [Link]).

El siguiente ejemplo imprime todos los elementos del array de coches :

Aquí tenemos un ejemplo similar con números. Creamos una matriz de enteros y usamos un
bucle for-each para imprimir cada valor:
Nota: No te preocupes si aún no entiendes del todo los arrays. Aprenderás más sobre ellos en
el capítulo sobre arrays en Java .
Desafío: Cuenta hasta 5
Pon a prueba tus conocimientos sobre los bucles for en Java completando un pequeño ejercicio
de programación.

Instrucciones

En el interior main(), complete los siguientes pasos:

1. Declarar int i(ya sea antes del bucle o dentro del for)

2. Utiliza un forbucle y:
• Colocari = 1
• Ejecutar el bucle mientrasi <= 5
• Aumentar icada vez
• Dentro del bucle, imprimei

Romper
Ya has visto esta breakfrase en un capítulo anterior de este tutorial. Se usaba para "saltar" de
una switchfrase.

Esta breakinstrucción también se puede utilizar para salir de un bucle .

Este ejemplo detiene el bucle cuando ies igual a 4:

Continuar
La continueinstrucción interrumpe una iteración (en el bucle) si se cumple una condición
específica y continúa con la siguiente iteración del bucle.

Este ejemplo omite el valor 4:

for (int i = 0; i < 10; i++) {


if (i == 4) {
continue;
}
[Link](i);
}

Es bueno recordar:

•break= Detener el bucle por completo.


•continue= Saltar esta ronda, pero continuar el bucle.
Combinando pausa y continuación
También puedes combinar breaky continue.

Este ejemplo omite imprimir el 2 y detiene el bucle en el 4:

Interrumpir y continuar en el bucle While


También puedes usar breaky continueen bucles while:

Ejemplo de la vida real


Imagina procesar una lista de números donde quieres omitir los valores negativos, pero detenerte
por completo si encuentras un cero:

int[] numbers = {3, -1, 7, 0, 9};

for (int n : numbers) {


if (n < 0) {
continue; // skip negative numbers
}
if (n == 0) {
break; // stop loop when zero is found
}
[Link](n);
}

Nota: No te preocupes si no entiendes completamente el ejemplo anterior. Utiliza un array ( int[]


numbers = {3, -1, 7, 0, 9};) para almacenar los números, y aprenderás más sobre arrays en
el próximo capítulo.

Matrices de Java
Los arreglos se utilizan para almacenar múltiples valores en una sola variable, en lugar de declarar
variables separadas para cada valor.

Para declarar un array, defina el tipo de variable con corchetes [ ] :

String[] cars;
Ahora hemos declarado una variable que contiene una matriz de cadenas. Para insertar valores en
ella, puedes colocarlos en una lista separada por comas, dentro de llaves { } :

String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};


Para crear una matriz de enteros, podrías escribir:

int[] myNum = {10, 20, 30, 40};

Acceder a los elementos de una matriz

Se puede acceder a un elemento de una matriz haciendo referencia a su número de índice.

Esta instrucción accede al valor del primer elemento en cars:

String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};


[Link](cars[0]);
// Outputs Volvo

Nota: Los índices de los arreglos comienzan con 0: [0] es el primer elemento, [1] es el segundo
elemento, etc.

Imagina una matriz como cajas numeradas, donde cada caja almacena un elemento:

Índice Elemento
0
Volvo
1
BMW
2
Ford
3
Mazda

Cambiar un elemento de la matriz


Para cambiar el valor de un elemento específico, consulte el número de índice:

String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};


cars[0] = "Opel";
[Link](cars[0]);
// Now outputs Opel instead of Volvo

Longitud de la matriz
Para averiguar cuántos elementos tiene una matriz, utilice la lengthpropiedad:

String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};


[Link]([Link]);
// Outputs 4
La newpalabra clave
También puedes crear una matriz especificando su tamaño con new. Esto crea una matriz vacía
con espacio para un número fijo de elementos, que puedes llenar posteriormente:

String[] cars = new String[4]; // size is 4

cars[0] = "Volvo";
cars[1] = "BMW";
cars[2] = "Ford";
cars[3] = "Mazda";

[Link](cars[0]); // Outputs Volvo

Sin embargo, si ya conoces los valores, no necesitas escribir new. Ambos crean el mismo array:

// With new
String[] cars = new String[] {"Volvo", "BMW", "Ford", "Mazda"};

// Shortcut (most common)


String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};

Nota: No puedes escribir .new String[4] {"Volvo", "BMW", "Ford", "Mazda"}

En Java, al usar new, puedes:

•Se utiliza new String[4]para crear una matriz vacía con 4 ranuras y luego rellenarlas más
tarde.
•O bien, utilice new String[] {"Volvo", "BMW", "Ford", "Mazda"}(sin especificar el
número de elementos) para crear la matriz y asignar valores al mismo tiempo.

Consejo: La sintaxis abreviada se usa con mayor frecuencia cuando se conocen los valores desde
el principio. Úsela newcon un tamaño cuando desee crear una matriz vacía y llenarla
posteriormente.

Recorrer un array
Puedes recorrer los elementos del array con el forbucle y usar la lengthpropiedad para
especificar cuántas veces debe ejecutarse el bucle.

Este ejemplo crea una matriz de cadenas y luego utiliza un forbucle para imprimir cada elemento,
uno por uno:

String[] cars = {"Volvo", "BMW", "Ford", "Mazda"};

for (int i = 0; i < [Link]; i++) {


[Link](cars[i]);

Aquí tenemos un ejemplo similar con números. Creamos una matriz de enteros y usamos
un forbucle para imprimir cada valor:
Recorrer un array con ForEach
También existe un bucle " for-each ", que se utiliza exclusivamente para recorrer los elementos
de una matriz (u otras estructuras de datos ):

for (type variable : arrayname) {


// code block to be executed
}

Los dos puntos ( :) se leen como "en". Por lo tanto, puedes leer el bucle como: "para cada variable
en el array" .

El siguiente ejemplo utiliza un bucle foreach para imprimir todos los elementos del array cars :

Esto significa: para cada elemento String en el carsarray (aquí llamado car), imprime su valor.

En comparación con un bucle normal for, el bucle for-each es más fácil de escribir y leer porque
no necesita un contador (como i < [Link]). Sin embargo, solo devuelve los valores, no sus
posiciones (índices) en el array.

Por lo tanto, si necesita tanto la posición (índice) de cada elemento como su valor, un forbucle
regular es la opción correcta. Por ejemplo, al imprimir los números de asiento en una fila de teatro,
necesita mostrar tanto el número de asiento (el índice) como quién está sentado allí (el valor):

Nota: El bucle for-each es ideal cuando solo necesitas leer elementos. Si deseas modificar los
elementos posteriormente o mantener un registro de su índice, utiliza un forbucle normal.

Ejemplo de la vida real


Para demostrar un ejemplo práctico del uso de matrices, vamos a crear un programa que calcule
el promedio de diferentes edades:

// An array storing different ages


int ages[] = {20, 22, 18, 35, 48, 26, 87, 70};

float avg, sum = 0;

// Get the length of the array


int length = [Link];

// Loop through the elements of the array


for (int age : ages) {
sum += age;
}

// Calculate the average by dividing the sum by the length


avg = sum / length;

// Print the average


[Link]("The average age is: " + avg);
Y en este ejemplo, creamos un programa que encuentra la edad más baja entre diferentes edades:

Matrices multidimensionales
Una matriz multidimensional es una matriz que contiene otras matrices.

Puedes usarlo para almacenar datos en una tabla con filas y columnas.

Para crear una matriz bidimensional, escriba cada fila dentro de sus propias llaves :

int[][] myNumbers = { {1, 4, 2}, {3, 6, 8} };

Aquí, myNumbers tiene dos matrices (dos filas):

•Primera fila:{1, 4, 2}
•Segunda fila:{3, 6, 8}
Piénsalo de esta manera:

Elementos de acceso
Para acceder a un elemento de una matriz bidimensional, se necesitan dos índices: el primero
para la fila y el segundo para la columna.

Recuerda: Los índices de los arreglos comienzan en 0. Esto significa que la fila 0es la primera fila
y la columna 0es la primera columna. (Por lo tanto, el índice de fila 1es la segunda fila y el índice
de columna 2es la tercera columna).

Esta instrucción accede al elemento en la segunda fila (índice 1) y la tercera


columna (índice 2) del array myNumbers :

int[][] myNumbers = { {1, 4, 2}, {3, 6, 8} };


[Link](myNumbers[1][2]); // Outputs 8

Filas y columnas (longitudes)


Puedes usar lengthpara obtener el número de filas y para el número de columnas en una fila
determinada: myNumbers[row].length

int[][] myNumbers = { {1, 4, 2}, {3, 6, 8, 5, 2} };

[Link]("Rows: " + [Link]); // 2


[Link]("Cols in row 0: " + myNumbers[0].length); // 3
[Link]("Cols in row 1: " + myNumbers[1].length);

Nota: Fíjese en que las filas pueden tener longitudes diferentes. En este ejemplo, la segunda fila
tiene más elementos que la primera, y eso es perfectamente válido en Java.

Recorrer una matriz multidimensional


Utilice un forbucle dentro de otro forbucle para recorrer cada elemento (fila por fila):

int[][] myNumbers = { {1, 4, 2}, {3, 6, 8, 5, 2} };

for (int row = 0; row < [Link]; row++) {


for (int col = 0; col < myNumbers[row].length; col++) {
[Link]("myNumbers[" + row + "][" + col + "] = " + myNumbers[row]
[col]);
}
}

Desafío: Crear un array simple


Pon a prueba tus conocimientos sobre arrays en Java completando un pequeño reto de
programación.

Instrucciones

En el interior main(), complete los siguientes pasos:

1. Declara una intmatriz llamadanumbers

2. Almacena los valores 1, 2, 3 en el array (en ese orden).

3. Imprime el primer elemento del array.


Nota: Los índices de la matriz comienzan en 0.

Métodos de Java
Un método es un bloque de código que solo se ejecuta cuando se le llama.

Puedes pasar datos, conocidos como parámetros, a un método.

Los métodos se utilizan para realizar ciertas acciones, y también se conocen como funciones .

¿Por qué usar métodos? Para reutilizar código: define el código una vez y úsalo muchas veces.

Crear un método
Un método debe declararse dentro de una clase. Se define con el nombre del método, seguido de
paréntesis () . Java proporciona algunos métodos predefinidos, como [Link](), pero
también puedes crear tus propios métodos para realizar ciertas acciones:

Crea un método dentro de Main:

public class Main {


static void myMethod() {
// code to be executed
}
}

Ejemplo explicado
•myMethod()es el nombre del método
•staticEsto significa que el método pertenece a la clase Main y no es un objeto de la clase
Main. Aprenderás más sobre objetos y cómo acceder a los métodos a través de ellos más
adelante en este tutorial.
•voidEsto significa que este método no tiene un valor de retorno. Aprenderás más sobre los
valores de retorno más adelante en este capítulo.

Llamar a un método
Para llamar a un método en Java, escriba el nombre del método seguido de dos paréntesis () y un
punto y coma ;

En el siguiente ejemplo, myMethod()se utiliza para imprimir un texto (la acción), cuando se llama:

Ejemplo
Dentro main, llama al myMethod()método:

public class Main {


static void myMethod() {
[Link]("I just got executed!");
}

public static void main(String[] args) {


myMethod();
}
}

Desafío: Crea un mensaje de bienvenida.


Pon a prueba tus conocimientos sobre los métodos de Java completando un pequeño ejercicio
de programación.

Instrucciones

En el interior Main, complete los siguientes pasos:

1. Crea un método llamadowelcomeMessage

2. El método debería imprimir ¡Bienvenido a Java!

3. Llamar welcomeMessage()adentromain()
Nota: El método debe ser static.
Parámetros y argumentos
La información se puede pasar a los métodos como parámetro. Los parámetros
actúan como variables dentro del método.
Los parámetros se especifican después del nombre del método, entre paréntesis.
Puedes añadir tantos parámetros como quieras, separándolos con una coma.
El siguiente ejemplo tiene un método que toma como parámetro un
nombre Stringllamado fname . Cuando se llama al método, le pasamos un
nombre, que se usa dentro del método para imprimir el nombre completo:
Cuando se pasa un parámetro al método, se le llama argumento . Por lo tanto, del
ejemplo anterior: fnamees un parámetro , mientras
que Liam, Jennyy Anjason argumentos .
Tenga en cuenta que, cuando trabaje con varios parámetros, la llamada al método
debe tener el mismo número de argumentos que de parámetros, y los
argumentos deben pasarse en el mismo orden.

Un método con If...Else


Es común utilizar if...else sentencias dentro de los métodos:

Valores de retorno
En la página anterior , utilizamos la voidpalabra clave en todos los ejemplos
(como ), lo que indica que el método no debe devolver un
[Link] void myMethod(int x)
Si desea que el método devuelva un valor, puede usar un tipo de dato primitivo
(como int, char, etc.) en lugar de void, y usar la return palabra clave dentro del
método:
public class Main {
static int myMethod(int x) {
return 5 + x;
}

public static void main(String[] args) {


[Link](myMethod(3));
}
}
// Outputs 8 (5 + 3)
Desafío: Crear un mensaje de bienvenida para
un usuario.
Pon a prueba tu comprensión de los parámetros de los métodos
Java completando un pequeño ejercicio de programación.
Instrucciones

En el interior Main, complete los siguientes pasos:

1. Corrige el método welcomeMessagepara que acepte un Stringparámetro


llamadoname

2. Llama welcomeMessage()con cualquier nombre dentromain()

Ámbito de Java
En Java, las variables solo son accesibles dentro de la región donde se crean. Esto
se llama ámbito .

Alcance del método


Las variables declaradas directamente dentro de un método están disponibles en
cualquier parte del método, después de la línea de código en la que fueron
declaradas:

Alcance del bloque


Un bloque de código se refiere a todo el código que se encuentra entre llaves { }.
Las variables declaradas dentro de un bloque de código solo son accesibles por el
código que se encuentra entre las llaves, y solo después de la línea en la que se
declaró la variable:
Un bloque de código puede ser independiente o formar parte de una
instrucción if, while, o for. En un forbucle, la variable declarada en el
encabezado del bucle (como int i = 0) solo existe dentro del bucle.

Ámbito del bucle


Las variables declaradas dentro de un forbucle solo existen dentro del bucle:

Ejemplo
public class Main {
public static void main(String[] args) {

for (int i = 0; i < 5; i++) {

[Link](i); // i is accessible here

// i is NOT accessible here

El forbucle tiene su propio bloque ( { ... }).


•La variable ideclarada en el encabezado del bucle ( int i = 0) solo es
accesible dentro de ese bloque de bucle.
•Una vez que finaliza el bucle, ise destruye, por lo que no se puede usar
fuera de él.

Por qué esto es importante


Las variables de bucle no están disponibles fuera del bucle.
Puedes reutilizar de forma segura el mismo nombre de variable ( i, j, etc.) en
diferentes bucles dentro del mismo método:

Recursión en Java
La recursión es la técnica de llamar a una función. Esta técnica permite
descomponer problemas complejos en problemas más sencillos y fáciles de
resolver.
La recursión puede resultar un poco difícil de entender. La mejor manera de
comprender cómo funciona es experimentando con ella.
Ejemplo de recursión
Sumar dos números es fácil, pero sumar un rango de números es más
complicado. En el siguiente ejemplo, se utiliza la recursión para sumar un rango
de números, descomponiéndolo en la sencilla tarea de sumar dos números:
Utilice la recursión para sumar todos los números del 1 al 10.
public class Main {
public static int sum(int k) {
if (k > 0) {
return k + sum(k - 1);
} else {
return 0;
}
}

public static void main(String[] args) {


int result = sum(10);
[Link](result);
}
}

Ejemplo explicado
Cuando sum()se llama al método, este suma el parámetro ka la suma de todos los
números menores que ky devuelve el resultado. Cuando kse convierte en 0, el
método simplemente devuelve 0. Al ejecutarse, el programa sigue estos pasos:
10 + suma(9)
10 + ( 9 + suma(8) )
10 + ( 9 + ( 8 + suma(7) ) )
...
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + suma(0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 09 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 +
0
Dado que el método no se llama a sí mismo cuando kes 0, el programa se detiene
ahí y devuelve el resultado.
Condición de parada
Así como los bucles pueden generar bucles infinitos, los métodos recursivos
pueden generar recursión infinita. La recursión infinita se produce cuando un
método nunca deja de llamarse a sí mismo. Todo método recursivo debe tener
una condición de parada, que es la condición en la que el método deja de
llamarse a sí mismo. En el ejemplo anterior, la condición de parada se da cuando
el parámetro kse vuelve cero.
Resulta útil ver diversos ejemplos para comprender mejor el concepto. En este
ejemplo, el método suma un rango de números entre un inicio y un final. La
condición de parada para este método recursivo es cuando final no es mayor
que inicio :

Ten cuidado con la recursión: es fácil escribir accidentalmente un método que


nunca se detenga o que consuma demasiada memoria. Pero cuando se escribe
correctamente, la recursión puede ser eficiente y elegante.

Java - ¿Qué es la programación


orientada a objetos (POO)?
OOP significa Programación Orientada a Objetos .
La programación procedimental consiste en escribir procedimientos o métodos
que realizan operaciones sobre los datos, mientras que la programación orientada
a objetos consiste en crear objetos que contienen tanto datos como métodos.
La programación orientada a objetos tiene varias ventajas sobre la programación
procedimental:
La POO es más rápida y fácil de ejecutar.
•La POO proporciona una estructura clara para los programas.
•La programación orientada a objetos (POO) ayuda a mantener el código
Java sin repeticiones ("Don't Repeat Yourself") y facilita el mantenimiento, la
modificación y la depuración del código.
•La POO permite crear aplicaciones totalmente reutilizables con menos
código y un menor tiempo de desarrollo.
Consejo: El principio "No te repitas" (DRY, por sus siglas en inglés) consiste en
reducir la repetición de código. Debes extraer el código común a la aplicación,
agruparlo y reutilizarlo en lugar de repetirlo.
Java - ¿Qué son las clases y los
objetos?
Las clases y los objetos son los dos aspectos principales de la programación
orientada a objetos.
Observa la siguiente ilustración para ver la diferencia entre clases y objetos:

clase
Fruta

Objetos
Manzana

Banana

mango

Así pues, una clase es una plantilla para objetos, y un objeto es una instancia de
una clase.
Cuando se crean los objetos individuales, estos heredan todas las variables y
métodos de la clase.
En el próximo capítulo aprenderás mucho más sobre clases y objetos .

Clases/Objetos de Java
Java es un lenguaje de programación orientado a objetos.
En Java, todo está asociado a clases y objetos, junto con sus atributos y métodos.
Por ejemplo: en la vida real, un coche es un objeto. El coche tiene atributos ,
como peso y color, y métodos , como conducir y frenar.
Una clase es como un constructor de objetos, o un "plano" para crear objetos.

Crear una clase


Para crear una clase, utilice la palabra clave class.
En este ejemplo, creamos una clase llamada " Main" con una variable x:
Recuerda, del capítulo sobre la sintaxis de Java, que una clase siempre debe
comenzar con una letra mayúscula y que el nombre del archivo Java debe
coincidir con el nombre de la clase.

En Java, un objeto se crea a partir de una clase. Después de definir una clase,
puedes crear objetos a partir de ella usando la newpalabra clave:

Crea un objeto llamado " myObj" e imprime el valor de x:


public class Main {
int x = 5;

public static void main(String[] args) {


Main myObj = new Main();
[Link](myObj.x);
}
}

Múltiples objetos
Puedes crear varios objetos de una misma clase:

public class Main {


int x = 5;

public static void main(String[] args) {


Main myObj1 = new Main(); // Object 1
Main myObj2 = new Main(); // Object 2
[Link](myObj1.x);
[Link](myObj2.x);
}
}
Uso de múltiples clases
También puedes crear un objeto de una clase y acceder a él desde otra clase. Esto
se usa a menudo para una mejor organización de las clases (una clase contiene
todos los atributos y métodos, mientras que la otra contiene el main()método
(código que se va a ejecutar)).
Recuerda que el nombre del archivo Java debe coincidir con el nombre de la clase.
En este ejemplo, hemos creado dos archivos en el mismo directorio/carpeta:
•[Link]
•[Link]

Atributos de clase Java


En el capítulo anterior, utilizamos el término " variable " para xel ejemplo (como
se muestra a continuación).
En Java, las variables declaradas dentro de una clase se denominan " atributos ".
También se puede decir que los atributos son variables que pertenecen a una
clase:

Crea una clase llamada " Main" con dos atributos: xy y:

Acceso a los atributos


Puedes acceder a los atributos creando un objeto de la clase y utilizando la
sintaxis de punto ( .):
El siguiente ejemplo creará un objeto de la Mainclase, con el nombre myObj.
Usamos el x atributo en el objeto para imprimir su valor:
public class Main {
int x = 5;

public static void main(String[] args) {


Main myObj = new Main();
[Link](myObj.x);

Modificar atributos
También puede modificar los valores de los atributos:
public class Main {
int x;

public static void main(String[] args) {


Main myObj = new Main();
myObj.x = 40;
[Link](myObj.x);
}

La finalpalabra clave es útil cuando se desea que una variable almacene


siempre el mismo valor, como PI (3,14159...).
La finalpalabra clave se llama "modificador". Aprenderás más sobre esto en
el capítulo sobre modificadores de Java .

Múltiples objetos
Si crea varios objetos de una misma clase, puede cambiar los valores de los
atributos en un objeto sin afectar los valores de los atributos en los demás:

public class Main {


int x = 5;

public static void main(String[] args) {


Main myObj1 = new Main(); // Object 1
Main myObj2 = new Main(); // Object 2
myObj2.x = 25;
[Link](myObj1.x); // Outputs 5
[Link](myObj2.x); // Outputs 25

Atributos múltiples
Puedes especificar tantos atributos como quieras:

Ejemplo
public class Main {
String fname = "John";

String lname = "Doe";

int age = 24;

public static void main(String[] args) {

Main myObj = new Main();

[Link]("Name: " + [Link] + " " + [Link]);

[Link]("Age: " + [Link]);

Métodos de clase de Java


En el capítulo sobre métodos de Java aprendiste que los métodos se declaran
dentro de una clase y que se utilizan para realizar ciertas acciones:

Crea un método con el siguiente nombre myMethod()en Main:

public class Main {

static void myMethod() {

[Link]("Hello World!");

myMethod()imprime un texto (la acción) cuando se llama . Para llamar a un


método, escriba el nombre del método seguido de dos paréntesis () y un punto y
coma ;
public class Main {
static void myMethod() {
[Link]("Hello World!");
}

public static void main(String[] args) {


myMethod();
}
}

Métodos de acceso con un objeto


Ejemplo
Crea un objeto Car llamado myCar. Llama a los métodos fullThrottle()y en
el objeto y ejecuta el programa:speed()myCar

// Create a Main class


public class Main {

// Create a fullThrottle() method


public void fullThrottle() {
[Link]("The car is going as fast as it can!");
}

// Create a speed() method and add a parameter


public void speed(int maxSpeed) {
[Link]("Max speed is: " + maxSpeed);
}

// Inside main, call the methods on the myCar object


public static void main(String[] args) {
Main myCar = new Main(); // Create a myCar object
[Link](); // Call the fullThrottle() method
[Link](200); // Call the speed() method
}
}

Ejemplo explicado
1) Creamos una Mainclase personalizada con la classpalabra clave.
2) Creamos los métodos fullThrottle()y speed() en la Mainclase.
3) El fullThrottle()método y el speed() método imprimirán algún texto cuando
sean llamados.
4) El speed() método acepta un intparámetro llamado maxSpeed- lo usaremos
en 8) .
5) Para poder utilizar la Mainclase y sus métodos, necesitamos crear un objeto de
la Mainclase.
6) Luego, ve al main()método, que ya sabes que es un método integrado de Java
que ejecuta tu programa (se ejecuta cualquier código dentro de main).
7) Al usar la newpalabra clave creamos un objeto con el nombre myCar.
8) Luego, llamamos a los métodos fullThrottle()y en el objeto, y ejecutamos el
programa usando el nombre del objeto ( ), seguido de un punto ( ), seguido del
nombre del método ( y ). Nótese que agregamos un parámetro de 200 dentro
del mé[Link]() [Link](); speed(200);int speed()

Recuerda eso...
El punto ( .) se utiliza para acceder a los atributos y métodos del objeto.
Para llamar a un método en Java, escriba el nombre del método seguido de un
conjunto de paréntesis () , seguido de un punto y coma ( ;).
Una clase debe tener un nombre de archivo coincidente ( Mainy [Link] ).

Uso de múltiples clases


Como especificamos en el capítulo sobre Clases , es una buena práctica crear un
objeto de una clase y acceder a él desde otra clase.
Recuerda que el nombre del archivo Java debe coincidir con el nombre de la clase.
En este ejemplo, hemos creado dos archivos en el mismo directorio:
•[Link]
•[Link]

Desafío: Crear un objeto de tipo Persona


Pon a prueba tus conocimientos sobre clases y objetos de Java completando un
pequeño reto de programación.
Instrucciones

Dentro de la Mainclase, completa los siguientes pasos:


1. Crea una Stringvariable llamada cityy asígnale el valor"London"

2. Crea una intvariable llamada populationy asígnale el valor9000000

3. Dentro main(), crea un objeto MainllamadomyObj

4. Imprimir cityy populationusarmyObj

Constructores de Java
En Java, un constructor es un método especial que se utiliza para inicializar
objetos.
El constructor se llama cuando se crea un objeto de una clase.
Se puede utilizar para establecer valores iniciales para los atributos de los
objetos:
/ Create a Main class
public class Main {
int x; // Create a class attribute
// Create a class constructor for the Main class
public Main() {
x = 5; // Set the initial value for the class attribute x
}
public static void main(String[] args) {
Main myObj = new Main(); // Create an object of class Main (This
will call the constructor)
[Link](myObj.x); // Print the value of x
}

Tenga en cuenta que el nombre del constructor debe coincidir con el nombre
de la clase y no puede tener un tipo de retorno (como void).
Tenga en cuenta también que el constructor se llama cuando se crea el objeto.
Todas las clases tienen constructores por defecto: si no creas un constructor de
clase, Java lo crea automáticamente. Sin embargo, en ese caso no podrás
establecer valores iniciales para los atributos del objeto.
Parámetros del constructor
Los constructores también pueden aceptar parámetros, que se utilizan para
inicializar atributos.
El siguiente ejemplo agrega un int yparámetro al constructor. Dentro del
constructor, asignamos el valor de x al valor de y (x=y). Al llamar al constructor,
le pasamos un parámetro (5), que asignará el valor de x a 5:
public class Main {
int x;
public Main(int y) {
x = y;
}
public static void main(String[] args) {
Main myObj = new Main(5);
[Link](myObj.x);
}

Java esta palabra clave


En Java, la thispalabra clave se refiere al objeto actual en un método o
constructor.
Esta thispalabra clave se usa a menudo para evitar confusiones cuando los
atributos de una clase tienen el mismo nombre que los parámetros de un método
o constructor.

Acceso a los atributos de clase


En ocasiones, un constructor o método tiene un parámetro con el mismo nombre
que una variable de clase. Cuando esto sucede, el
parámetro oculta temporalmente la variable de clase dentro de ese método o
constructor.
Para referirse a la variable de clase y no al parámetro, puede utilizar
la thispalabra clave:
public class Main {
int x; // Class variable x

// Constructor with one parameter x


public Main(int x) {
this.x = x; // refers to the class variable x
} } }

public static void main(String[] args) {


// Create an object of Main and pass the value 5 to the
constructor
Main myObj = new Main(5);
[Link]("Value of x = " + myObj.x);

Consejo: Piensa en ello this.x = x;como: " this.x(la variable de clase) obtiene
el valor de x(el parámetro)."
Sin this, el código anterior x = x;establecería el parámetro xigual a sí mismo, y
la variable de clase permanecería sin inicializar ( 0).

Llamar a un constructor desde otro


constructor
También puedes usarlo this()para llamar a otro constructor en la misma clase.
Esto resulta útil cuando se desean proporcionar valores predeterminados o
reutilizar el código de inicialización en lugar de repetirlo.
public class Main {
int modelYear;
String modelName;

// Constructor with one parameter


public Main(String modelName) {
// Call the two-parameter constructor to reuse code and set a
default year
this(2020, modelName);
}
// Constructor with two parameters
public Main(int modelYear, String modelName) {
// Use 'this' to assign values to the class variables
[Link] = modelYear;
[Link] = modelName;
}
// Method to print car information
public void printInfo() {
[Link](modelYear + " " + modelName);
}
public static void main(String[] args) {
// Create a car with only model name (uses default year)
Main car1 = new Main("Corvette");
// Create a car with both model year and name
Main car2 = new Main(1969, "Mustang");
[Link]();
[Link]();

Nota: La llamada this()debe ser la primera instrucción dentro del constructor.

¿Cuándo debo usarlo?


•Cuando un constructor o método tiene un parámetro con el mismo nombre
que una variable de clase, utilice esto thispara actualizar correctamente la
variable de clase.
•Para llamar a otro constructor en la misma clase y reutilizar el código.

Modificadores
A estas alturas, ya estarás bastante familiarizado con la publicpalabra clave que
aparece en casi todos nuestros ejemplos:
public class Main

La publicpalabra clave es un modificador de acceso , lo que significa que se


utiliza para establecer el nivel de acceso a clases, atributos, métodos y
constructores.
Dividimos los modificadores en dos grupos:
•Modificadores de acceso : controlan el nivel de acceso.
•Modificadores que no controlan el acceso : no controlan el nivel de
acceso, pero proporcionan otra funcionalidad.
Modificadores de acceso
Para las clases , puede usar cualquiera de las dos opciones public o la
predeterminada :

Modificador Descripción
public La clase es accesible desde cualquier otra clase.
default La clase solo es accesible por clases del mismo
paquete. Esto se utiliza cuando no se especifica un
modificador. Aprenderá más sobre paquetes en el
capítulo Paquetes.

Para atributos, métodos y constructores , puede utilizar uno de los siguientes:


Modificador Descripción
public El código es accesible para todas las clases.
private El código solo es accesible dentro de la clase declarada.
default El código solo es accesible dentro del mismo paquete.
Esto se utiliza cuando no se especifica un modificador.
Aprenderá más sobre paquetes en el capítulo Paquetes.
protected El código es accesible en el mismo paquete y subclases.
Aprenderás más sobre subclases y superclases en el
capítulo de Herencia.

Ejemplo público vs. privado


En el ejemplo siguiente, la clase tiene un publicatributo y un private atributo.
Piénsalo como en la vida real:
•public- un parque público, todo el mundo puede entrar
•private- La llave de tu casa, solo tú puedes usarla.
class Person {
public String name = "John"; // Public - accessible everywhere
private int age = 30; // Private - only accessible inside
this class
}
public class Main {
public static void main(String[] args) {
Person p = new Person();
[Link]([Link]); // Works fine
[Link]([Link]); // Error: age has private access in
Person
}

Ejemplo explicado
Aquí, namese declara como public, por lo que se puede acceder a él desde fuera
de la Personclase. Pero agese declara como private, por lo que solo se puede
usar dentro de la Personclase.

Modificadores sin acceso


Los modificadores que no son de acceso no controlan la visibilidad
(como publico private), sino que añaden otras características a las clases,
métodos y atributos.
Los modificadores que no son de acceso y que se utilizan con más frecuencia
son final, static, y abstract.

Final
Si no desea tener la posibilidad de sobrescribir los valores de los atributos
existentes, declare los atributos como final:
public class Main {
final int x = 10;
final double PI = 3.14;
public static void main(String[] args) {
Main myObj = new Main();
myObj.x = 50; // will generate an error: cannot assign a value to
a final variable
[Link] = 25; // will generate an error: cannot assign a value
to a final variable
[Link](myObj.x);
Estático
Un staticmétodo pertenece a la clase, no a ningún objeto específico. Esto
significa que puedes llamarlo sin crear un objeto de la clase.
Un ejemplo sencillo que muestra cómo llamar a un staticmétodo directamente:
public class Main {
// Static method
static void myStaticMethod() {
[Link]("Static methods can be called without creating
objects");
}
// Main method
public static void main(String[] args) {
myStaticMethod(); // Call the static method
[Link](); // Or call it using the class name
}

Nota: Un staticmétodo pertenece a la propia clase. Se puede llamar sin crear un


objeto, pero no puede utilizar variables ni métodos que pertenezcan a un objeto.

Abstracto
Un abstractmétodo pertenece a una abstractclase y no tiene cuerpo. El cuerpo
lo proporciona la subclase:
// abstract class
abstract class Main {
public String fname = "John";
public int age = 24;
public abstract void study(); // abstract method
}

// Subclass (inherit from Main)


class Student extends Main {
public int graduationYear = 2018;
public void study() { // the body of the abstract method is
provided here
[Link]("Studying all day long");
}

Lista de modificadores que no son


de acceso
Para las clases , puedes usar cualquiera de las finaldos opciones abstract:

Modificador Descripción
final Esta clase no puede ser heredada por otras clases
(Aprenderás más sobre la herencia en el capítulo
correspondiente).
abstract Esta clase no se puede usar para crear objetos (Para
acceder a una clase abstracta, debe heredar de otra
clase. Aprenderá más sobre herencia y abstracción en
los capítulos correspondientes).

Para atributos y métodos , puede utilizar uno de los siguientes:


Modificador Descripción
final Los atributos y métodos no se pueden sobrescribir ni
modificar.
static
Los atributos y métodos pertenecen a la clase, no a los
objetos. Esto significa que todos los objetos comparten
el mismo atributo estático, y los métodos estáticos
pueden llamarse sin necesidad de crear nuevos
objetos.
abstract Solo se puede usar en una clase abstracta y únicamente en métodos. El método
no tiene cuerpo; por ejemplo, `abstract void run();`. El cuerpo lo proporciona
la subclase (de la que se hereda). Aprenderá más sobre herencia y abstracción
en los capítulos correspondientes.
transient Los atributos y métodos se omiten al serializar el objeto
que los contiene.
synchronized Los métodos solo pueden ser accedidos por un hilo a la
vez.
volatile El valor de un atributo no se almacena en caché
localmente para cada hilo, sino que siempre se lee de
la "memoria principal".

Encapsulación
El significado de encapsulación es asegurar que los datos "confidenciales"
permanezcan ocultos para los usuarios. Para lograr esto, debe:
•declarar variables/atributos de clase comoprivate
•Proporcionar métodos públicos get y set para acceder y actualizar el valor
de una private variable.

Prepararse y listo
En el capítulo anterior aprendiste que privatelas variables solo se pueden
acceder dentro de la misma clase (una clase externa no tiene acceso a ellas). Sin
embargo, es posible acceder a ellas si proporcionamos métodos públicos para
obtener y establecer datos.
El getmétodo devuelve el valor de la variable y el setmétodo establece el valor.
La sintaxis para ambos es que comienzan con geto set, seguido del nombre de la
variable, con la primera letra en mayúscula:
public class Person {
private String name; // private = restricted access

// Getter
public String getName() {
return name;
}

// Setter
public void setName(String newName) {
[Link] = newName;

Ejemplo explicado
El getmétodo devuelve el valor de la variable name.
El setmétodo toma un parámetro ( newName) y lo asigna a la namevariable.
La thispalabra clave se utiliza para referirse al objeto actual.
Sin embargo, dado que la namevariable está declarada como private, no
podemos acceder a ella desde fuera de esta clase:
public class Main {
public static void main(String[] args) {
Person myObj = new Person();
[Link] = "John"; // error
[Link]([Link]); // error

Si la variable se declarara como public, esperaríamos la siguiente salida:


John
Sin embargo, al intentar acceder a una private variable, obtenemos un error:
En cambio, utilizamos los métodos getName()y setName()para acceder y
actualizar la variable:
public class Main {
public static void main(String[] args) {
Person myObj = new Person();
[Link]("John"); // Set the value of the name variable to
"John"
[Link]([Link]());
}
}
// Outputs "John"

¿Por qué la encapsulación?


•Mejor control de los atributos y métodos de clase.
•Los atributos de clase pueden ser de solo lectura (si solo usa
el getmétodo) o de solo escritura (si solo usa el setmétodo).
•Flexible: el programador puede cambiar una parte del código sin afectar a
otras partes.
•Mayor seguridad de los datos

Paquetes y API de Java


En Java, un paquete se utiliza para agrupar clases relacionadas. Imagínelo
como una carpeta en un directorio de archivos . Usamos paquetes para
evitar conflictos de nombres y para escribir un código más fácil de mantener. Los
paquetes se dividen en dos categorías:
•Paquetes integrados (paquetes de la API de Java)
•Paquetes definidos por el usuario (crea tus propios paquetes)

Paquetes integrados
La API de Java es una biblioteca de clases preescritas, de uso gratuito, incluida en
el Entorno de Desarrollo de Java.
La biblioteca contiene componentes para gestionar la entrada de datos, la
programación de bases de datos y mucho más. La lista completa se puede
encontrar en el sitio web de Oracle: [Link] .
La biblioteca está dividida en paquetes y clases . Esto significa que puedes
importar una sola clase (junto con sus métodos y atributos) o un paquete
completo que contenga todas las clases que pertenecen al paquete especificado.
Para utilizar una clase o un paquete de la biblioteca, debe utilizar
la import palabra clave:
import [Link]; // Import a single class
import [Link].*; // Import the whole package

Importar una clase


Si encuentra una clase que desea utilizar, por ejemplo, la Scannerclase que se
utiliza para obtener la entrada del usuario , escriba el siguiente código:
import [Link];

En el ejemplo anterior, [Link] un paquete, mientras que Scanneres una


clase del [Link].
Para usar la Scannerclase, cree un objeto de la clase y utilice cualquiera de los
métodos disponibles que se encuentran en la Scannerdocumentación de la clase.
En nuestro ejemplo, utilizaremos el nextLine()método, que se utiliza para leer
una línea completa:

Ejemplo
Utilizar la Scannerclase para obtener la entrada del usuario:
import [Link];

class Main {
public static void main(String[] args) {
Scanner myObj = new Scanner([Link]);
[Link]("Enter username");

String userName = [Link]();


[Link]("Username is: " + userName);
}

Importar un paquete
Existen muchos paquetes para elegir. En el ejemplo anterior, utilizamos
la Scannerclase del [Link]. Este paquete también incluye funciones
de fecha y hora, un generador de números aleatorios y otras clases de utilidad.
Para importar un paquete completo, finalice la instrucción con un asterisco (* *).
El siguiente ejemplo importará TODAS las clases del [Link]:
import [Link].*;

Paquetes definidos por el usuario


Para crear tu propio paquete, debes comprender que Java utiliza un directorio del
sistema de archivos para almacenarlos. Igual que las carpetas en tu ordenador:
└── root
└── mypack
└── [Link]

Para crear un paquete, utilice la packagepalabra clave:

[Link]
package mypack;
class MyPackageClass {
public static void main(String[] args) {
[Link]("This is my package!");
}

Esto obliga al compilador a crear el paquete "mypack".


La -d palabra clave especifica el destino donde se guardará el archivo de clase.
Puede usar cualquier nombre de directorio, como c:/user (Windows), o, si desea
mantener el paquete dentro del mismo directorio, puede usar el signo de punto "
" ., como en el ejemplo anterior.

Nota: El nombre del paquete debe escribirse en minúsculas para evitar conflictos
con los nombres de las clases.

Al compilar el paquete en el ejemplo anterior, se creó una nueva carpeta llamada


"mypack".

Herencia en Java (Subclase y


Superclase)
En Java, es posible heredar atributos y métodos de una clase a otra. Agrupamos el
"concepto de herencia" en dos categorías:
•subclase (hija) - la clase que hereda de otra clase
•superclase (padre): la clase de la que se hereda
Para heredar de una clase, utilice la extends palabra clave.
En el ejemplo siguiente, la Carclase (subclase) hereda los atributos y métodos de
la Vehicleclase (superclase):
class Vehicle {
protected String brand = "Ford"; // Vehicle attribute
public void honk() { // Vehicle method
[Link]("Tuut, tuut!");
}
}

class Car extends Vehicle {


private String modelName = "Mustang"; // Car attribute
public static void main(String[] args) {

// Create a myCar object


Car myCar = new Car();
// Call the honk() method (from the Vehicle class) on the myCar
object
[Link]();

// Display the value of the brand attribute (from the Vehicle


class) and the value of the modelName from the Car class
[Link]([Link] + " " + [Link]);
}

¿Notaste el protectedmodificador en Vehículo?


Hemos configurado el atributo de marca en Vehículo como
un protected modificador de acceso . Si estuviera configurado como private, la
clase Coche no podría acceder a él.

¿Por qué y cuándo utilizar la "herencia"?


- Es útil para la reutilización de código: reutiliza los atributos y métodos de una
clase existente cuando creas una nueva clase.
Consejo: Consulta también el siguiente capítulo, Polimorfismo , que utiliza
métodos heredados para realizar diferentes tareas.

La última palabra clave


Si no quieres que otras clases hereden de una clase, usa la finalpalabra clave:
Si intentas acceder a una finalclase, Java generará un error:
final class Vehicle {
...
}
class Car extends Vehicle {
...

Polimorfismo de Java
El polimorfismo significa "muchas formas" y se produce cuando tenemos muchas
clases que están relacionadas entre sí por herencia.
Como especificamos en el capítulo anterior, la herencia nos permite heredar
atributos y métodos de otra clase. El polimorfismo utiliza esos métodos para
realizar diferentes tareas. Esto nos permite realizar una misma acción de distintas
maneras.
Por ejemplo, pensemos en una superclase llamada Animalque tiene un método
llamado animalSound(). Las subclases de Animales podrían ser Cerdos, Gatos,
Perros, Pájaros, y también tienen su propia implementación de un sonido animal
(el cerdo gruñe, el gato maúlla, etc.):
class Animal {
public void animalSound() {
[Link]("The animal makes a sound");
}
}

class Pig extends Animal {


public void animalSound() {
[Link]("The pig says: wee wee");
}
}

class Dog extends Animal {


public void animalSound() {
[Link]("The dog says: bow wow");
}
}

Recuerda que del capítulo sobre herencia usamos la extendspalabra clave para
heredar de una clase.
Ahora podemos crear objetos Pigy Dogllamar al animalSound()método en ambos:
class Animal {
public void animalSound() {
[Link]("The animal makes a sound");
}
}

class Pig extends Animal {


public void animalSound() {
[Link]("The pig says: wee wee");
}
}

class Dog extends Animal {


public void animalSound() {
[Link]("The dog says: bow wow");
}
}

class Main {
public static void main(String[] args) {
Animal myAnimal = new Animal(); // Create a Animal object
Animal myPig = new Pig(); // Create a Pig object
Animal myDog = new Dog(); // Create a Dog object
[Link]();
[Link]();
[Link]();

¿Por qué y cuándo utilizar los conceptos de "herencia" y


"polimorfismo"?
- Es útil para la reutilización de código: reutiliza los atributos y métodos de una
clase existente cuando creas una nueva clase.

Palabra clave super de Java


En Java, la superpalabra clave se utiliza para referirse a la clase padre de una
subclase.
El uso más común de esta superpalabra clave es eliminar la confusión entre
superclases y subclases que tienen métodos con el mismo nombre.
Se puede utilizar de dos maneras principales:
•Para acceder a los atributos y métodos de la clase padre
•Para llamar al constructor de la clase padre
Métodos de acceso para padres
Si una subclase tiene un método con el mismo nombre que uno de su clase padre,
puede usarlo super para llamar a la versión de la clase padre:
class Animal {
public void animalSound() {
[Link]("The animal makes a sound");
}
}

class Dog extends Animal {


public void animalSound() {
[Link](); // Call the parent method
[Link]("The dog says: bow wow");
}
}

public class Main {


public static void main(String[] args) {
Dog myDog = new Dog();
[Link]();
}

Nota: Úselo supercuando desee llamar a un método de la clase padre que haya
sido sobrescrito en la clase hija.

Acceso a los atributos principales


También puedes usarlo superpara acceder a un atributo de la clase padre si
tienen un atributo con el mismo nombre:

Constructor de llamadas a padres


Se utiliza super()para llamar al constructor de la clase padre. Esto es
especialmente útil para reutilizar el código de inicialización.
class Animal {
Animal() {
[Link]("Animal is created");
}
}

class Dog extends Animal {


Dog() {
super(); // Call parent constructor
[Link]("Dog is created");
}
}

public class Main {


public static void main(String[] args) {
Dog myDog = new Dog();

Nota: La llamada super()debe ser la primera instrucción en el constructor de la


subclase.

Clases internas de Java


En Java, también es posible anidar clases (una clase dentro de otra). El objetivo
de las clases anidadas es agrupar clases relacionadas, lo que hace que el código
sea más legible y fácil de mantener.
Para acceder a la clase interna, cree un objeto de la clase externa y, a
continuación, cree un objeto de la clase interna:
class OuterClass {
int x = 10;

class InnerClass {
int y = 5;
}
}

public class Main {


public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
[Link] myInner = [Link] InnerClass();
[Link](myInner.y + myOuter.x);
}
}

// Outputs 15 (5 + 10)

Clase interna privada


A diferencia de una clase "regular", una clase interna puede
ser privateo protected. Si no desea que los objetos externos accedan a la clase
interna, declare la clase como private:
class OuterClass {
int x = 10;

private class InnerClass {


int y = 5;
}
}

public class Main {


public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
[Link] myInner = [Link] InnerClass();
[Link](myInner.y + myOuter.x);
}
}

Si intentas acceder a una clase interna privada desde una clase externa, se
produce un error
Clase interna estática
Una clase interna también puede ser static, lo que significa que puedes acceder
a ella sin crear un objeto de la clase externa:
class OuterClass {
int x = 10;

static class InnerClass {


int y = 5;
}
}

public class Main {


public static void main(String[] args) {
[Link] myInner = new [Link]();
[Link](myInner.y);
}
}

Nota: al igual que staticlos atributos y los métodos, una staticclase interna no
tiene acceso a los miembros de la clase externa.

Acceso a la clase externa desde la


clase interna
Una ventaja de las clases internas es que pueden acceder a los atributos y
métodos de la clase externa:
class OuterClass {
int x = 10;

class InnerClass {
public int myInnerMethod() {
return x;
}
}
}

public class Main {


public static void main(String[] args) {
OuterClass myOuter = new OuterClass();
[Link] myInner = [Link] InnerClass();
[Link]([Link]());
}

Una clase abstracta puede tener métodos tanto abstractos como regulares:

Clases y métodos abstractos


La abstracción de datos es el proceso de ocultar ciertos detalles y mostrar solo
la información esencial al usuario.
La abstracción se puede lograr mediante clases abstractas o interfaces (que
se explicarán con más detalle en el próximo capítulo).
La abstractpalabra clave es un modificador que no implica acceso y se utiliza
para clases y métodos:
•Clase abstracta: es una clase restringida que no se puede utilizar para
crear objetos (para acceder a ella, debe heredarse de otra clase).
•Método abstracto: solo puede utilizarse en una clase abstracta y no tiene
cuerpo. El cuerpo lo proporciona la subclase (de la que se hereda).

abstract class Animal {


public abstract void animalSound();
public void sleep() {
[Link]("Zzz");
}

Según el ejemplo anterior, no es posible crear un objeto de la clase Animal:

Animal myObj = new Animal(); // will generate an error

Para acceder a la clase abstracta, debe heredar de otra clase. Convirtamos la


clase Animal que usamos en el capítulo de Polimorfismo en una clase abstracta:
Recuerda que del capítulo sobre herencia usamos la extends palabra clave para
heredar de una clase.

// Abstract class
abstract class Animal {
// Abstract method (does not have a body)
public abstract void animalSound();
// Regular method
public void sleep() {
[Link]("Zzz");
}
}

// Subclass (inherit from Animal)


class Pig extends Animal {
public void animalSound() {
// The body of animalSound() is provided here
[Link]("The pig says: wee wee");
}
}

class Main {
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
[Link]();
[Link]();

¿Por qué y cuándo utilizar clases y métodos abstractos?


Para garantizar la seguridad, oculte ciertos detalles y muestre solo los detalles
importantes de un objeto.
Nota: La abstracción también se puede lograr con interfaces , sobre las cuales
aprenderá más en el próximo capítulo.
Interfaces
Otra forma de lograr la abstracción en Java es mediante interfaces.
Una clase abstracta es una claseinterface completamente abstracta que se
utiliza para agrupar métodos relacionados con cuerpos vacíos:
// interface
interface Animal {
public void animalSound(); // interface method (does not have a
body)
public void run(); // interface method (does not have a body)
}

Para acceder a los métodos de la interfaz, esta debe ser "implementada" (algo así
como heredada) por otra clase con la implements palabra clave (en lugar
de extends). El cuerpo del método de la interfaz lo proporciona la clase
"implementadora":
// Interface
interface Animal {
public void animalSound(); // interface method (does not have a
body)
public void sleep(); // interface method (does not have a body)
}

// Pig "implements" the Animal interface


class Pig implements Animal {
public void animalSound() {
// The body of animalSound() is provided here
[Link]("The pig says: wee wee");
}
public void sleep() {
// The body of sleep() is provided here
[Link]("Zzz");

class Main {
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
[Link]();
[Link]();
}

Notas sobre las interfaces:

• Al igual que las clases abstractas , las interfaces no se pueden usar para
crear objetos (en el ejemplo anterior, no es posible crear un objeto "Animal"
en MyMainClass).

• Los métodos de interfaz no tienen cuerpo; el cuerpo lo proporciona la clase


"implement"

• Al implementar una interfaz, debe sobrescribir todos sus métodos.

• Los métodos de interfaz son por defecto abstracty public

• Los atributos de la interfaz son por defecto publicy staticfinal

• Una interfaz no puede contener un constructor (ya que no se puede utilizar


para crear objetos).

¿Por qué y cuándo utilizar interfaces?

1) Para lograr seguridad: oculte ciertos detalles y muestre solo los detalles
importantes de un objeto (interfaz).

2) Java no admite la herencia múltiple (una clase solo puede heredar de una
superclase). Sin embargo, esto se puede lograr mediante interfaces, ya que la
clase puede implementar varias. Nota: Para implementar varias interfaces,
sepárelas con una coma (vea el ejemplo a continuación).

Múltiples interfaces

Para implementar múltiples interfaces, sepárelas con una coma:

interface FirstInterface {
public void myMethod(); // interface method
}

interface SecondInterface {
public void myOtherMethod(); // interface method
}

class DemoClass implements FirstInterface, SecondInterface {


public void myMethod() {
[Link]("Some text..");
}
public void myOtherMethod() {
[Link]("Some other text...");
}
}

class Main {
public static void main(String[] args) {
DemoClass myObj = new DemoClass();
[Link]();
[Link]();

Clase anónima

Una clase anónima es una clase sin nombre. Se crea y se utiliza al mismo
tiempo.
A menudo se utilizan clases anónimas para sobrescribir métodos de una clase
o interfaz existente, sin necesidad de escribir un archivo de clase aparte.
Aquí creamos una clase anónima que extiende otra clase y sobrescribe su
método:

/ Normal class

class Animal {
public void makeSound() {
[Link]("Animal sound");
}
}

public class Main {


public static void main(String[] args) {
// Anonymous class that overrides makeSound()
Animal myAnimal = new Animal() {
public void makeSound() {
[Link]("Woof woof");
}
}; // semicolon is required to end the line of code that creates
the object

[Link]();

Clase anónima de una interfaz

También puedes usar una clase anónima para implementar una interfaz sobre la
marcha:

/ Interface

interface Greeting {
void sayHello();
}

public class Main {


public static void main(String[] args) {
// Anonymous class that implements Greeting
Greeting greet = new Greeting() {
public void sayHello() {
[Link]("Hello, World!");
}
};

[Link]();

¿Cuándo utilizar clases anónimas?

Utilice clases anónimas cuando necesite crear una clase corta para un solo uso.
Por ejemplo:
•Sobrescribir un método sin crear una nueva subclase.
•Implementar una interfaz rápidamente
•Pasar pequeños fragmentos de comportamiento como objetos

También podría gustarte