Instrucciones Basicas de Java
Instrucciones Basicas de Java
Multiplataforma
Grado Superior
Instrucciones
básicas Java
Módulo de Programación
Java es un lenguaje sencillo de aprender, con una sintaxis parecida a la de C++, pero en
la que se han eliminado elementos complicados y que pueden originar errores. Java es
orientado a objetos, con lo que elimina muchas preocupaciones al programador y permite
la utilización de gran cantidad de bibliotecas ya definidas, evitando reescribir código que
ya existe. Es un lenguaje de programación creado para satisfacer nuevas necesidades que
los lenguajes existentes hasta el momento no eran capaces de solventar.
Antes de que apareciera Java, el lenguaje C era uno de los más extendidos por su
versatilidad. Pero cuando los programas escritos en C aumentaban de volumen, su
manejo comenzaba a complicarse. Mediante las técnicas de programación estructurada y
programación modular se conseguían reducir estas complicaciones, pero no era suficiente.
Fue entonces cuando la Programación Orientada a Objetos (POO) entra en escena,
aproximando notablemente la construcción de programas al pensamiento humano y
haciendo más sencillo todo el proceso. Los problemas se dividen en objetos que tienen
propiedades e interactúan con otros objetos, de este modo, el programador puede
centrarse en cada objeto para programar internamente los elementos y funciones que lo
componen.
Pero no fue hasta 1995 cuando pasó a llamarse Java, dándose a conocer al público como
lenguaje de programación para computadores. Java pasa a ser un lenguaje totalmente
independiente de la plataforma y a la vez potente y orientado a objetos. Esa filosofía y su
facilidad para crear aplicaciones para redes TCP/IP ha hecho que sea uno de los lenguajes
más utilizados en la actualidad.
Página 1
Instrucciones básicas Java
Página 2
Instrucciones básicas Java
Para que un bytecode pueda ser ejecutado en cualquier plataforma, es imprescindible que
dicha plataforma cuente con el intérprete adecuado, es decir, la máquina virtual específica
para esa plataforma. En general, la Máquina Virtual Java es un programa de reducido
tamaño y gratuito para todos los sistemas operativos.
Debemos tener en cuenta que Java exige que la clase principal del programa (la que tiene
el método Principal (main()) tiene que tener el mismo nombre que el archivo .Java que la
contiene.
Así mismo, junto a JDK se incluye una implementación del entorno de ejecución Java, el
JRE (Java Runtime Environment) para ser utilizado por el JDK. El JRE incluye la Máquina
Virtual de Java (MVJ ó JVM – Java Virtual Machine), bibliotecas de clases y otros ficheros
que soportan la ejecución de programas escritos en el lenguaje de programación Java.
Junto con el kit de desarrollo que nos descargamos e instalamos, vienen incluidas
gratuitamente todas las bibliotecas de la API (Aplication Programming Interface – Interfaz
de programación de aplicaciones) de Java, es lo que se conoce como Bibliotecas de Clases
Java. Este conjunto de bibliotecas proporciona al programador paquetes de clases útiles
para la realización de múltiples tareas dentro de un programa. Está organizada en
paquetes lógicos, donde cada paquete contiene un conjunto de clases relacionadas
semánticamente.
Para compilar y ejecutar ficheros Java es necesario realizar ajustes en la configuración del
sistema, de tal forma que se puedan encontrar los ficheros necesarios para realizar las
labores de compilación y ejecución (variable path), en este caso [Link] y [Link], así
como las librerías contenidas en la API de Java y las clases del usuario.
También debemos configurar la ruta a las bibliotecas de la API de java y de las clases del
usuario (classpath). Es decir, para el acceso a los ficheros .class que se obtienen una vez
compilado el código fuente de un programa escrito en Java.
Página 3
Instrucciones básicas Java
Una vez que la configuración del entorno Java está completada y tenemos el código
fuente de nuestro programa escrito en un archivo con extensión .Java, la compilación de
aplicaciones se realiza mediante el programa Javac incluido en el software de desarrollo
de Java.
El resultado de la compilación será un archivo con el mismo nombre que el archivo Java
pero con la extensión class. Esto ya es el archivo con el código en forma de bytecode. Es
decir con el código precompilado.
Para que el programa pueda ser ejecutado, siempre y cuando esté incluido en su interior
el método main, podremos utilizar el intérprete incluido en el kit de desarrollo. La
ejecución de nuestro programa desde la línea de comandos podremos hacerla
escribiendo:
/* La clase MiModulo implementa una aplicación que muestra un texto por pantalla */
class MiModulo
{
public static void main(String[] args)
{
[Link]("Hola Mundo ");
}
}
Página 4
Instrucciones básicas Java
Aplicaciones de consola
o Son programas independientes al igual que los creados con los lenguajes
tradicionales.
o Se componen como mínimo de un archivo .class que debe contar
necesariamente con el método main.
o No necesitan un navegador web y se ejecutan cuando invocamos el comando
Java para iniciar la Máquina Virtual de Java (JVM). De no encontrarse el
método main la aplicación no podrá ejecutarse.
o Las aplicaciones de consola leen y escriben hacia y desde la entrada y salida
estándar, sin ninguna interfaz gráfica de usuario.
Aplicaciones gráficas
o Aquellas que utilizan las clases con capacidades gráficas, como Swing que es
la biblioteca para la interfaz gráfica de usuario avanzada de la plataforma
Java SE.
o Incluyen las instrucciones import, que indican al compilador de Java que las
clases del paquete [Link] se incluyan en la compilación.
Applets
o Son programas incrustados en otras aplicaciones, normalmente una página
web que se muestra en un navegador. Cuando el navegador carga una web
que contiene un applet, éste se descarga en el navegador web y comienza a
ejecutarse. Esto nos permite crear programas que cualquier usuario puede
ejecutar con tan solo cargar la página web en su navegador.
o Se pueden descargar de Internet y se observan en un navegador. Los
applets se descargan junto con una página HTML desde un servidor web y se
ejecutan en la máquina cliente.
o No tienen acceso a partes sensibles (por ejemplo: no pueden escribir
archivos), a menos que uno mismo le dé los permisos necesarios en el
sistema.
o No tienen un método principal.
o Son multiplataforma y pueden ejecutarse en cualquier navegador que
soporte Java.
Midlets:
o Son aplicaciones creadas en Java para su ejecución en sistemas de propósito
simple o dispositivos móviles. Los juegos Java creados para teléfonos
móviles son midlets.
o Son programas creados para dispositivos embebidos (se dedican a una sola
actividad), más específicamente para la máquina virtual Java MicroEdition
(Java ME).
o Generalmente son juegos y aplicaciones que se ejecutan en teléfonos
móviles.
Página 5
Instrucciones básicas Java
Servlets
o Son componentes de la parte del servidor de Java EE, encargados de generar
respuestas a las peticiones recibidas de los clientes.
o Los servlets, al contrario de los applets, son programas que están pensados
para trabajar en el lado del servidor y desarrollar aplicaciones Web que
interactúen con los clientes.
Actualmente hay tres ediciones de Java. Cada una de ellas se corresponde con una
plataforma que incluye una serie de funciones, paquetes y elementos del lenguaje (es
decir la API, Application Program Interface).
Java SE .- Java Standard Edition. Antes se la conocía como J2SE (el dos se refiere a
Java 2). Permite escribir código Java relacionado con la creación de aplicaciones y
applets en lenguaje Java común.
Java EE.- Java Enterprise Edition. Todavía conocida como J2EE. Pensada para la
creación de aplicaciones Java empresariales y del lado del servidor.
Java ME.- Java Mobile Edition. También conocida como J2ME. Pensada para la
creación de aplicaciones Java para dispositivos móviles.
Si bien en sus comienzos de Java la utilización de la línea de comandos era algo habitual,
con el paso del tiempo, se fueron desarrollando aplicaciones que incluían las herramientas
necesarias para realizar todo el proceso de configuración y programación de forma más
sencilla, fiable y rápida. Estas aplicaciones reciben el nombre de entornos de desarrollo.
JBuilder. Entorno completo creado por la empresa Borland (famosa por su lenguaje
Delphi) para la creación de todo tipo de aplicaciones Java, incluidas aplicaciones
para móviles. Es un entorno muy potente.
Página 6
Instrucciones básicas Java
Microsoft Visual J++ y Visual J#. Ofrece un compilador recomendable para los
conocedores de los entornos de desarrollo de Visual Studio y Visual [Link]
respectivamente. Pero el Java de Microsoft no es estándar y por ello es muy poco
utilizado.
El entorno que hemos seleccionado llevar a cabo nuestros desarrollos de software, en este
módulo profesional, será Eclipse, al ser uno de los más utilizados.
Antes de empezar a describir los elementos básicos de un programa, tenemos que hacer
referencia a las librerías, es decir al conjunto de clases ya definidas, que facilitan la
creación de nuestros programas. En el caso de Java estas librerías reciben el nombre de
paquetes.
Cuando se instala el kit de desarrollo de Java, además de los programas necesarios para
compilar y ejecutar código Java, se incluyen miles de clases dentro de cientos de
paquetes ya listos que facilitan la generación de programas. Algunos paquetes sirven para
utilizar funciones matemáticas, funciones de lectura y escritura, comunicación en red,
programación de gráficos, etc.
Por ejemplo la clase System está dentro del paquete [Link] (paquete básico) y posee
el método [Link] que necesitamos para escribir fácilmente por pantalla. Para poder
utilizar la clase, debemos incorporar ese código y para ello debemos utilizar la sentencia
import, colocada en la parte superior de todo el código, con la estructura arborescente
necearia para llegar a la clase.
import [Link]....clase
Esa sentencia también permite utilizar el comodín asterisco (“*”) para incorporar todas las
clases que están dentro del paquete.
En el ejemplo se pide incluir en el código todas las clases que están dentro del paquete
awt de java. El paquete awt contiene clases para crear aplicaciones para entornos
gráficos.
[Link]
Página 7
Instrucciones básicas Java
Un comentario es un texto que se incluye en el código fuente del programa, con la idea de
facilitar la legibilidad del código a los programadores y cuyo contenido es ignorado por el
compilador. Es fundamental comentar los códigos de los programas.
Los comentarios suelen utilizarse para incluir información sobre el autor del código, su
fecha de creación y modificación, para aclarar el significado de alguna sección del código,
para describir el funcionamiento de los métodos, etc.
Cuando los comentarios ocupan más de una línea se encierran entre los símbolos / * y */
EL funcionamiento es el siguiente:
Cada línea javadoc se suele iniciar con eL símbolo de asterisco (*) vpara mejorar su
legibilidad. Dentro de esa línea se puede incluir cualquier texto; incluso se pueden utilizar
códigos HTML.
En el código javadoc se pueden usar etiquetas especiales, las cuales comienzan con el
símbolo @ y que pueden ser:
Página 8
Instrucciones básicas Java
El código javadoc hay que colocarlo en tres sitios distintos dentro del código java de la
aplicación:
Al principio del código de la clase (antes de cualquier código Java). En esta zona se
colocan comentarios generales sobre la clase o interfaz que se crea mediante el
código Java. Dentro de estos comentarios se pueden utilizar las etiquetas:
@author, @version, @see, @since y @deprecated
Delante de cada método. Los métodos describen el comportamiento que tiene los
objetos que pertenecen a esa clase. Delante de cada método los comentarios
javadoc se usan para describir al método en concreto. Además de los comentarios
que podamos hacer, en esta zona se pueden incluir las etiquetas: @see, @param,
@exception, @return, @since y @deprecated
Delante de cada atributo. Se describe para qué sirve cada atributo en cada clase.
Puede poseer las etiquetas: @since y @deprecated
Ejecutamos javadoc.
Página 9
Instrucciones básicas Java
Página 10
Instrucciones básicas Java
Al igual que sucede en el mundo real, que identificamos un objeto con un nombre, los
lenguajes de programación utilizan nombres para identificar a los diferentes elementos de
un programas, como son las variables, los métodos, las clases, etc. Estos nombres
reciben el nombre de identificadores.
Utilizar identificadores que comienzan por letras mayúsculas para aquellos elementos
que sean públicos y por minúsculas cuando sean privados.
Nombrar a las constantes con todas las letras en mayúscula y si la constante la forma
más de una palabra separarlas por el símbolo del subrayado (“_”).
Utilizar la nomenclatura ÇamelCase para aquellos identificadores que contienen varias
palabras.
Utilizar identificadores claros y descriptivos, pero no excesivamente largos.
Por ejemplo, si queremos recoger los valores del número de horas extras
trabajadas, número de horas de ausencia del trabajador y número de horas
semanales del trabajador según convenio, entenderemos que N1, N2 y N3, no
son nombres de variables adecuadas, pues no son descriptivas. Parece más
adecuado utilizar identificadores como: horasExtrasTrabajador, horasAusencia,
horasSemanalesConvenio.
Las palabras reservadas (keywords), son palabras que tienen un determinado significado
para el compilador y no pueden ser utilizadas para otros fines. En Java tenemos:
Página 11
Instrucciones básicas Java
Java tiene muchos tipos de datos predefinidos. A estos tipos de datos ya definidos en el
lenguaje se le denominan primitivos.
Java es un lenguaje fuertemente “tipado”, lo que implica que cualquier objeto que se
utilice en un programa deber tener un tipo asociado y que además debe ser declarado
antes de ser utilizado.
Página 12
Instrucciones básicas Java
El tipo char se utiliza para almacenar un carácter único. Una variable de tipo char utiliza
dos bytes para almacenar el código Unicode del carácter.
Los caracteres especiales, es decir, aquellos que tienen un significado especial para Java
se deben representar de una forma especial, es lo que se conoce como secuencia de
escape, y para ello se utiliza el carácter “\” seguido por otro carácter que indica el
significado de la secuencia de escape.
secuencia significado
\t Tabulación
\b Retroceso
\n Salto de línea
\r Retorno de carro
\f Salto de página
\’ Comilla simple
\" Comilla doble
\\ Barra invertida
El tipo de dato String se utiliza para almacenar cadenas de caracteres. Este tipo de dato
realmente es una clase, pero Java permite utilizarlo como un tipo primitivo del lenguaje,
es decir, no hay que instanciarlo para poder utilizarlo.
Las cadenas de caracteres son invariables, porque durante la asignación de un valor a una
variable de tipo cadena de caracteres se reserva algo de espacio en memoria para el
almacenamiento de la cadena. Si más adelante esta variable recibe un nuevo valor, se le
atribuye una nueva ubicación en memoria. Todo este proceso se hace de forma
transparente. Con este mecanismo se consigue que las cadenas puedan tener diferentes
tamaños en diferentes momentos, pero se pierde tiempo en la reubicación de los datos.
String NombreAlumno;
Dado que realmente String es una clase, Java proporciona numerosos métodos para su
tratamiento, como veremos más adelante.
Página 13
Instrucciones básicas Java
El tipo booleano permite tener una variable que puede almacenar un valor de dos
posibles: true (verdadero) y false (falso)
boolean variableLogica;
variableLogica = true;
Básicamente cada tipo lo que nos define es un rango de valores permitidos, y las
operaciones que se pueden efectuar, a modo de ejemplo:
Página 14
Instrucciones básicas Java
Las variables son contenedores de información que nos van a permitir almacenar
información de diferente tipo. Según la ubicación de su declaración una variable
pertenecerá a una de las categorías siguientes:
Declarada con la palabra clave static en el interior de una clase, la variable es una
variable de clase. Se puede acceder a ella directamente por el nombre de la clase y
existe en un único ejemplar, que será compartido por todos los objetos de la clase.
Declarada como parámetro de un método es una variable local, con la salvedad que
debe ser inicializada antes o durante la llamada de la función.
Para poder utilizar una variable, previamente debemos definirla, es decir, debemos indicar
el tipo de dato que va a almacenar. Como ya dijimos, Java dispone de dos categorías de
tipos de variables:
Los tipos por valor. La variable contiene realmente la información. Esta variable se
guarda en el stack y no es inicializada cuando se crea. La forma de declarar una
variable de tipo valor es la siguiente:
Tipo_de_dato identificador_de_la_variable;
Ejemplos:
int segundos; // segundos contendrá un número entero, sin decimales
boolean decisión; //decisión sólo puede ser verdadera o falsa
Página 15
Instrucciones básicas Java
Se puede declarar más de una variable en la misma línea, separándolas por comas,
incluso podemos declarar una variable asignándole el resultado de una operación:
Como ya dijimos, se puede hacer esta declaración en el bloque de código de una clase, en
los parámetros de un método o en un bloque de código en el interior del método. Sólo el
código del bloque donde se declara la variable puede utilizarlo.
Página 16
Instrucciones básicas Java
No se pueden tener dos variables con mismo nombre con el mismo alcance. Sin embargo,
tenemos la posibilidad de declarar una variable interna de un método o en un parámetro
del método con el mismo nombre que una variable declarada a nivel de la clase. En este
caso, la variable declarada al nivel de la clase queda oculta por la variable interna de la
función.
{
i=25;
j=30;
{
int aux; // variable local que sólo tendrá vigencia en este bloque
aux =j;
j= i;
i= aux;
}
}
La declaración de variables, entre las líneas del código, siendo válida, conlleva código más
difícil de leer y de mantener. Salvo que se quiera crear un ámbito muy concreto a una
variable, no debemos declararla entre las instrucciones.
private: la variable sólo se utiliza con el código de la clase donde está definida.
static: esta palabra clave se asocia a una de las palabras clave anteriores para
transformar una declaración de variable de instancia en declaración de variable de
clase (utilizable sin que exista una instancia de la clase).
Página 17
Instrucciones básicas Java
El ciclo de vida de una variable nos permite especificar durante cuánto tiempo el
contenido de una variable estará disponible a lo largo de la ejecución de la aplicación.
Para una variable declarada en un método, la duración del ciclo de vida corresponde a la
duración de la ejecución del método. En cuanto termine la ejecución del método, la
variable se elimina de la memoria. Volverá a ser creada en la siguiente llamada.
Una variable declarada en el interior de una clase puede ser utilizada mientras esté
disponible un objeto de esa clase. Las variables declaradas con la palabra clave static
están accesibles durante toda la ejecución de la aplicación.
Los valores numéricos enteros se pueden utilizar con su representación decimal, octal,
hexadecimal o binario. Las cuatro líneas siguientes de código surten el mismo efecto.
Los valores numéricos reales se pueden expresar con la notación decimal o la notación
científica.
Java puede insertar caracteres subrayado (“_”) en los literales numéricos para facilitar su
lectura.
precio = 1_234_876_567;
precio = 1234876567;
Los valores literales enteros se consideran por defecto como tipos int. En cuanto a los
valores literales reales se consideran como tipos double. Esta consideración que hace el
lenguaje es, a veces, fuente de errores de compilación
Para evitar este problema tenemos que utilizar un sufijo F (mayúscula o minúscula) para
forzar la definición del literal.
Página 18
Instrucciones básicas Java
Una instrucción es una acción. Una instrucción es una expresión válida escrita en un
lenguaje de programación. Las instrucciones se pueden utilizar para asignar un valor a
una variable, o para conocer el valor que contiene, para realizar una comparación, un
proceso repetitivo, para llamar a un método, para definir objeto, etc.
{
// Lista de instrucciones finalizadas en ;
}
Toda variable que se defina dentro de un bloque de instrucciones, solo existirá dentro de
dicho bloque, fuera de ahí será inaccesible.
Toda variable que se defina dentro de un método, será local y solo podrá ser accedida por
las instrucciones que forman ese método.
Página 19
Instrucciones básicas Java
Una instrucción de asignación, es aquella que permite almacenar en una variable un valor.
Para realizar la asignación se utiliza el operador “=”, con la idea de que “lo que está a la
derecha del igual, se asigna a la variable que está a su izquierda”.
También incluiremos entre estas instrucciones a aquellas formadas por cualquiera de los
operadores de asignación combinados (+=, -=, *=, /=, %=, principalmente). También
a las formadas por los operadores de incremento o decremento (++, --), que llevan una
asignación implícita.
Todas esas expresiones son sentencias al añadirles el punto y coma, ya que indican una
acción a realizar, que consiste en modificar el valor almacenado en una variable.
saludo = "Hola";
n = 5 * cont;
a++;
a+=2;
Para declarar una variable basta con indicar el tipo de una variable seguido de su
identificador y terminar con un punto y coma, como cualquier otra sentencia. El
compilador de Java siempre que encuentra un tipo seguido de un identificador, interpreta
que se trata de una declaración.
Java es, según lo dicho, un lenguaje fuertemente tipado. Esa cualidad, lejos de ser un
inconveniente como puede parecer a primera vista, es una garantía de seguridad, y de
que los valores que nos vamos a encontrar en una variable son los esperados, y nunca
cualquier otra cosa.
Cuando se declaran constantes debemos utilizar la palabra reservada final y tenemos que
asignarle un valor, que no podrá variar a lo largo de la ejecución del programa. Por
cuestiones de legibilidad del código, se recomienda nombrarlas en mayúsculas.
Página 20
Instrucciones básicas Java
Java también dispone de sentencias de salto incondicional, que pudiendo ser útiles, son
totalmente desaconsejables en condiciones normales. El uso de sentencias de salto
incondicional debería ser nulo.
La ejecución secuencial se hace tal y como se le indicaría a una persona: “Escribe las
tareas en el orden en que vas a hacerlas, es decir, una detrás de otra”.
En Java pueden escribirse varias instrucciones, incluso todo el programa, en una sola
línea, aunque lo recomendable es escribir cada una de ellas en una línea y usar
indentación o tabulación. También es posible, y ocurre frecuentemente, que una sola
sentencia ocupe varias líneas del programa.
Pero al permitir esas posibilidades nos obliga a delimitar donde termina y donde empieza
cada sentencia y para ello todas las sentencias se terminan con un carácter de punto y
coma (;).
Existe la sentencia nula, que es el carácter punto y coma. En cualquier sitio donde la
sintaxis de Java admita una sentencia, también podremos poner la sentencia nula, es
decir, simplemente un punto y coma, para indicarle que no haga nada. No obstante,
cualquier programa puede hacerse sin necesidad de usar la sentencia nula y si alguna vez
se usa es por dar claridad al código.
En cuanto a la tabulación del código, más conocida como indentación, en Java se utiliza el
estilo K&R (Kernighan & Ritchie). Este estilo consistente en abrir la llave en la misma línea
de la declaración de la orden, en nuevas líneas se van tabulando las instrucciones que
corresponden a esa estructura y cerrando la llave en una nueva línea, al mismo nivel que
la declaración.
if (variable== TRUE) {
intrucción1;
instruccion2;
…
}
Es evidente que el estilo es totalmente opcional, son las reglas de estilo de la empresa en
la que se desarrolle, el que lo marcará. Así, por ejemplo, en la actualidad hay otro modelo
bastante utilizado, en especial, por los programadores de Visual Studio de Micrsoft, que es
el estilo Allman (definido por Eric Allman), y básicamente consiste en que la llave de
apertura está la línea siguiente a la declaración de la orden.
Página 21
Instrucciones básicas Java
if (variable== TRUE)
{
intrucción1;
instruccion2;
…
}
Instrucción if (si)
if (ExpresionCierta) instrucción;
if (ExpresionCierta)
{
// Instrucciones
}
if (valor == 50)
{
numero=1;
a=2*b;
}
La expresión que se evalúa estará encerrada entre paréntesis. Dentro de una expresión
puede haber una o más condiciones. Es conveniente que cada condición esté encerrada
entre paréntesis, por cuestiones de legibilidad.
Página 22
Instrucciones básicas Java
if (ExpresionCierta)
{
// Instrucciones para el true
}
else
{
// Instrucciones para el false
}
if (ExpresionCierta)
{
if (otraExpresionEsCierta)
{
// Instrucciones para el true
}
else
{
// Instrucciones para el false
}
}
else
{
// Instrucciones para el false
}
Página 23
Instrucciones básicas Java
En el ejemplo anterior se ha utilizado el estilo K&R, que ocupa menos líneas de código,
aunque quizá resulta más difícil de ver los bloques de instrucciones. Repetimos el mismo
código con la notación Allman
Página 24
Instrucciones básicas Java
if (x != 0.0) s = [Link](x)/x;
else s = 1.0;
Si escribimos: a ? b : c ? d : e
se evalúa como: a ? b : (c ? d : e) y no como: (a ? b : c) ? d : e
Mayor = (x > y) ? x : y;
if (x > y) Mayor = x;
else Mayor = y;
Página 25
Instrucciones básicas Java
Cuando se tienen muchas alternativas posibles para elegir, el uso de sentencias if-else
puede resultar bastante engorroso, siendo más habitual la utilización de una sentencia
switch.
switch (expresión)
{
case valor1:
Instrucción 11;
...
break;
case valor2:
Instrucción 21;
...
break;
default:
Instrucción n1;
...
break;
}
Hemos de tener en cuenta que cada instrucción del bloque de instrucciones terminará con
su correspondiente punto y coma (;)
El valor que se debe probar puede estar contenido en una variable pero también
puede ser el resultado de un cálculo. En tal caso, sólo se ejecuta el cálculo una
única vez al principio del switch.
El tipo del valor probado puede ser numérico entero, carácter, cadena de caracteres
o enumeración. Por supuesto, es necesario que el tipo de la variable probada
corresponda al tipo de los valores en los diferentes case.
Cuando se encuentre una concordancia, entre el valor probada y uno de los casos,
el bloque de código asociado a ese caso se ejecuta. Si no, se compara el valor
obtenido con el valor del case siguiente y así sucesivamente hasta encontrar la
concordancia o hasta el default.
Página 26
Instrucciones básicas Java
Cada uno de los bloques de código debe ser finalizado por la instrucción break, en
caso contrario, la ejecución continuará por el bloque de código siguiente hasta
encontrar una instrucción break o hasta el fin de la estructura switch. Esta solución
se puede utilizar para poder ejecutar un mismo bloque de código para diferentes
valores probados.
case constante1:
case constante2: <bloqueInstrucciones>
break;
Ejemplo.- Obtener una nota aleatoria entre 0 y 14. Calificar con letras la nota. Toda nota
superior a 10 se considera un error.
class Notas
{
public static void main (String[] args)
{
int notaEntera;
Random numAleatorio;
switch (notaEntera)
{
case 0:
case 1:
case 2: [Link]("Muy Deficiente");
break;
case 3:
case 4: [Link]("Insuficiente");
break;
case 5: [Link]("Suficiente");
break;
case 6: [Link]("Bien");
break;
case 7:
case 8: [Link]("Notable");
break;
case 9: [Link]("Sobresaliente");
break;
case 10:[Link]("Matrícula de Honor");
break;
default:
[Link]("Nota errónea: Sólo son notas válidas los números
enteros del 0 al 10");
}
}
}
Página 27
Instrucciones básicas Java
while (ExpresionCierta)
{
// Intrucciones;
}
Por la estructura del while, dentro del bloque de instrucciones deberá haber alguna
instrucción que en algún momento pueda alterar el valor de la condición, pues en otro
caso se entrará en un bucle infinito.
Ejemplo, escribir el proceso repetitivo que me mostraría los números enteros desde el 0
hasta el 9, ambos inclusive
i=0;
while (i<10)
{
[Link](i);
i++;
}
Nota Importante.- Cuando se captura un dato y ese dato, además de ser un valor que se
puede utilizar en el proceso, se pueda utilizar como condición de finalización, caso
anterior (numero además de contener un valor para el proceso, puede contener un valor
para finalizar), siempre se utiliza una expresión while para construir el proceso.
Página 28
Instrucciones básicas Java
do
{
// Intrucciones
} while (ExpresionCierta);
Ejemplo, escribir el proceso repetitivo que me mostraría los números enteros desde el 0
hasta el 9, ambos inclusive
i=0;
do
{
[Link](i);
i++;
} while (i<10);
Su funcionamiento es el siguiente:
Página 29
Instrucciones básicas Java
for(int k=1;k<10;k++)
{
for (int l = 1; l < 10; l++)
{
[Link](k * l + "\t");
}
[Link]();
}
Página 30
Instrucciones básicas Java
Existe otra sintaxis del bucle for que permite ejecutar un bloque de código para cada
elemento contenido en una colección. Esta sintaxis se introdujo en Java 5 (Tiger) con
objeto de facilita recorrer las colecciones de forma similar a los bucles for in de Python o
los foreach de Visual Studio y PHP.
No hay noción de contador en esta estructura ya que efectúa por sí misma las iteraciones
en todos los elementos presentes en el array o colección.
La variable declarada en la estructura sirve para extraer uno a uno los elementos del
array o de la colección para que el bloque de código pueda manipularlos. Por supuesto
hace falta que el tipo de la variable sea compatible con el tipo de los elementos
almacenados en el array o la colección.
Ejemplo, se define un array con cuatro colores y se pide mostrarlos en pantalla, con un
bucle for clásico y con un bucle for de iteración.
String[] array={"rojo","verde","azul","blanco"};
String[] array={"rojo","verde","azul","blanco"};
Página 31
Instrucciones básicas Java
Instrucción break
while (condicion1)
{
sentencia1;
for ( ; ; ) // Bucle infinito
{
sentencia2;
if (condicion2)
{
sentencia3;
……
}
else break; // Forzamos la salida del bucle
}
sentencia4;
……
}
while (condicion1)
{
sentencia1;
for ( ;condicion2; ) // Mientras condicion2 sea cierta
{
sentencia2;
if (condicion2)
{
sentencia3;
……
}
}
sentencia4;
}
Página 32
Instrucciones básicas Java
while (condicion1)
{
sentencia1;
while (condicion2) // Mientras condicion2 sea cierta
{
sentencia2;
if (condicion2)
{
sentencia3;
……
}
}
sentencia4;
}
Esta instrucción, si bien se utiliza, no es aconsejable utilizarla, pues hace el código menos
comprensible.
Instrucción continue
La sentencia continue también se usa para alterar el flujo normal de ejecución en las
sentencias repetitivas while , do while y for, pero no se puede usar con switch).
while (condicion1)
{
sentencia1;
while (condicion2)
{
sentencia2;
if (condicion3)
{
sentencia3;
…..
}
else continue;
sentencia4;
}
}
Página 33
Instrucciones básicas Java
while (condicion1)
{
sentencia1;
while (condicion2)
{
sentencia2;
if (condicion3)
{
sentencia3;
sentencia4;
}
}
}
Esta instrucción, si bien se utiliza, no es aconsejable utilizarla, pues hace el código menos
comprensible.
Pudiera ser que el bucle que queremos interrumpir no es el más interno, sino un bucle
más externo que está más “alejado” de la sentencia break o continue. En ese caso,
podemos indicar el lugar al que queremos transferir el control, mediante el uso de
etiquetas.
bucleExterno:
while (condicion1)
{
sentencia1;
while (condicion2)
{
sentencia2;
if (condicion3)
{
sentencia3;
….
}
else
{
continue bucleExterno;
}
sentencia4;
}
}
Página 34
Instrucciones básicas Java
Lo mismo puede hacerse con la sentencia break. No obstante el uso de este tipo de
etiquetas, que permiten saltos del control del flujo hacia atrás y a zonas de código más
remotas, son altamente desaconsejables, por enturbiar la claridad del código, y
escasamente útiles.
Nota.- El uso de la instrucción continue con etiquetas está muy mal visto, muy pocos
casos justifican su uso, pues se dificulta el seguimiento del código. Debemos evitar usarla.
Instrucción return.
Lo normal es que el return sea la última línea de un método, de forma que se cumpla el
principio de una entrada – una salida, pero también puede usarse en cualquier punto de
un método, y éste terminará en el mismo punto donde se ejecute ese return, incluso
podemos poner varios return en un mismo método.
A pesar de lo dicho anteriormente es aconsejable, por claridad del código, que sólo
aparezca un return al final de cada método.
Una excepción es un evento que ocurre durante la ejecución del programa que interrumpe
el flujo normal de las sentencias.
Cuando dicho error ocurre dentro de un método Java, el método crea un objeto
'exception' y lo maneja la máquina virtual Java. Este objeto contiene información sobre la
excepción, incluyendo su tipo y el estado del programa cuando ocurrió el error. Para el
tratamiento de la excepción, la máquina virtual Java busca en el método que generó el
error, una gestión de excepciones y luego, si no la encuentra, va subiendo por los
métodos llamadores hasta el método main de la aplicación, si es necesario. Cuando se
localiza un gestor de excepción adecuado, se le transmite el objeto Exception para que se
encargue de su tratamiento. Si la búsqueda no da resultado, la aplicación produce un
mensaje de error y se finaliza abruptamente el programa.
Página 35
Instrucciones básicas Java
Por ejemplo, supongamos que tenemos una función que lee un fichero completo dentro de
la memoria. A grandes rasgos, la función se podría parecer a esto.
A primera vista esta función parece bastante sencilla, pero ignora todos aquellos errores
potenciales.
Para responder a estas cuestiones dentro de la función, tendríamos que añadir mucho
código para la detección y el manejo de errores. El aspecto final de la función se parecería
esto.
inicializar codigodeError = 0;
abrir el fichero nombreFichero
si (ficheroAbierto)
{
determinar la longitud del fichero;
si (obtenerLongitudDelFichero)
{
asignar suficiente memoria;
si (obtenerSuficienteMemoria)
{
leer el fichero a memoria;
si (falloDeLectura)
{
codigodeError = -1;
}
}
si no
{
codigodeError = -2;
}
}
Página 36
Instrucciones básicas Java
si no
{
codigodeError = -3;
}
Java proporciona una solución elegante al problema del tratamiento de errores: las
excepciones. Las excepciones le permiten escribir el flujo principal de su código y tratar
los casos excepcionales en otro lugar. Si la función leerFcihero utilizara excepciones en
lugar de las técnicas de manejo de errores tradicionales se podría parecer a esto.
Página 37
Instrucciones básicas Java
catch (falloLectura)
{
retornar -1
}
catch (falloCerrarFichero)
{
retornar -4
}
}
Ahora el código es más legible. Las excepciones no evitan el esfuerzo de hacer el trabajo
de detectar, informar y manejar errores. Lo que proporcionan las excepciones es la
posibilidad de separar los detalles oscuros de qué hacer cuando ocurre algo fuera de la
normal.
Otra ventaja de las excepciones es la posibilidad del propagar el error encontrado sobre la
pila de llamadas a métodos. Supongamos que el método leerFichero es el cuarto método
en una serie de llamadas a métodos anidadas realizadas por un programa principal:
metodo1 llama a metodo2, que llama a metodo3, que finalmente llama a leerFichero.
Supongamos también que metodo1 es el único método interesado en el error que ocurre
dentro de leerFichero. Tradicionalmente las técnicas de notificación del error forzarían a
metodo2 y metodo3 a propagar el código de error devuelto por leerFichero sobre la pila
de llamadas hasta que el código de error llegue finalmente a metodo1 -- el único método
que está interesado en él.
Página 38
Instrucciones básicas Java
La orden que nos permite tratar las excepciones es la orden try-catch. Asociada a estas
está finally, que es opcional.
Con la orden try protegemos un bloque de código contra las excepciones que podrían
introducirse en él. El código "peligroso" debe ser ubicado en un bloque try. Si una
excepción se activa en este bloque de código, se examina el bloque, o bloques catch
(puede haber más de uno) hasta encontrar uno capaz de tratar la excepción y ejecuta el
código que hayamos escrito. Si no hubiera ninguno, se propagará la excepción hacia los
métodos llamadores.
try
{
...
// Instrucciones peligrosas
...
}
Página 39
Instrucciones básicas Java
En el bloque catch, podemos tratar excepciones concretas y poner una entrada para un
tipo genérico (Exception). La idea es parecida a la instrucción switch, con la opción
default, por eso pondremos siempre el tratamiento desde los tipos más concretos hasta
los más generales.
El código de cada bloque catch puede obtener más información sobre la excepción que
debe tratar utilizando los métodos disponibles en la clase correspondiente a la excepción,
entre los que vamos a destacar getMessage, que permite obtener el mensaje de error
asociado a la excepción.
import [Link].*;
try
{
[Link]("Introduzca el numerador: ");
numerador = [Link]();
cociente = numerador/(denominador);
[Link]("El cociente es "+cociente);
}
catch (ArithmeticException error)
{
[Link]("El denominador no puede ser cero. Error: "+[Link]());
}
catch (InputMismatchException error)
{
[Link]("Los datos deben ser enteros. Error: "+[Link]());
}
catch (Exception error)
{
[Link]("Error: "+[Link]());
}
}
}
Página 40
Instrucciones básicas Java
Un bloque catch puede gestionar varios tipos de excepciones y para ello, los distintos
tipos de excepciones que puede procesar deben indicarse en el paréntesis, separándolos
mediante el carácter |.
Página 41
Instrucciones básicas Java
import [Link].*;
try
{
[Link]("Introduzca el numerador: ");
numerador = [Link]();
cociente = numerador/(denominador);
[Link]("El cociente es "+cociente);
}
Dado que las excepciones son clases, podemos crear nuestra clase excepción y utilizar un
mecanismo de herencia, para que herede de la clase Exception. E este caso se
recomienda que el nombre de la clase con el término Excepcion.
Una vez hecho esto podemos crear objetos de la clase y activar una excepción con la
palabra reservada throw. La activación de una excepción en una función con la palabra
clave throw provoca la salida inmediata de la función.
import [Link].*;
Página 42
Instrucciones básicas Java
try
{
[Link]("Introduzca el numerador: ");
numerador = [Link]();
cociente = numerador/(denominador);
[Link]("El cociente es "+cociente);
}
catch (MisExcepciones error)
{
[Link]("Error: "+[Link]);
}
}
}
Un programa leerá o escribirá en el flujo, sin importarle desde donde viene la información
o a dónde va. Tampoco le importa el tipo de los datos que se leen o se escriben.
El nivel de abstracción del lenguaje hace que el programa no tenga que saber nada de las
características del dispositivo, ni del tipo de dato que se envía, lo que se traduce en una
facilidad más, a la hora de escribir los programas. Java utiliza este concepto y para ello
modela flujos mediante clases del paquete [Link].
Dado que los flujos de datos son objeto de estudio posteriormente, nos limitaremos a ver
cómo podemos capturar datos del teclado y cómo mostrar resultados en pantalla.
Página 43
Instrucciones básicas Java
Este método sólo permite leer una letra, y por ello, si queremos leer una cadena de
caracteres, emplearemos lo siguiente:
A partir de ahí, podemos realizar una llamada al método readLine que leerá cadenas de
caracteres, hasta que el usuario pulse la tecla <Entrar>
Un problema es que la línea del readLine puede lanzar Excepciones, y por ello debemos
encerrarla entre instrucciones try/catch para poder gestionar el posible error.
String línea;
try
{
línea = [Link]();
}
catch(Exception e)
{
[Link]();
}
[Link](línea);
Ahora bien, si lo que queremos es leer un número del teclado, debemos capturar ese
número como cadena de caracteres y luego realizar la conversión.
Si el usuario escribe por ejemplo 123, con la clase BufferedReader obtendremos un String
que contiene "123", es decir, tres caracteres. Ahora, para convertir el String en un
número entero (sin decimales), podemos usar la clase Integer, para convertir un String a
int, siempre que sea posible.
La clase Integer es muy estricta. Para convertir el String a int necesita que el String sea
exactamente un int. Cualquier carácter o letra que tenga el String y no valga, hará que la
conversión falle o que no sea correcta.
Página 44
Instrucciones básicas Java
import [Link].*;
try
{
[Link]("Introduzca un primer numero : ");
n1 = [Link]([Link]());
suma=n1+n2;
[Link] ("La suma " +n1 + " + " + n2 +" = "+ suma);
}
catch (Exception e)
{
[Link]();
}
}
}
La clase Scanner permite crear objetos capaces de leer información desde una fuente de
datos que puede ser un archivo, una cadena de caracteres, el teclado, etc. y para poder
utilizarla es necesario importarla.
import [Link];
import [Link];
class Ejemplo
{
public static void main(String arg[])
{
String variableString;
Scanner entrada=new Scanner([Link]);
Página 45
Instrucciones básicas Java
Luego vemos como se imprime el aviso correspondiente del tipo de datos que se va a
pedir y se guarda todo lo que se teclee (hasta que se pulse la tecla <Entrar>) en la
variable "variableString”, para lo cual se utiliza el método next(). Es importante señalar
que el método next() no admite espacios en blanco, considerando el espacio como el final
del texto. Por ello, si queremos capturar varias palabras haremos uso del método
nextLine().
De la misma forma que es posible capturar un dato de tipo String, con el método next(),
es posible capturar otros tipos de datos. Así, dependiendo del tipo de dato al que
corresponda la información que se va a capturar tendremos, para los tipos de datos más
importantes:
Con Scanner podemos introducir varios datos en una sola línea o en varias sin importar el
tipo de datos que introduzcamos, de tal manera que se pueden colocar números y
cadenas, separándolos por un espacio en blanco y luego hacer la correcta asignación.
Por ejemplo si queremos sumar dos números, podemos escribir en una sola línea “2 3” y
para que el programa separe la entrada en dos variables lo escribimos de la forma
siguiente:
import [Link];
Página 46
Instrucciones básicas Java
import [Link];
[Link]("Teclee el nombre:");
nombre=[Link]();
[Link]("Teclee la edad:");
edad=[Link]();
También hay que tener cuidado con el funcionamiento de la clase Scanner, puesto que al
utilizar un buffer de lectura, donde va acumulando los caracteres leídos del teclado, es
posible que en el buffer, tras una lectura, queden caracteres pendientes de leer y, en ese
caso, en la lectura siguiente que se haga se asignará directamente esos caracteres
pendientes, sin esperar a que el usuario teclee sus datos. Consideremos el código
siguiente:
import [Link];
Página 47
Instrucciones básicas Java
En este caso, tras la lectura de la edad, queda un retorno de carro en el buffer de lectura
y dado, que el carácter que queda es compatible con la lectura siguiente, el ordenador en
la línea siguiente asume que el usuario ha pulsado intro directamente, por lo que el
usuario no puede teclear el nombre, en la línea nombre=[Link]();
Cuando esto nos ocurra, debemos vaciar el buffer de lectura, utilizando una falsa captura
de datos.
import [Link];
Página 48
Instrucciones básicas Java
Una tercera posibilidad es crear nuestra propia clase, donde podamos establecer, por
código, todas las características que queramos.
try
{
buzon=[Link]();
}
catch (Exception e)
{
}
return buzon;
}
Página 49
Instrucciones básicas Java
import [Link];
public class Ejemplo
{
public static void main(String[] args)
{
int numeroUsuario;
La salida de datos en modo texto se puede hacer en Java fácilmente a través del método
println() de [Link].
Esta sentencia hace que aparezca por pantalla la secuencia de caracteres escrita entre
comillas. Esta instrucción es tan flexible que nos permite igualmente escribir enteros,
reales, caracteres, etc.
[Link] (area);
Si queremos que una instrucción nos muestre varios literales o valores de variables,
utilizaremos el símbolo + .
[Link]("Hola Mundo");
[Link]("Hola Mundo \n");
Página 50
Instrucciones básicas Java
El método printf nos permite dar a la salida en consola un formato específico, se comporta
de manera similar a print pero te permite especificar, por ejemplo, la cantidad de
números que deseas obtener tras el punto decimal.
Dado que en el ejemplo anterior especificamos que los espacios a ocupar serían 6, la
salida con formato es así " 13.70", es decir, se agrega un espacio al inicio para completar
los 6 que indicamos.
[Link]("$%6.2f a pagar",total);
Cabe mencionar que los argumentos del formato (en este caso el 6 y el .2) son
opcionales, puedes omitir cualquiera de los dos o ambos.
double n = 123.4567;
[Link]("El cuadrado de %1$f es %2$.2f\n", n, n*n);
Página 51
Instrucciones básicas Java
Especificadores de formato:
%[posición_dato$][indicador_de_formato][ancho][.precision]carácter_de_conversión
posición_dato: indica la posición del dato sobre el que se va aplicar el formato. El primero
por la izquierda ocupa la posición 1.
ancho: Indica el tamaño mínimo, medido en número de caracteres, que debe ocupar el
dato en pantalla.
.precision: Indica el número de decimales que serán representados. Solo aplicable a datos
de tipo float o double.
carácter_de_conversión: Carácter que indica cómo tiene que ser formateado el dato. Los
más utilizados se muestran en la tabla.
Página 52
Instrucciones básicas Java
[Link]("%-10s", "Total:");
Salida: Total:bbbb
[Link]("%10s", "Total:");
Salida: bbbbTotal:
q = 1.0/2.0;
q = 1000.0/3.0;
[Link] ("1000/3.0 = %7.1e h /n", q);
q = 3.0/4567.0;
[Link] ("3.0/4567.0 = %7.3e /n", q);
q = -1.0/0.0;
[Link] ("-1.0/0.0 = %7.2e /n", q);
q = 0.0/0.0;
[Link] ("0.0/0.0 = %5.2e /n", q);
[Link] ("pi = %5.3f, e = %10.4f /n", [Link], Math.E);
double r = 1.1;
[Link] ("C = 2 * %1$5.5f * %2$4.1f, "+"A = %2$4.1f * %2$4.1f * %1$5.5f
/n",[Link], r);
}
Página 53
Instrucciones básicas Java
Los métodos (también llamados funciones por tradición de los lenguajes estructurados)
son la base de la programación en Java. Los métodos pertenecen a las clases.
Cualquier llamada a un método es una indicación al compilador, para que sustituya esa
llamada por todas las instrucciones que contiene ese método en su definición, y que las
ejecute. Por tanto, añadir punto y coma a una llamada a un método es una sentencia en
Java, e indica claramente una tarea a realizar. A su vez, un método puede llamar a otros
métodos.
Algunos de esos métodos o funciones los podemos definir nosotros mismos, y otros nos
los proporciona el propio lenguaje. Éste es el caso del método println(). Este método nos
lo proporciona Java, pero para llamarlo, tenemos que hacerlo a través del objeto out de la
clase System, que representa el dispositivo de salida estándar, y que suele ser la pantalla.
Pero además, puedo mejorar la versatilidad de mi programa, si para cada ejecución puedo
indicar de alguna forma que tenga en cuenta algunos datos en la ejecución de esas
sentencias, de manera que:
Una cuestión importante es que cuando un método termina de ejecutarse, todas las
variables locales que usa o que haya declarado se borran de la memoria.
Página 54
Instrucciones básicas Java
La accesibilidad de un método define la forma en que los objetos van a poder acceder al
método. El lenguaje Java permite los siguientes ámbitos:
private: indica que el método sólo puede ser usado en la clase donde está definido.
protected: indica que sólo se puede utilizar el método en la clase donde está
definido, en las subclases de esta clase y en las otras clases que forman parte del
mismo paquete.
public: indica que se puede utilizar el método desde cualquier otra clase, sin más
que tener un objeto de esa clase.
static: indica que el método es un método de clase. Puede ser accedido sin tener un
objeto de esa clase.
native: indica que el código del método se encuentra en un fichero externo escrito
en otro lenguaje.
synchronized: indica que el método sólo puede ser ejecutado por un único hilo de
ejecución a la vez.
En la definición de cualquier método siempre hay que indicar el tipo de dato que
devuelve. Pero es posible que no se necesite que el método devuelva nada, por ejemplo,
cuando un método sólo tiene que escribir un mensaje en pantalla. En este caso, se debe
indicar que el método devuelve el tipo “vacío”. Esto se indica con la palabra reservada
void.
Todos lo métodos tienen que tener un nombre, es el nombre del método. Ese nombre es
un identificador, que debe seguir las reglas ya señaladas y, aunque se puede utlilizar el
identificador que quiera, se recomienda comenzar por mayúscula los métodos públicos.
Página 55
Instrucciones básicas Java
Los parámetros que se pasan en la llamada son variables locales al método, en las que se
copian los valores pasados en la llamada. Por tanto, para los tipos primitivos, las
modificaciones sobre ellos no se ven desde fuera del método. Si alguna de ellas tiene
información que necesito, debo declararla como variable global, o devolverla como valor
de retorno del método.
Sin embargo, con los objetos la cosa cambia. Si paso un objeto como parámetro lo que
realmente estoy pasando es la referencia. En el parámetro local se hace una copia del
valor de la referencia. Pero ese valor no es más que la dirección de memoria en la que
está el objeto real, por lo que el método trabajará con el objeto real.
Los parámetros son los que permiten que el método no se ejecute exactamente igual cada
vez. Es la forma de “particularizar” cada ejecución. De momento podemos decir que los
parámetros son valores o variables que se indican entre paréntesis en la definición y en la
llamada a un método. Los parámetros se utilizan en el cuerpo del método para llevar a
cabo las tareas programadas en el mismo, e influyen directamente en el resultado de
ejecutar dicho método, por ejemplo en el valor devuelto (cuando se trate de este caso).
Página 56
Instrucciones básicas Java
Todo programa Java comienza a ejecutarse por un método especial, es el método main.
Este método, que es especial, tiene la siguiente declaración
Si nos fijamos en su declaración el método es public static, esto es, es un método público
y es estático, lo que quiere decir que no necesitamos tener ningún objeto de la clase en la
que está definido el método main, para poder acceder a él. Además no debe devolver
ningún valor y puede recibir una lista de parámetros, que son cadenas de caracteres,
separadas por espacios en blanco.
Además, mediante esta orden, podemos enviar valores al programa. Estos valores reciben
el nombre de argumentos y van separados por un espacio en blanco.
Estos argumentos (args) son recogidos por el método main, a través de los parámetros
del main, que como dijimos, trata como una tabla de cadenas: String[] argumentos
Página 57
Instrucciones básicas Java
Aunque se le suele dar el nombre args, no es obligatorio que este parámetro se llame así,
podemos darle el nombre que queramos.
Ejemplo.- Programa llamado saludo que recibe desde la línea de comandos del sistema
operativo un nombre de persona y lo muestra por pantalla.
Debemos tener en cuenta que todos los valores que se envían a main desde la línea de
comandos son de tipo String. Si uno de los parámetros introducido en la línea de
comandos es un número, el programa lo tratará como un String, por lo que para tratarlo
como número y poder operar matemáticamente con él habrá que hacer la conversión al
tipo numérico adecuado.
Página 58
Instrucciones básicas Java
Los métodos pertenecen a las clases. Para poder llamar (invocar a un método) debemos
tener un objeto (una variable) que pertenezca a esa clase, salvo que sea estático. La
llamada entonces seguirá el formato siguiente:
[Link](<listaParamentros>);
class Ejemplo
{
int buscaMayor(int numero1, int numero2)
{
if (numero1 > numero2) return numero1;
else return numero2;
}
class Ejemplo
{
Página 59
Instrucciones básicas Java
Un método se dice que es recursivo si en una sentencia del cuerpo de ese método se
llama a sí misma. Es importante señalar que los métodos recursivos siempre tienen que
tener un punto de salida, pues si no se estarán llamando a si mismos de forma infinita,
hasta consumir toda la memoria, provocando la ruptura del programa.
La función frecursiva analiza el valor recibido, y como es menor que cinco, entra
por la condición if y se llama a si misma pasándose el valor 1 (i+1) y dejando
pendiente escribir el valor de i (que es cero en ese momento).
Página 60
Instrucciones básicas Java
Cuando la función recibe el valor cinco, no hace nada, porque no entra por el if y
acaba, retornando a quien la llamó, que si recordamos tenía pendiente escribir un
valor. Este proceso se repite hacía atrás sucesivamente hasta llegar a la función
principal.
Método main()
……
frecursiva (0)
}
Método recursiva(0)
recursiva (0+1)
[Link] ( i );
Método recursiva(1)
recursiva (1+1)
[Link] ( i );
}
Función recursiva(2)
recursiva (2+1)
[Link] ( i );
}
Método recursiva(3)
recursiva (3+1)
[Link] ( i );
}
Método recursiva(4)
{
if (i < 5)
{
frecursiva (i+1);
[Link] ( i );
}
}
Este tipo de recursividad se conoce con el nombre de recursividad directa. Existe otro tipo
de recursividad, conocida como recursividad indirecta, que consiste en que un método
llama a otro, que a su vez llama al primero. Tendrá, al menos, un punto de salida.
Página 61
Instrucciones básicas Java
class Ejemplo
{
static boolean Par(int n)
{
if (n == 0) return true;
else return Impar(n - 1);
}
Página 62