Logo Studenta

Apuntes-Java

¡Este material tiene más páginas!

Vista previa del material en texto

UNIVERSIDAD AUTONOMA DE SINALOA
FACULTAD DE INFORMÁTICA DE MAZATLAN
PROGRAMACIÓN I
(Lenguaje JAVA)
TITULAR DE LA MATERIA:
DR. JOSÉ NICOLÁS ZARAGOZA GONZÁLEZ
INTRODUCCION AL LENGUAJE JAVA.
Conceptos Básicos.
El lenguaje Java nace en 1991 en Sun Microsystems Inc.
Es un lenguaje derivado de C y C++.
Fue creado por James Gosling, Patrick Naughton, Chris Warth, Ed Frank y
Mike Sheridan.
Originalmente se llamó “Oak”, en 1995 cambió su nombre a Java.
La intención era crear un lenguaje de programación para desarrollar
software para diversos dispositivos electrónicos como hornos de
microondas y controles remotos, se buscaba un lenguaje de programación
que fuera independiente de la plataforma y que se pudiese ejecutar en
distintos tipos de CPUs bajo diferentes entornos.
Actualmente, una de las principales aplicaciones de Java es en Internet, ya
que un programa en java puede “correrse”, independientemente del sistema
operativo o del navegador.
La primera versión comercial de Java se lanzó en 1997 y se denominó JDK
1.1. En diciembre de 1998 Sun lanzó la plataforma Java 2, la cual se
conoció originalmente como JDK 1.2.
La principal característica de Java es el byte-code (o código de bytes), esto
significa que el código fuente Java se "compila" a un código de bytes de alto
nivel independiente de la máquina. Este código, llamado bytecode, está
diseñado para ser interpretado y ejecutarse en una máquina hipotética,
llamada Máquina Virtual de Java o JVM (Java Virtual Machine).
Para desarrollar programas en Java, es necesario contar con un entorno de
desarrollo, el más común es el Java Development Kit (JDK).
Computadora
Sistema Operativo
Máquina Virtual Java
Programa en Java
Las características principales que nos ofrece Java con respecto a
cualquier otro lenguaje de programación, son:
a) Sencillo.
b) Orientado a objetos.
c) Distribuido.
d) Robusto.
e) Arquitectura neutra.
f) Seguro.
g) Portable.
h) Multihilo.
i) Interpretado.
j) Dinamico
El entorno de desarrollo JAVA.
El entorno habitual para desarrollar programas en Java consiste en un
navegador que pueda ejecutar applets, un compilador que convierta el
código fuente Java a bytecode y el intérprete Java para ejecutar los
programas.
También se necesita un editor para escribir el código fuente, y aunque no
son estrictamente necesarias otras herramientas como el debugger, un
entorno visual, la documentación o un visualizador de jerarquía de clases,
es conveniente contar con todas o algunas de ellas cuando se trata de
desarrollar proyectos de aplicaciones.
Actualmente hay entornos completos de desarrollo integrados para Java
diferentes del JDK, que hasta el momento es el entorno básico de Java que
proporciona Sun.
Está formado por herramientas en modo texto, que son:
java, intérprete que ejecuta programas en bytecode.
javac, compilador de Java que convierte el código fuente en bytecode.
javah, crea archivos de cabecera para implementar métodos para cualquier
clase.
javap, es un descompilador de bytecode a código fuente Java.
javadoc, es un generador automático de documentos HTML a partir del
código fuente Java.
Para más información, o descargar una versión actualizada de Java, puede
hacerlo en la siguiente dirección:
http://www.oracle.com/technetwork/java/javase/downl oads/
index.html
jGRASP
Debido al nivel básico de programación que trabajaremos (aplicaciones),
nosotros utilizaremos el el jGRASP, entorno de programación Java
desarrollado por la Universidad de Auburn, de licencia libre y que permite el
desarrollo de aplicaciones (programas) y applets. Permite el desarrollo de
aplicaciones en C, C++, Java y ADA, pero cuenta con más opciones. En la
parte inferior tiene una ventana que muestra durante el proceso de
compilación, los errores encontrados durante la misma (ceja: Compile
Messages), si es que los hay. Al momento de “correr” el programa, la misma
ventana permite mostrar la ejecución de programa y en la cual se capturan
los datos y se muestran los resultados, ceja: (Run I/O).
En la parte superior cuenta con un menú de opciones que nos permite abrir,
cerrar, imprimir y guardar archivos; editar, copiar y pegar texto; compilar y
correr aplicaciones o applets, etcétera. Del lado izquierdo, tiene una
ventana que muestra el directorio de trabajo y cuenta con opciones para
depurar el programa. Esta versión puede obtenerse en la siguiente
dirección:
http://www.jgrasp.org/
Aplicaciones y applets .
Los programas en Java se dividen en dos tipos o categorías: aplicaciones y
applets.
Las aplicaciones son programas hechos en lenguajes de alto nivel y que
funcionan en una computadora bajo un sistema operativo. Un programa en
Java requiere de la Máquina Virtual de Java para ser ejecutado. Las
aplicaciones se usan para resolver diversos problemas y pueden agruparse
para formar sistemas, así, existen sistemas para inventarios, nómina,
control escolar, etcétera.
Un applet , es un programa diseñado para ser transmitido por Internet y
ejecutado en un navegador Web compatible con Java. Los applets tienen
algunas limitaciones ya que necesitan de ciertas condiciones de seguridad
para evitar daños en el sistema en el que está funcionando el navegador.
Creación de programas en Java.
Java es un lenguaje de alto nivel que permite realizar programas
transportables o portátiles.
La transportabilidad o portabilidad significa que es posible adaptar el
software escrito para un tipo de computadora en otra, por ejemplo, si un
programa escrito para una Apple Macintosh se puede llevar sin cambio a
una IBM PC, entonces el programa es transportable.
Como todos los programas, los programas en Java casi siempre pasan a
través de las siguientes fases para su ejecución:
a) Editar.
b) Compilar.
c) Enlazar.
d) Cargar.
e) Ejecutar.
Un programa compilado con éxito, puede ejecutarse por un intérprete tantas
veces como se desee sin necesidad de compilarse de nuevo. Un ejemplo
típico de un programa en Java es el siguiente:
/* Hola.java */
class Hola
{
public static void main (String args[ ])
{
System.out.println ("Hola!... Este es mi primer programa en Java");
}
}
Para entender la estructura del programa, primero debemos conocer lo
conceptos de la programación orientada a objetos (POO), lo cual veremos a
continuación.
PROGRAMACIÓN ORIENTADA A OBJETOS.
Conceptos Básicos.
La programación orientada a objetos (POO) es un estilo de
programación.
El elemento principal es el objeto.
Objeto.
Es un conjunto complejo de datos y programas que
poseen estructura y forman parte de una organización .
También podemos definirlo como una encapsulación de un
conjunto de datos y los métodos para manipularlos .
Los mecanismos básicos de la programación orientada a
objetos son:
a) Los objetos .
Un objeto es una encapsulación genérica de datos y de los procedimientos
para manipularlos. En tanto que los programas tradicionales
(estructurados y modulares) se componen de procedimientos y de datos.
Los programas orientados a objetos se componen exclusivamente de
objetos. Un objeto contiene operaciones (métodos) que definen su
comportamiento y variables (datos), manipuladas por esas operaciones,
las cuales definen el estado del objeto.
b) Los mensajes .
Los objetos reciben, interpretan y responden a mensajes de otros objetos.
El paso de mensajes entre objetos sustituye al flujo de control tradicional,
ya que los mensajes originan cambios en el estado del objeto. Cuando un
objeto recibe un mensaje, debe conocer perfectamente lo que tiene que
hacer, y cuando un objeto envía un mensaje, no necesita conocer cómo se
desarrolla, sino simplemente que se está desarrollando.
c) Los métodos.
Un método es un conjunto de instrucciones y equivalen a las funciones o
procedimientos de la programación estructurada y modular. Los métodos se
implementan dentro de una clase y determinan cómo debe actuar el objeto
cuando recibe un mensaje. Dentro de los métodos se pueden declarar y
usar variables que se conocen como variables asociadas o atributos, las
cuales permiten almacenar informaciónpara dicho objeto. Un método
también puede enviar mensajes a otros objetos solicitando una acción o
información.
La estructura más interna de un objeto está oculta para otros usuarios (esto
se conoce como encapsulamiento) y la única conexión que tiene con el
exterior son los mensajes. Los atributos (datos) que oculta un objeto,
solamente pueden ser manipulados por los métodos asociados al propio
objeto.
d) Las clases .
Una clase puede ser considerada como un formato o plantilla para crear
objetos, los cuales serán de esa clase o tipo.
Una clase describe los métodos y atributos que definen las características
comunes a todos los objetos de esa clase. De esta manera, la clave de la
programación orientada a objetos, consiste en abstraer (o visualizar de
forma muy general) los métodos y atributos comunes a un conjunto de
objetos y encapsularlos en una clase.
e) Las subclases .
Las subclases, son clases derivadas de una clase en particular.
objeto
mensajes
métodos
atributos
CARACTERÍSTICAS DE LA PROGRAMACIÓN 
ORIENTADA A OBJETOS.
Las características fundamentales de la programación orientada a objetos
(POO) son:
1) Abstracción .
Abstraer significa: “separar mentalmente”. En programación, la abstracción
consiste en la generalización conceptual de los atributos y propiedades de
un determinado conjunto de objetos. De esta manera, la clave de la
programación orientada a objetos está en abstraer los métodos y los datos
comunes a un conjunto de objetos y almacenarlos en una clase.
2) Encapsulamiento .
Se refiere a la práctica de incluir dentro de un objeto todo lo que necesita,
de forma que ningún otro objeto pueda conocer nunca su estructura
interna.
3) Herencia .
La herencia es el mecanismo mediante el cual se comparten y derivan,
métodos y atributos entre clases y subclases.
Clase: Mobiliario
Alta
Baja
Consulta
Modificación
Costo
Dimensiones
Peso
Localización
Color
Objeto: silla
Alta
Baja
Consulta
Modificación
Costo
Dimensiones
Peso
Localización
Color
Objeto: sillón
Alta
Baja
Consulta
Modificación
Costo
Dimensiones
Peso
Localización
Color
Los objetos heredan
todos los atributos y
operaciones de la clase.
4) Polimorfismo .
Polimorfismo significa: “muchas formas”. En la programación orientada a
objetos, esta característica permite implementar múltiples formas de un
mismo método, dependiendo cada una de ellas, de la clase sobre la que
se realice la implementación. De esta manera se puede acceder a una
variedad de métodos distintos (todos con el mismo nombre) utilizando
exactamente el mismo medio de acceso.
objeto mensajes
métodos
atributos
objeto
mensajes
métodos
atributos
objeto
mensajes
métodos
atributos
Estructura de un programa en Java.
<sentencia(s) import > Declaración para importar clases de paquetes.
[protección ] class NombreClase
{
<Variables miembro de la clase (atributos)>
< [modificador ] tipo_devuelto método1 ( Lista de parámetros )
{
Declaración de variables locales
Sentencias ejecutables
}
• • • Definición de métodos (operaciones) dentro de la clase.
[modificador ] tipo_devuelto métodoN ( Lista de parámetros )
{
Declaración de variables locales
Sentencias ejecutables
} >
< public static void main ( String args [ ] ) Método principal.
{
Declaración de variables locales
Sentencias ejecutables
} >
}
1. Sentencias import .
Las clases en Java se agrupan en paquetes. Los paquetes se encuentran
en directorios de disco que tienen el mismo nombre que el paquete. Para
importar una clase de un paquete desde un programa se utiliza la sentencia
import . En un programa en Java, pueden aparecer cualquier número de
sentencias import , las cuales deben escribirse antes de cualquier definición
de clase.
La sintaxis general de la sentencia import es la siguiente:
import nombrePaquete .nombreClase ;
Ejemplo:
Importa las clases que puedan ocuparse para
operaciones de entrada/salida del paquete
java.io.
import java.io.*;
Importa la clase System del paquete java.lang.import java.lang.System;
2. Declaración de clases y nombre del programa.
Todo programa en Java está conformado por clases. Un programa debe
contener al menos una clase, la cual puede ser considerada como la clase
principal, puede contener el método main() e incluso otros métodos y
variables. Una clase es un tipo definido por el usuario que describe los
atributos y los métodos de los objetos que se crearán a partir de la misma.
La declaración de una clase puede empezar con una palabra clave que es
un modificador de protección que generalmente indica el acceso y es
opcional; a continuación sigue el indicador de clase, la palabra reservada
class ; después sigue el nombre de la clase y los miembros de la clase:
variables y métodos; el convenio general entre los programadores para dar
nombre a las clases, es comenzar el nombre de la clase con una letra
mayúscula. El archivo en el cual se guarda el código debe tener
exactamente el mismo nombre de la clase, respetando mayúsculas y
minúsculas. Cada definición de una clase Java deberá estar en un archivo.
Protección de una clase .
La protección de una clase determina la relación que tiene con otras clases
de otros paquetes. Existen dos niveles de protección: de paquete y público.
Una clase con nivel de protección de paquete sólo puede ser utilizada por
las clases de su paquete. Esto se logra definiendo el tipo de acceso que
puede ser privado (private ) o protegido (protected ).
Un miembro declarado private es accesible solamente por los métodos de
su propia clase. Esto significa que no puede ser accedido por los métodos
de cualquier clase, incluidas las subclases. Un miembro declarado
protected se comporta exactamente igual que uno privado para los
métodos de cualquier otra clase, excepto para los métodos de las clases del
mismo paquete o de sus subclases, independientemente del paquete al que
pertenezcan, para las que se comporta como un miembro público.
Por otra parte, una clase pública puede ser utilizada por cualquier otra clase
de otro paquete. Así, un miembro declarado public está accesible para
cualquier otra clase o subclase que necesite utilizarlo.
Por omisión, una clase tiene el nivel de protección de paquete, cuando se
desee que una clase tenga protección pública, hay que calificarla como tal
utilizando la palabra reservada public . Así mismo, los atributos static de la
clase generalmente son declarados públicos.
3. Variables miembro de la clase (atributos).
Los miembros dato de una clase se definen como variables de instancia.
Estas variables pueden ser de cualquier tipo primitivo (int, char, byte, float,
double, etc.), arreglos, cadenas, etcétera. Toda variable debe ser definida
antes de ser utilizada. La definición de una variable, declara la variable y
además le asigna memoria. La sintaxis es la siguiente:
acceso nombreTipo nombreVariableInstancia ;
Los métodos de la clase y los de las clases del mismo
paquete pueden acceder a la variable.
por omisión
Sólo los métodos de la clase pueden acceder a la variable.private
Los métodos de la clase, los métodos de las clases del mismo
paquete pueden acceder a la variable y también los métodos
de las clases derivadas.
protected
Se puede acceder a la variable desde cualquier método.public
Puede ser public, protected, private; o bien, el acceso por
defecto o por omisión.
acceso
4. Definición de métodos (operaciones).
[ método1, método2, ..., métodoN ]
Un método es un conjunto de sentencias que ejecutan una tarea específica.
En Java, un método siempre pertenece a una clase y su definición nunca
puede contener la definición de otro método, esto significa que no se
pueden tener métodos anidados. Todos los métodos tienen nombre y una
lista de datos o valores que reciben, llamados parámetros o argumentos. La
definición de un método consta de dos partes: la cabecera y cuerpo del
método. La sintaxis para definir un método es la siguiente:
[modificador ] tipo_devuelto método ( Lista de parámetros )
{
Declaración de variables locales
Sentencias ejecutables
returnexpresión; // No se escribe si el método es de tipo void .
}
modificador Es una palabra clave que especifica desde donde puede ser
llamado el método. Existen cuatro niveles de acceso: public,
protected, private o por omisión, que son los mismos
definidos en la declaración de variables.
tipo_devuelto Especifica el tipo de dato devuelto por el método. Éste puede
ser cualquier tipo primitivo o referenciado. Para indicar que
un método no devuelve nada se utiliza la palabra reservada
void , en este caso se omite la sentencia return o se escribe
sola, sin ninguna expresión.
método El nombre de un método puede ser cualquier identificador
válido, pero no puede ser una palabra reservada Java. Entre
los programadores se tiene el convenio de que la primera
letra del nombre del método se escribe con minúsculas. Un
método puede tener palabras reservadas asociadas como:
static, abstract y final.
Lista de parámetros La lista de parámetros de un método son las variables que
reciben los valores de los argumentos especificados cuando
se llama o invoca. Estos pueden ser: cero, uno o más
identificadores con sus tipos, separados por comas. Aunque
los identificadores sean del mismo tipo, cada uno debe ser
antecedido por su tipo.
5. Método main( ).
Todos los programas de aplicación de Java inician su ejecución llamando al
método main() . Esto significa que main() es el punto de entrada a la
aplicación, y también su punto de salida. Cada programa de aplicación en
Java tiene un método main() y solo uno, si tiene más de un main() se
produce un error, aunque estén en diferentes clases. Las clases de Java no
necesariamente deben tener un método main() , a menos que esa clase sea
el punto de comienzo del programa. El método main() se define de la
siguiente manera:
public static void main ( String args [ ] )
{
Declaración de variables locales
Sentencias ejecutables
}
Identificadores.
Un identificador es una secuencia de caracteres, letras, dígitos, el guión
bajo o subrayado y el símbolo $. El primer carácter debe ser una letra, un
símbolo de subrayado o el símbolo $. Los caracteres siguientes pueden ser
letras, números o símbolos de subrayado y no deben contener espacios en
blanco o caracteres especiales.
En un identificador, las letras minúsculas y las mayúsculas son
consideradas como diferentes, El nombre de un identificador no debe ser
igual que una palabra reservada.
Como recomendación para escribir identificadores tenemos:
1. Escribir identificadores de variables en letras minúsculas.
2. Nombres de constantes en mayúsculas.
3. Los nombres de métodos con tipo de letra mixto: mayúscula/minúscula.
4. Los identificadores de clases con el primer carácter en mayúsculas.
Palabras reservadas.
Una palabra reservada no puede ser usada como nombre de identificador,
clase, objeto o método. Todas las palabras reservadas están en minúsculas
y deben escribirse tal como se indican. A continuación se presenta la lista
de palabras reservadas:
else interface super
double
do
default
continue
const
class
char
catch
cast
case
byvalue
byte
break
boolean
abstract
int
instanceof
inner
import
implements
if
goto
generic
future
for
float
finally
final
false
extends
strictfp
static
short
rest
return
public
protected
private
package
outer
operator
null
new
native
long
widefp
while
volatile
void
var
try
true
transient
throws
throw
this
synchronized
switch
Líneas de programa.
En Java se utiliza el carácter de punto y coma (;) para indicar el fin de una
sentencia. Se pueden colocar varias sentencias en una línea siempre y
cuando se separen con puntos y comas. Así mismo, un bloque es un
conjunto de sentencias con un punto y coma después de cada una de ellas
y van encerradas entre llaves { } .
Comentarios.
Un comentario es un texto que explica una instrucción o una función, se
sitúa en cualquier parte del programa y es ignorado por el compilador. Estos
comentarios pueden ser tan largos como se desee y son una parte
importante de la documentación de un programa, ya que ayudan al
programador y a otras personas a la comprensión del mismo.
Formato:
Comentario tradicional, para más de una línea /* comentario */
Comentario de una sola línea // comentario
TIPOS DE DATOS.
Todos los datos tienen un tipo asociado con ellos. El tipo de un dato
determina el conjunto de valores que puede tomar una variable tomando
en cuenta la representación interna de los números o el espacio de
memoria ocupado por una variable de un tipo dado. La unidad de medida
de la capacidad de memoria es el byte (octeto); un byte se compone de
ocho dígitos binarios (bits) que pueden tomar cada uno el valor 0 ó 1.
Clasificación de los tipos de datos:
En Java, los tipos de datos básicos o primitivos son:
A) Enteros.
B) Reales.
C) Caracteres.
D) Lógicos o Booleanos.
A) Tipos Enteros. 
Los tipos enteros de datos son:
a) byte. (octeto - 1 byte).
El tipo byte es utilizado para almacenar valores enteros en el rango de -128
a +127.
Ejemplos:
byte a, i, j;
b) short. (entero formato corto - 2 bytes).
El tipo short , se define como un dato de 16 bits de longitud,
independientemente de la plataforma en la que resida el bytecode de java.
Proporciona números enteros en el rango de valores:
short -32,768 .. +32,767
Ejemplos:
short i, j;
short a = -500;
c) int. (entero - 4 bytes).
Un valor int se define como un dato de 32 bits de longitud,
independientemente de la plataforma en la que resida el bytecode de java.
El rango de valores es de:
int -2,147’483,648 .. +2,147’483,647
Ejemplos:
int n, x;
int a = 2000;
d) long. (entero formato largo - 8 bytes).
Son números sin punto decimal en formato largo. Un valor long se define
como un dato de 64 bits de longitud, independientemente de la plataforma
en la que resida el bytecode de java. Están comprendidos en el rango de:
long -9’223,372’036,854’775,808 .. +9’223,372’036,854’775,807
Ejemplos:
long n, m;
long a = 2500000;
B) Tipos Reales.
Los tipos de datos reales son aquellos que representan al conjunto de los
números reales. Los números reales se pueden representar en dos formas:
1. Notación científica o de punto (coma) flotante.
El área ocupada por un número real se divide en dos zonas: mantisa y
exponente.
mantisa: número fraccionario (negativos o positivos)
exponente: Potencia de 10
número real = mantisa x 10 exponente
Esta notación se utiliza para representar números muy grandes o muy
pequeños. En notación decimal los números se escriben en notación
exponencial e (e de exponente y significa elevar 10 a la potencia que le
sigue).
n e ± dd
n número decimal (con o sin signo + o -)
dd exponente entero (positivo, negativo o cero)
Ejemplo: 2.83 x 105 (2.83e+5)
2. Notación en punto fijo.
Expresa el número real con un punto decimal.
Ejemplo: 3.1416
a) float. (reales en simple precisión - 4 bytes).
Estos números son los más comúnmente usados en un lenguaje de
programación. Un real en simple precisión es un número que puede
tener un punto decimal y que puede estar comprendido en el rango de:
-3.402823E+38 .. -3.402823E-38 para números negativos
3.402823E-38 .. 3.402823E+38 para números positivos
El tipo float se utiliza para declarar un dato real de 32 bits en el formato
IEEE 754 (1 bit para el signo, 8 bits para el exponente y 23 para la
mantisa). Un número real en simple precisión tiene 7 dígitos significativos.
Ejemplos:
float x;
float a = 3.14159F;
float b = 2.2e-5F;
b) double. (reales en doble precisión - 8 bytes).
Un número real en doble precisión es un número que puede tener un
punto decimal y que puede estar comprendido en el rango de:
-1.79769E+308 .. -1.79769E-308 para números negativos
1.79769E-308 .. 1.79769E+308 para números positivos
El tipo double se utiliza para declarar un dato real de 64 bits en el formato
IEEE 754 (1 bit para el signo, 11 bits para el exponente y 52 para la
mantisa). Un número real en doble precisión tiene hasta 16 dígitos
significativos, lo cual permite cálculos más precisos que con los reales de
simple precisión.Ejemplos:
double x;
double a = 3.1415926;
double b = 2.2e-18;
C) Tipos Carácter. (caracteres o enteros – 2 bytes).
El tipo carácter o char se utiliza para declarar datos enteros en el rango de
\u0000 a \uFFFF en Unicode (0 a 65535). Los valores de 0 a 127 (\u0000 a
\u00FF) corresponden con los caracteres del código ASCII, los cuales
conforman una parte muy pequeña del juego de caracteres Unicode.
También acepta los caracteres del código ASCII ampliado (127 a 255).
Debido a que Java fue diseñado con el objeto de poder ser utilizado en
cualquier país, independientemente del tipo de alfabeto, para representar
los caracteres en Java se utilizó el estándar Unicode, que maneja más de
30,000 caracteres distintos de la mayoría de los idiomas escritos conocidos
en todo el mundo. El código Unicode, es un código de 16 bits (esto significa
que cada carácter ocupa 2 bytes) creado con el único fin de
internacionalizar el lenguaje.
Internamente, los caracteres se almacenan como números. La letra ‘A’, se
almacena como el número 65 y la ‘a’ como el 97. Por este motivo, se
pueden realizar operaciones aritméticas con datos de tipo char .
Ejemplos:
char c;
char car = ‘a’;
char car = 97;
D) Tipos Lógicos o Booleanos.
El tipo boolean se utiliza para indicar si el resultado de la evaluación de una
expresión booleana es verdadero o falso. Los dos posibles valores de una
expresión booleana son true y false , verdadero y falso, respectivamente.
Las palabras true y false son palabras reservadas en Java. A una variable
boolean se le puede asignar el resultado de una expresión condicional, las
cuales dan como resultado verdadero o falso. El valor de una variable
booleana no se puede convertir a otros tipos, pero si se puede convertir a
una cadena de caracteres y si es necesario, se puede visualizar.
Ejemplos:
boolean bandera;
boolean encontrado = true ;
boolean intercambio = false ;
CONSTANTES.
Una constante es un valor que no puede cambiar durante la ejecución
del programa. Las constantes pueden ser un número (entero o real), un
carácter o una cadena de caracteres. En Java existen dos tipos de
constantes:
A. Constantes literales .
B. Constantes declaradas .
A. Constantes literales .
Las constantes literales o constantes son las más utilizadas, se llaman
así porque toman un valor directo o literal y así se escriben directamente
en el programa; se clasifican en cuatro grupos:
a) Constantes enteras .
b) Constantes reales .
c) Constantes carácter .
d) Constantes de cadena .
a) Constantes enteras .
El lenguaje Java permite especificar un entero en base: 10 (decimal), 8
(octal) y 16 (hexadecimal). Si la constante es positiva, el signo más (+) es
opcional. Si es negativa, lleva el signo menos (-). El tipo de una constante
está determinado por su valor. También se puede añadir un sufijo (en
mayúsculas o minúsculas). Si el sufijo es L, su tipo es long.
Ejemplo: 1000L constante entera de tipo long
Una constante decimal puede tener uno o más dígitos, con valores de 0
a 9, de los cuales el primero de ellos es distinto de cero. No se deben
utilizar nunca comas ni otros signos de puntuación en números enteros.
Ejemplo: 4326
Una constante octal puede tener uno o más dígitos, con valores de 0 a 7,
precedidos por 0 (cero).
Ejemplo: 0400
Una constante hexadecimal puede tener uno o más caracteres, con
valores de 0 a 9 y de A a F (mayúsculas o minúsculas), precedidos por 0x
o 0X (cero más x).
Ejemplo: 0x100
b) Constantes reales .
Una constante real está formada por una parte entera , seguida por un
punto decimal y una parte fraccionaria . También se permite la notación
científica, en cuyo caso se añade al valor una e o E, seguida por un
exponente positivo o negativo.
ParteEntera.ParteFraccionaria[{e/E}{[+]/-}dígitos]
Donde dígitos representa cero o más dígitos del 0 al 9 y E o e es el
símbolo de exponente de la base 10 que puede ser positivo o negativo
(2E-5 = 2x10-5). Si la constante real es positiva no se necesita especificar
el signo, pero si es negativa debe llevar el signo menos.
Ejemplo:
-17.24
17.244283
.008e3
27E-3
Existen dos tipos de constantes reales:
float 4 bytes
double 8 bytes
Una constante real tiene siempre por defecto el tipo double, a no ser que
se añada a la misma el sufijo f o F, en cuyo caso será de tipo float.
Ejemplo: 17.24F constante real de tipo float
En Java existen dos expresiones definidas como constantes las cuales se
utilizan cuando se presentan errores con valores numéricos, estas
expresiones son: Infinity (infinito) y NaN (Not a Number). Infinity (positivo
o negativo), es una constate real que se muestra como resultado de
ciertas funciones matemáticas, por ejemplo el logaritmo de cero, cuyo
valor es ∞ (infinito).
Ejemplo:
System.out.println("Log(0) = " + Math.log(0.0));
Muestra: Log(0) = -Infinity
Cuando una función o una operación matemática no esta definida para
ciertos valores, se dice que esta expresión no es numérica o no es un
número (Not a Number o NaN).
Ejemplo:
System.out.println("Log(-1) = " + Math.log(-1));
Muestra: Log(-1) = NaN
c) Constantes carácter .
Este tipo de constantes está formado por un único carácter encerrado
entre comillas simples (apóstrofes). Estos caracteres forman parte del
conjunto universal de caracteres denominado Unicode. Además de los
caracteres ASCII, las constantes carácter manejan las secuencias de
escape, llamados también caracteres de barra invertida.
Ejemplos:
' ' espacio en blanco
'x' letra minúscula x
'\n' nueva línea (salto de línea)
‘\r’ retorno de carro
'\x001B' carácter ASCII Esc
d) Constantes de cadena .
Una constante de cadena de caracteres o simplemente de cadena, es un
conjunto de caracteres encerrados entre comillas dobles . En Java las
cadenas son objetos sin nombre.
Ejemplos:
"Esto es una constante de caracteres"
"3.1415926"
"Facultad de Informática de Mazatlán"
En el siguiente ejemplo, el carácter \n fuerza a que la cadena: "O pulsar
Enter" se escriba en una nueva línea.
"Escribir un número entre 1 y 5 \nO pulsar Enter"
Cuando una cadena de caracteres es demasiado larga puede utilizarse el
carácter "+" como carácter de continuación o de concatenación.
"Esta cadena de ”+”caracteres esta “+”concatenada."
Esta cadena de caracteres esta concatenada.
B. Constantes declaradas .
Al igual que otros lenguajes de programación, Java permite la declaración
de constantes simbólicas, las constantes se declaran anteponiendo el
calificador final . A un objeto declarado como constante no se le puede
modificar el valor durante la ejecución del programa, por lo que al
declararse debe ser inicializado. El formato general para crear una
constante puede ser cualquiera de los dos siguientes:
final tipo NombreConstante = ValorConstante;
final static tipo NombreConstante = ValorConstante;
Cuando una constante se califica con final y static , sólo existirá una copia
de la constante para todos los objetos que se declaren de esa clase. Si no
se califica con static , cada objeto incluirá su propia copia de la constante.
En los métodos, las constantes locales no pueden ser declaradas static . La
forma más común de declarar una constante es utilizando únicamente el
calificador final , los nombres de constantes declaradas se acostumbra
escribirlos con mayúsculas.
Ejemplo:
final int MAX = 100;
final double PI = 3.141592;
VARIABLES.
Las variables son posiciones de memoria con nombre cuyo valor puede
cambiar durante la ejecución del programa, el cambio se produce
mediante sentencias ejecutables. El nombre de la posición es un
identificador válido y se llama nombre de la variable y el valor
almacenado en la posición se llama valor de la variable. Todas las
variables de un programa en Java deben ser declaradas antes de ser
utilizadas. La declaración consiste en enunciar el nombre de la variable y
asociarle un tipo. El tipo determina los valores que puede tomar la
variable así como las operaciones que con ella pueden realizarse. La
declaración de una variable en Java puede situarse en cualquier parte del
programa:
a) En una clase, como miembrode la clase.
b) Al principio de un método o bloque de código.
c) En el lugar en que será utilizada.
La sintaxis correspondiente a la declaración de una variable es la siguiente:
Formato:
tipo Nombre [, Nombre2, Nombre3...];
tipo Determina el tipo de la variable (char , int , float , double , ...).
Nombre Indica el nombre de la variable (o variables separadas por comas
si son más de una).
Ejemplo:
int cont, i, posición;
char c;
float x, y;
Las variables miembro de una clase siempre son inicializadas por defecto
por el compilador Java para cada objeto que se declare de la misma: las
variables numéricas a 0, los caracteres a ‘\0’, las lógicas a false y las
referencias a cadenas de caracteres y otros objetos a null . Sin embargo,
una variable puede ser inicializada cuando se declara.
Ejemplo:
char car = '\0'; /* car es igual al carácter nulo */
int i = 1; /* inicializa i a 1 */
float a = 0.0F; /* inicializa a a 0 */
a) Declaración de una variable en una clase, como miembro de la clase.
La variable se declara como un miembro de la clase, al mismo nivel que los
métodos de la clase. Estas variables están disponibles para todos los
métodos de la clase y para todas las clases declaradas en el mismo
programa, por lo que puede decirse que una variable de clase es global
para esa clase, sus subclases y los programas que definen y utilizan
objetos de esa clase. A estas variables se les asigna memoria cuando se
crea un objeto de la clase y permanece, hasta que el objeto es liberado
automáticamente o termina la ejecución del programa. Se les llama también
variables de instancia.
Formato:
Modificador tipo Nombre;
Ejemplo:
private int cont, i, posición; Declarada privada.
protected char c; Declarada protected . 
float x, y; Declarada por omisión (sin modificador).
Los métodos de la clase y los de las clases del mismo paquete pueden acceder a la variable.por omisión
(sin modificador)
Sólo los métodos de la clase pueden acceder a la variable.private
Los métodos de la clase, los métodos de las clases del mismo paquete pueden acceder a la
variable y también los métodos de las clases derivadas.
protected
Se puede acceder a la variable desde cualquier método.public
b) Declaración de una variable al principio de un método o bloque de
código.
Las variables también se pueden declarar en un método o en un bloque
dentro de un método, por ejemplo un ciclo. Las variables que se declaran al
interior de un método se consideran variables locales. Las variables locales
son aquellas definidas en el interior de un método y son visibles sólo en ese
método en particular. No pueden ser modificadas por ninguna sentencia
externa al método. Dos o más métodos pueden definir variables con el
mismo nombre (por ejemplo: contadores y acumuladores). Las variables
locales de los métodos no existen en memoria hasta que se ejecuta el
método; por esta razón, a estas variables locales se les denomina también
automáticas o auto, ya que se crean automáticamente en la entrada al
método y se liberan automáticamente cuando se termina la ejecución del
método.
Ejemplo:
long factorial (int n)
{
int i = 1;
long a = 1;
• • •
}
c) Declaración de una variable en el lugar en que será utilizada.
El lenguaje Java tiene una gran flexibilidad ya que permite declarar una
variable en el punto donde se vaya a utilizar. Esta propiedad se utiliza
principalmente en diseño de ciclos, ya que es posible declarar la variable
en el momento de su utilización.
Ejemplo:
for ( int i = 0; i < 10; i++) {
• • •
}
CONVERSIÓN ENTRE TIPOS DE DATOS.
Cuando Java tiene que evaluar una expresión en la que intervienen
operandos de diferentes tipos, primero convierte, sólo para realizar las
operaciones solicitadas, los valores de los operandos al tipo del operando
cuya precisión sea más alta. Cuando se trata de una asignación, convierte
el valor de la derecha al tipo de la variable de la izquierda siempre que no
haya pérdida de información. En caso contrario, Java exige que la
conversión se realice explícitamente, en tal caso marca un error indicando
posible pérdida de precisión.
Las conversiones se dan de la siguiente manera: byte , short y char se
convierten a int . Si entonces un operando es long , toda la expresión se
convierte a long . Si un operando es de tipo float , la expresión entera se
convierte a float . Y finalmente si cualquier operando es double , el
resultado es double .
byte short
char
int long float double
Moldes.
Las conversiones de tipo solo se aplican a los valores que sean operados
cuando la expresión es evaluada, fuera de la expresión, la variable es del
tipo que fue definida. Sin embargo, Java permite una conversión explícita
(conversión forzada) del tipo de una expresión mediante una construcción
denominada cast (molde) y tiene la siguiente forma:
(tipo ) expresión
Cualquier valor de un tipo entero o real puede ser convertido a o desde
cualquier tipo numérico. No se pueden realizar conversiones entre los tipos
enteros o reales y el tipo boolean .
Ejemplo:
int a = 5, b = 2, c;
double d;
c = a / b; // El resultado es: 2
d = (double ) a / b; // El resultado es: 2.5
EXPRESIONES Y OPERACIONES ARITMETICAS.
Los programas Java constan de datos, sentencias de programa y
expresiones. Una expresión es una combinación de operadores y
operandos (que pueden ser constantes, variables o una combinación de
ambas), y a veces pueden contener métodos. Las expresiones de Java
siguen las reglas del álgebra.
Operadores.
Los operadores son símbolos que indican como son manipulados los
datos. El lenguaje Java define muchos más operadores que la mayoría de
los otros lenguajes de programación:
a) Operadores Aritméticos.
b) Operadores de Relación.
c) Operadores Lógicos.
d) Operadores Unitarios.
e) Operadores de Asignación.
f) Operadores Lógicos para el Manejo de Bits.
g) Otros Operadores.
a) Operadores Aritméticos.
Las operaciones aritméticas básicas en Java son: suma, resta,
multiplicación, división y módulo. Los símbolos usados para indicar
operaciones aritméticas son:
Operación Símbolo Usado 
en Java.
Símbolo Usado 
en Matemáticas.
Suma + +
Resta - -
Multiplicación * x •
División / / ÷
Módulo (residuo de la división 
entera) 
% \
1. Los operadores aritméticos ( +, -, * ) pueden ser utilizados con tipos
enteros o reales.
2. El operador (/) puede ser utilizado con tipos enteros o reales. Si ambos
operandos son enteros el resultado es entero (int ). En el resto de los casos
el resultado es real (double ).
3. El operador % se utiliza con números enteros y reales. El operador %
calcula el resto de la división de dos números enteros (int ) o reales
(double ).
Formato:
operando1 % operando2
operando1 y operando2 Operadores enteros o reales.
Ejemplos:
int a = 10, b = 3, c;
float x = 2.0F, y;
1. y = x + a; /* el resultado es 12.0 de tipo float */
2. c = a / b; /* el resultado es 3 de tipo int */
3. c = a % b; /* el resultado es 1 de tipo int */
4. y = a / b; /* el resultado es 3 de tipo int. Se convierte a float 
para asignarlo a y */ 
Orden de importancia de las operaciones aritméticas básica s
(jerarquía).
Una expresión aritmética es: una constante, una variable o una
combinación de constantes y/o variables unidas por operadores
aritméticos. Cuando una operación aritmética se evalúa, el resultado
siempre es un número. Cuando en una expresión aparecen dos o más
operadores, las operaciones siguen un orden de ejecución de acuerdo a
las siguientes reglas de prioridad o jerarquía (las operaciones de igual
prioridad, se leen y se ejecutan de izquierda a derecha):
Símbolo Expresión Prioridad (Precedencia) 
( ) Agrupamiento 1
* Multiplicación 2
/ División 2
% Módulo 2
+ Suma 3
- Resta 3
Escritura de fórmulas matemáticas en Java.
En Java, las fórmulas matemáticas se deben escribir en forma lineal. Por
este motivo, en ocasiones es necesario usar paréntesis que indiquen el
orden correcto de evaluación de los operadores. Las siguientes
expresiones representan fórmulas matemáticas convertidas a lenguajeJava.
Fórmulas matemáticas. Expresión Java.
a = bc a = b * c;
x = b2 - 4ac x = b * b - 4 * a * c;
y2 - y1
m =  m = ( y2 - y1 ) / ( x2 - x1 );
x2 - x1
x + y 5
a =  +  a = ( x + y ) / ( z + w ) + 5 / ( 1 + x * x );
z + w 1 + x2
b) Operadores de Relación.
Los operadores de relación (también llamados de comparación) se
utilizan para relacionar o comparar dos expresiones u operandos, los
operadores de relación son:
Significado Símbolo Usado 
en Java.
Símbolo Usado 
en Matemáticas.
Mayor que > >
Mayor o igual que >= ≥
Igual a (igualdad) == =
Diferente de o Distinto a != ≠
Menor o igual que <= ≤
Menor que < <
Decimos que la condición es verdadera (true ), cuando la expresión que
evaluamos se cumple. La condición es falsa (false ), cuando la
expresión evaluada no se cumple.
c) Operadores Lógicos.
Los operadores lógicos se usan junto con los operadores de relación para
evaluar expresiones, la expresión evaluada puede proporcionarnos un
resultado verdadero (true ) o falso (false ).
Los operadores lógicos son: && (y), || (o), ! (no ) y ^ (o excluyente ) (en
inglés and , or, not y xor ).
La notación utilizada es la siguiente:
[ operando 1 ] operador_lógico operando 2
Los operandos 1 y 2 son las expresiones que se van a evaluar y se
recomienda encerrarlas entre paréntesis para evitar errores.
En algunas expresiones, dependiendo del operador lógico que se utilice,
el operando 1 no existe.
La forma de evaluar estos operadores se muestra a continuación
utilizando las tablas de verdad:
a) Operador && (y). <&>
Solo cuando ambas condiciones son true (se cumplen), el resultado es
true . Esto es, AND da como resultado el valor lógico true si ambos
operandos son true . Si uno de ellos es false , el resultado es el valor lógico
false . Si el primer operando es false , el segundo operando no es evaluado.
operando 1 operando 2 operando 1 && operando 2
true true true
true false false
false true false
false false false
b) Operador || (o). <|>
Cuando alguna de las condiciones es true (se cumple), el resultado es
true . Con el operador OR (símbolo ASCII 124), el resultado es false si
ambos operandos son false . Si uno de los operandos tiene un valor
distinto de false , el resultado es true . Si el primer operando es true , el
segundo operando no es evaluado.
operando 1 operando 2 operando 1 || operando 2
true true true
true false true
false true true
false false false
c) Operador ! (no ).
El operador NOT, devuelve un resultado de false si el operando tiene un
valor true , y devuelve true en caso contrario.
operando ! operando
true false
false true
d) Operador ^ (xor).
Cuando alguna de las condiciones es true (se cumple) y la otra false , el
resultado es true . En caso contrario, si ambas son true o false , la
expresión es false .
operando 1 operando 2 operando 1 ^ operando 2
true true false
true false true
false true true
false false false
El orden de evaluación de los operadores lógicos es el siguiente:
Operador Prioridad Símbolo Usado en 
Java.
Símbolo Usado en 
Matemáticas.
No 1 ! ∼ (negación)
XOR 2 ^ (o excluyente)
Y 3 && ∧ (conjunción)
O 4 || ∨ (disyunción)
El resultado es de tipo boolean . Los operandos pueden ser enteros o
reales.
d) Operadores Unitarios (unarios o monarios).
Operador Operación
- Cambia el signo al operando (complemento a dos). El
operando puede ser entero o real.
~ Complemento a 1. El operando tiene que ser entero
(carácter ASCII 126).
++ Incremento.
-- Decremento.
! Negación.
e) Operadores de Asignación.
Operador Operación
++ Incremento.
-- Decremento.
= Asignación simple.
*= Multiplicación más asignación.
/= División más asignación.
%= Módulo más asignación.
+= Suma más asignación.
-= Resta más asignación.
<<= Desplazamiento a la izquierda mas asignación.
>>= Desplazamiento a la derecha más asignación con extensión de signo.
>>>= Desplazamiento a la derecha más asignación rellenando con ceros.
&= Operación AND sobre bits más asignación.
|= Operación OR sobre bits más asignación.
^= Operación XOR sobre bits más asignación.
f) Operadores Lógicos para el Manejo de Bits.
Operador Operación
& Operación AND a nivel de bits.
| Operación OR a nivel de bits (ASCII 124).
^ Operación XOR a nivel de bits.
<< Desplazamiento a la izquierda.
>> Desplazamiento a la derecha con extensión de signo.
>>> Desplazamiento a la derecha rellenando con ceros.
Los operadores Y, O y XOR producen un resultado basado en la comparación de los
bits correspondientes de cada operando. El operador Y activa un bit si los dos bits
que se comparan son 1. El operador O activa un bit si uno de los bits que se
comparan es 1. El operador XOR (O excluyente) activa un bit si uno de los dos bits
comparados es 1, pero no si los dos son 1 o 0.
El operador complemento a uno (~) es un operador unario que invierte el estado de
cada bit de un entero o carácter. De forma que los 1 se ponen a 0 y los 0 a 1.
Los operadores de desplazamiento >>, >>> y <<, mueven todos los bits de una
variable a la derecha o a la izquierda, según se especifique. A medida que se
desplazan los bits hacia un extremo se va rellenando con ceros (>>) o por el valor
del bit más significativo (>>>) por el extremo opuesto. Los bits que salen se pierden.
Un desplazamiento a la derecha de un número negativo introduce unos.
La forma general de desplazamiento a la derecha es:
variable >> número de posiciones de bits
variable >>> número de posiciones de bits
La forma general de desplazamiento a la izquierda es:
variable << número de posiciones de bits
Un desplazamiento a la izquierda equivale a una multiplicación por 2 y un
desplazamiento a la derecha a una división entre 2.
g) Otros Operadores.
a) Operador condicional.
Java tiene un operador condicional, llamado también operador ternario
( ? : ), que se utiliza en expresiones condicionales y tienen la forma:
operando1 ? operando2 : operando3 ;
La expresión operando1 debe ser una expresión booleana . La
evaluación se realiza de la siguiente manera:
* Si el resultado de la evaluación de operando1 es true , el resultado de
la expresión condicional es operando2.
* Si el resultado de la evaluación de operando1 es false , el resultado de
la expresión condicional es operando3.
Ejemplo:
mayor = ( a > b ) ? a : b; /* el mayor de a y b */
El ejemplo dice que si a > b entonces mayor = a,
de lo contrario, mayor = b.
b) Operador coma ( , ).
El operador coma permite combinar dos o más expresiones separadas por
comas en una sola línea. Se evalúa primero la expresión de la izquierda
antes de evaluar la expresión de la derecha, a continuación el valor de la
expresión de la izquierda es descartado, se continúa evaluando las
expresiones de izquierda a derecha. El tipo y el valor del resultado son el
tipo y el valor del operando de la derecha. El operador coma tiene la
menos prioridad de todos los operadores Java y se asocia de izquierda a
derecha.
Expresión1, expresión2, expresión3, …, expresiónN
c) Molde o Cast. ( tipo )
Java permite una conversión explícita (conversión forzada) del tipo de una
expresión mediante una construcción denominada cast (molde) y tiene la
siguiente forma:
(tipo ) expresión
Cualquier valor de un tipo entero o real puede ser convertido a o desde
cualquier tipo numérico. No se pueden realizar conversiones entre los tipos
enteros o reales y el tipo boolean .
d) Operador instanceof .
Java trabaja con objetos que son instancias de clases. El operador
instanceof es un operador relación cuya evaluación da como resultado un
valor de tipo boolean y utiliza dos operandos, el primero debe ser un objeto
y el segundo un tipo de datos, una clase. Evalúa la expresión a verdadero
si el primer operando es una instancia del segundo.
Operando1 instanceof Operando2
e) Operador new .
El operador new es un operador que reserva memoria dinámicamente para
un objeto, esto es, se usa para crear un objeto. Su forma general es:
variable = new nombre_de_clase();
variable Es una variable del mismo tipo dela clase creada.
nombre_de_clase Es el nombre de la clase que está siendo
instanciada.
Orden de prioridad de los operadores y orden de eva luación (jerarquía).
Jerarquía Operadores Asociatividad Tipo
1 ( ) [ ] . izquierda a derecha Paréntesis, punto
2 - ! ~ ++ -- derecha a izquierda Unarios
3 new (tipo) expresión derecha a izquierda Crear Obj., molde
4 * / % izquierda a derecha Multip., división
5 + - izquierda a derecha Aditivo
6 << >> >>> izquierda a derecha Desplazamiento
7 < <= > >= instanceof izquierda a derecha Relacional
8 == != izquierda a derecha Igualdad
9 & izquierda a derecha AND (niv. bits)
10 ^ izquierda a derecha XOR (niv. bits)
11 | izquierda a derecha OR (niv. bits)
12 && izquierda a derecha AND lógico
13 || izquierda a derecha OR lógico
14 ? : derecha a izquierda Condicional
15 = += -= *= /= %= <<= >>= >>>= &=
|= ^=
derecha a izquierda Asignación
UNIVERSIDAD AUTONOMA DE SINALOA
FACULTAD DE INFORMÁTICA DE MAZATLAN
PROGRAMACIÓN I
Instrucciones Fundamentales
TITULAR DE LA MATERIA:
DR. JOSÉ NICOLÁS ZARAGOZA GONZÁLEZ
INSTRUCCIONES FUNDAMENTALES.
Un programa de aplicación escrito en Java está compuesto
de objetos, y un objeto es la concreción o instancia de una
clase, a su vez, la clase es la generalización de un tipo de
objetos. La estructura básica general de un programa en
Java es la siguiente:
<sentencia(s) import > Declaración para importar clases de paquetes.
[protección ] class NombreClase
{
<Variables miembro de la clase (atributos)>
< [modificador ] tipo_devuelto método1 ( Lista de parámetros )
{
Declaración de variables locales
Sentencias ejecutables
}
[modificador ] tipo_devuelto método2 ( Lista de parámetros )
{
Declaración de variables locales
Sentencias ejecutables
}
• • • Definición de métodos (operaciones) dentro de la clase.
[modificador ] tipo_devuelto métodoN ( Lista de parámetros )
{
Declaración de variables locales
Sentencias ejecutables
} >
< public static void main ( String args [ ] ) Método principal.
{
Declaración de variables locales
Sentencias ejecutables
} >
}
También puede crearse una clase y grabarse en un archivo
que debe tener exactamente el mismo nombre que la clase y
la extensión .java. Por su parte, el programa principal puede
almacenarse en un archivo independiente, el cual llamará a
la clase o clases definidas en otros archivos al momento de
definir sus objetos o instancias de clase.
<Archivo 1> Debe llamarse igual que la clase.
<sentencia(s) import > Declaración para importar clases de paquetes.
[protección ] class NombreClase
{
<Variables miembro de la clase (atributos)>
[modificador ] tipo_devuelto método1 ( Lista de parámetros )
{
Declaración de variables locales
Sentencias ejecutables
}
[modificador ] tipo_devuelto método2 ( Lista de parámetros )
{
Declaración de variables locales
Sentencias ejecutables
}
• • • Definición de métodos (operaciones) dentro de la clase.
[modificador ] tipo_devuelto métodoN ( Lista de parámetros )
{
Declaración de variables locales
Sentencias ejecutables
}
}
<Archivo 2> Debe llamarse igual que la clase.
<sentencia(s) import > Declaración para importar clases de paquetes.
[protección ] class NombreClase
{
public static void main ( String args [ ] ) Método principal.
{
Declaración de variables locales
Creación de objetos o instancias de clase
Sentencias ejecutables
}
}
1. Sentencias import .
Un paquete es un conjunto de clases relacionadas entre sí. Los paquetes
se encuentran en directorios de disco que tienen el mismo nombre que el
paquete. Para importar una clase de un paquete desde un programa se
utiliza la sentencia import . Pueden aparecer cualquier número de
sentencias import , las cuales deben escribirse antes de cualquier
definición de clase. La sintaxis general de la sentencia import es la
siguiente:
import Paquete1 .[Paquete2. ]nombreClase ;
Ejemplo:
import java.lang.System; Importa la clase System del paquete java.lang.
import java.io.*; Importa las clases que puedan ocuparse para
operaciones de entrada/salida del paquete java.io.
Así mismo, un programador puede definir sus propios paquetes para
agrupar clases; los paquetes se deben ubicar en subdirectorios con el
mismo nombre que el paquete. Para incorporar las clases contenidas en
ese paquete, se utilizan las declaraciones import de la misma manera que
con los paquetes predefinidos. Los principales paquetes de Java son:
Paquete Explicación
java.applet Este paquete contiene la clase Applet, la cual proporciona todo lo necesario
para programar applets.
java.awt En este paquete se encuentran todas las herramientas gráficas AWT (Abstract
Window Toolkit) que proporcionan el soporte gráfico para los applets. Esto es,
los métodos y clases que permiten crear y manejar ventanas, gráficos y texto.
java.beans Java Beans es un componente de software que se ha diseñado para ser
utilizado en entornos diferentes y desarrollar complejos sistemas de software
reutilizables.
java.io El paquete java.io contiene el sistema básico de Entrada/Salida de Java,
incluyendo la E/S con archivos.
java.lang Las clases, interfaces y métodos básicos, necesarios para desarrollar un
programa en Java se encuentran en este paquete. Las clases de este
paquete son importadas de forma automática por lo que no es necesaria una
sentencia import que importe este paquete.
java.math Este paquete contiene clases para realizar operaciones con números enteros
de diferente precisión y aritmética de punto flotante.
java.net El paquete java.net proporciona el soporte para el trabajo en red y las
conexiones del protocolo TCP/IP.
java.rmi Contiene las clases e interfaces que permiten invocar a un método remoto
(RMI, Remote Method Invocation). Esto es, un objeto Java que se ejecuta en
una máquina, invoca a otro objeto Java que se ejecuta en otra máquina.
Paquete Explicación
java.security Este paquete contiene clases e interfaces que implementan sistemas de
autentificación y control de acceso. Soporta el envío y recepción de mensajes
encriptados y firmas digitales.
java.sql Contiene las clases e interfaces que permiten desarrollar programas que
ejecuten instrucciones en lenguaje estándar de acceso a Bases de Datos
SQL (Structured Query Language o Lenguaje Estructurado de Consultas) a
través de JDBC (Java DataBase Connectivity).
java.text El paquete java.text da soporte al manejo de textos en aplicaciones Java,
proporcionando clases e interfaces que trabajan con cadenas de texto, dan
formato, realizan búsquedas y buscan texto.
java.util Este es uno de los paquetes más usados. Contiene un conjunto de clases e
interfaces de utilerías para diversas aplicaciones como son: la generación de
números pseudoaleatorios, manejo de fecha y hora, observación de eventos,
manipulación de conjuntos de bits y operaciones con cadenas.
javax.net Este paquete define clases e interfaces para dar soporte a sockets cliente –
servidor que sean de tipo diferente a los que se establecen por defecto.
javax.swing Swing es un conjunto de clases que proporcionan componentes más
potentes y flexibles que los que ofrece AWT. Contiene métodos y clases que
permiten crear y manejar ventanas, gráficos y texto.
javax.xml Este paquete proporciona una API (interfaz de programación de aplicaciones)
para el análisis y transformación de documentos XML.
2. Declaración de clases y nombre del programa.
Una clase es un tipo definido por el usuario que define las variables y los
métodos comunes a todos los objetos que se crearán a partir de la misma.
La declaración de una clase puede empezar con una palabra clave que es
un modificador de protección que generalmente indica el acceso y es
opcional; a continuación sigue el indicador de clase, la palabra reservada
class ; después sigue el nombre de la clase y los miembros de la clase:
variables y métodos.
El convenio general entre los programadores para dar nombre a una clase,
es comenzar el nombre de la clase con una letra mayúscula.
Otra observación importante es que el archivo en el cualse guarda el
código, debe tener exactamente el mismo nombre de la clase
(NombreClase = NombreClase.java ), respetando mayúsculas y
minúsculas.
En el caso de los programas, deberá ser el nombre de la clase principal,
que es la clase que contiene el método main() . En ambos casos, la
extensión del archivo será .java.
Por ejemplo: NombreClase.java .
Cada definición de una clase Java deberá estar en un archivo.
La forma general de una clase es la siguiente:
<sentencia(s) import > Declaración para importar clases de paquetes.
[protección ] class NombreClase
{
tipo Variable_miembro_de_la_clase_1
tipo Variable_miembro_de_la_clase_2
• • •
tipo Variable_miembro_de_la_clase_N
[modificador ] tipo_devuelto método1 ( Lista de parámetros )
{
Declaración de variables locales
Sentencias ejecutables
}
• • • Definición de métodos (operaciones) dentro de la clase.
[modificador ] tipo_devuelto métodoN ( Lista de parámetros )
{
Declaración de variables locales
Sentencias ejecutables
}
}
Una clase puede contener diferentes miembros. Los más importantes son:
* Constructores. Crean un objeto de una clase determinada y se utilizan
para inicializar el estado del objeto.
* Variables de instancia. Almacenan información acerca del estado del
objeto.
* Métodos. Realizan alguna operación sobre un objeto.
* Variables estáticas. Almacenan información que se relaciona con la clase
completa en lugar de con un objeto específico.
* Métodos estáticos. Realizan alguna operación que se relaciona con la
clase completa en lugar de con un objeto específico.
Una clase Java se debe compilar antes de que cualquier programa la
mande llamar. El código compilado de la clase (denominado bytecode), se
almacena en un archivo con el mismo nombre pero con la extensión .class
en vez de .java. Así, si se compila el archivo Clase.java, se creará un
archivo Clase.class, posteriormente se puede combinar esta clase con un
método main() que utilice esa clase.
Creación y utilización de un objeto.
Normalmente, un programa crea muchos objetos a partir de una variedad
de clases. Un objeto es una instancia de una clase y se pueden crear
muchas instancias de una clase. Estos objetos interactúan con otros
objetos enviándose mensajes entre sí. Mediante estas interacciones entre
objetos, un programa Java puede implementar una Interfaz Gráfica de
Usuario (GIU), mover una animación o enviar y recibir información en una
red. Una vez que un objeto ha completado el trabajo para el que fue
creado, el espacio de memoria ocupado se libera, lo cual se conoce como
recolección de basura, y sus recursos (de memoria) se reciclan para ser
usados por otros objetos. El ciclo de vida de un objeto consta de tres
etapas:
1. Creación .
2. Uso .
3. Destrucción .
1. Creación de un objeto .
Para declarar un objeto se debe utilizar una variable para representar ese
objeto (esto es similar a la declaración de una variable de un tipo de dato
primitivo). La sintaxis para declarar una variable objeto es:
NombreClase nombreObjeto;
La creación de un objeto de una clase se denomina crear una instancia de
clase. Un objeto es similar a una variable pero definida de tipo clase, la
declaración de un objeto simplemente asocia a la variable con la clase. Sin
embargo, la declaración no crea el objeto, sino que crea la variable que
posteriormente va a referenciar a un objeto de esa clase. Para crear
realmente un objeto y poder acceder a él con una variable, se necesita
utilizar el operador new , con el fin de asignar espacio de memoria para el
mismo y asociarlo a la variable. La sintaxis es:
nombreObjeto = new NombreClase();
Normalmente se combinan la declaración e instanciación juntas en una
sola sentencia utilizando la siguiente sintaxis:
NombreClase nombreObjeto = new NombreClase();
Las variables de objetos que permiten acceder a los objetos creados
(instanciados) se denominan referencias al objeto.
Siempre debe utilizarse el operador new para crear un objeto antes del
manejo de ese objeto. El manejo o manipulación de un objeto que no ha
sido creado producirá un error en tiempo de ejecución.
2. Uso de un objeto .
Una vez que se ha creado un objeto se debe utilizar para llevar a cabo
algún proceso o acción. Se puede necesitar información del objeto, cambiar
su estado o realizar alguna otra acción. Para hacer esto, existen dos
formas:
a) Manejando sus variables.
Para referirse a las variables de un objeto, se añade el nombre de la
variable a una referencia de un objeto utilizando el operador punto (.).
referenciaObjeto.variable
b) Llamar o invocar a sus métodos.
La llamada a los métodos de un objeto también utiliza el operador punto.
Existen dos formas de invocar al método: utilizando argumentos o con
paréntesis vacíos, cuando no se tiene ningún argumento.
referenciaObjeto.nombreMétodo(lista de argumentos)
referenciaObjeto.nombreMétodo( )
3. Destrucción de un objeto .
Java gestiona automáticamente la liberación de la memoria lo cual se
conoce como recolección de basura y consiste en lo siguiente: cuando no
existen referencias a un objeto, se supone que no se va a necesitar ya, y
la memoria ocupada por dicho objeto puede ser recuperada. La
recolección de basura sólo se produce esporádicamente, si es necesario,
durante la ejecución del programa. Los diferentes intérpretes de Java
siguen distintos procedimientos de recolección de basura, eso es algo que
maneja internamente Java y no hay necesidad de preocuparse por ello al
hacer un programa.
3. Variables miembro de la clase (atributos).
Los miembros dato de una clase se definen como variables de instancia.
Estas variables pueden ser de cualquier tipo primitivo (int, char, byte, float,
double, etc.), arreglos, cadenas, etcétera. Toda variable debe ser definida
antes de ser utilizada. La definición de una variable, declara la variable y
además le asigna memoria. La sintaxis es la siguiente:
acceso tipo nombreVariableInstancia ;
La accesibilidad (acceso ) de las variables de una clase puede ser:
1. private , sólo es accesible dentro de la clase.
2. default (sin modificador), accesible por cualquier clase del paquete.
3. protected , accesible en todo el paquete y en clases derivadas de otros
paquetes.
4. public , accesible desde cualquier clase.
Violar estas normas de acceso da un error al compilar el programa.
Además, una variable puede ser inicializada en la propia definición.
Ejemplos:
int lado = 5;
float area = 2.5F;
4. Definición de métodos (operaciones).
[ método1, método2, ..., métodoN ]
Un método es un conjunto de sentencias que ejecutan una tarea específica.
En Java, un método siempre pertenece a una clase y su definición nunca
puede contener la definición de otro método, esto significa que no se
pueden tener métodos anidados. Todos los métodos tienen nombre y una
lista de datos o valores que reciben, llamados parámetros o argumentos. La
definición de un método consta de dos partes: la cabecera y cuerpo del
método. La sintaxis para definir un método es la siguiente:
[modificador ] tipo_devuelto método ( Lista de parámetros )
{
Declaración de variables locales
Sentencias ejecutables
return expresión; // No se escribe si el método es de tipo void .
}
Constructores.
Los constructores son métodos no estáticos que tienen el mismo nombre de
la clase, no devuelven ningún valor y se llaman automáticamente cuando se
crea una clase. La función del constructor es inicializar un nuevo objeto (los
datos del objeto). Para una clase, se pueden especificar tantos
constructores como sea necesario, diferenciándose uno de otro por el
número o tipo de parámetros. Los valores que inicializan a las variables de
instancia se pasan a través de la lista de argumentos de los constructores.
Si la clase no tiene ningún constructor, se utiliza un constructor por defecto
que no inicializará los datos de sus objetos. Si no se utilizan constructores,
todos sus objetos serán inicialmente iguales.
class Cubo
{
double lado;
// Constructor para el objeto Cubo.
Cubo (double l) {
lado = l;
}
• • • // Definición de métodos.
}5. Método main( ). 
Todos los programas de aplicación de Java inician su ejecución llamando al
método main() . Esto significa que main() es el programa principal o punto
de inicio de la aplicación, y también su punto de salida. Cada programa de
aplicación en Java tiene un método main() y solo uno, si tiene más de un
main() se produce un error, aunque estén en diferentes clases. Las clases
de Java no necesariamente deben tener un método main() , a menos que
esa clase tenga el programa principal El método main() se define de
cualquiera de la siguientes maneras:
public static void main ( String args[ ] )
{
Declaración de variables locales
Sentencias ejecutables
}
public static void main ( String[ ] args )
{
Declaración de variables locales
Sentencias ejecutables
}
ASIGNACION.
La Sentencia de Asignación.
La sentencia de asignación se utiliza para guardar o almacenar valores o
variables. La asignación es una operación que coloca o sitúa un valor
determinado en una posición de memoria. En Java la sentencia de
asignación simple utiliza el signo igual '=' y debe terminar con punto y coma
(;). La sentencia de asignación es asimétrica, esto quiere decir que la
expresión de la derecha es evaluada y el resultado es asignado a la
variable indicada a la izquierda. En una operación de asignación, el valor de
la derecha es convertido al tipo del valor de la izquierda.
Formato:
Variable operador expresión ;
Variable = expresión; /* ejemplo de sentencia de asignación simple */
Variable Identificador válido declarado en la sección de
declaraciones.
Operador Operador de asignación.
expresión Variable, constante, expresión aritmética o fórmula.
Operadores de Asignación.
Operador Operación
(expr) ++ Incremento (prefijo).
(expr) -- Decremento (prefijo).
++ (expr) Incremento (postfijo).
-- (expr) Decremento (postfijo).
= Asignación simple.
*= Multiplicación más asignación.
/= División más asignación.
%= Módulo más asignación.
+= Suma más asignación.
-= Resta más asignación.
<<= Desplazamiento a la izquierda mas asignación.
>>= Desplazamiento a la derecha más asignación con extensión de signo.
>>>= Desplazamiento a la derecha más asignación rellenando con ceros.
&= Operación AND sobre bits más asignación.
|= Operación OR sobre bits más asignación.
^= Operación XOR sobre bits más asignación.
OPERACIONES DE ENTRADA/SALIDA:
Los datos se pueden almacenar en memoria de tres formas diferentes:
asociados con constantes, asignados a una variable con una sentencia
de asignación o con una sentencia de lectura. La sentencia de lectura es
el método más adecuado si se desea manipular diferentes datos cada
vez que se ejecuta el programa. Además la lectura de datos permite
asignar valores en memoria desde dispositivos o archivos externos (Por
ejemplo: un teclado o una unidad de disco). A esta operación se le
denomina: operación de entrada o lectura.
Conforme se realizan cálculos en un programa, se necesitan visualizar
los resultados. Esta operación se conoce como operación de salida o de
escritura.
En los algoritmos y en pseudocódigo, las instrucciones de entrada/salida
son:
leer (listas de variables entrada) leer x, y, z o leer ( x, y, z )
escribir (listas de variables salida) escribir x, y, z o escribir ( x, y, z )
En Java, la entrada y salida se lee y se escribe a través de flujos (streams).
Java 2 define dos tipos de flujos: de bytes y de caracteres. Un flujo es un
objeto que hace de intermediario entre el programa y el origen o destino de
la información. Esto significa que el programa leerá o escribirá en el flujo
sin importarle desde dónde viene la información o adonde va, ni el tipo de
datos que se leen o escriben. Básicamente, la fuente de entrada de datos
es el teclado y la fuente de salida de resultados es la pantalla.
Debido a que todas las clases relacionadas con flujos pertenecen al
paquete java.io de la biblioteca estándar de Java, un programa que utilice
flujos de Entrada/Salida (E/S), tendrá que importar este paquete:
import java.io.*;
Las clases del paquete java.io están divididas en dos grupos distintos. Uno
ha sido diseñado para trabajar con datos de tipo byte y el otro con datos de
tipo char .
Así mismo, la biblioteca de Java proporciona tres flujos estándar manejados
por la clase System del paquete java.lang . Estos flujos predefinidos son
automáticamente abiertos cuando se inicia un programa, y cerrados cuando
finaliza:
System.in . Referencia a la entrada estándar del sistema, que normalmente
es el teclado. Se utiliza para leer datos introducidos por el usuario.
System.out . Referencia a la salida estándar del sistema, que normalmente
es la pantalla. Se utiliza para mostrar los datos al usuario.
System.err . Referencia a la salida estándar de error del sistema, que
normalmente es el monitor. Se utiliza para mostrar mensajes de error al
usuario.
La clase System define dos referencias a objetos static para la entrada por
teclado y salida por monitor:
System.in para entrada por teclado.
System.out para salida por pantalla.
El primero es una referencia a un objeto de la clase BufferedInputStream en
la cual hay diversos métodos para poder leer los caracteres tecleados. El
segundo es una referencia a un objeto de la clase PrintStream con métodos
como print() o println(), para salida por pantalla. A continuación veremos
como utilizar estas clases y métodos.
1. SALIDA (ESCRITURA DE RESULTADOS).
Un programa debe proporcionar información de salida (resultados). La
salida toma información de la memoria y la presenta en pantalla, o bien, la
puede guardar en un dispositivo de almacenamiento (disco duro o flexible) o
en un puerto de Entrada/Salida.
Flujos de salida.
OutputStream .
La clase OutputStream es una clase abstracta que es una superclase de
todas las clases que representan un flujo en el que un origen escribe bytes
en un destino. El método más importante de esta clase es write . Este
método se presenta de tres formas:
public void write ( int b) throws IOException
public void write ( byte[ ] b) throws IOException
public void write ( byte[ ] b, int off, int len) throws IOException
La primera versión de write simplemente escribe el byte especificado en un
flujo de salida. Puesto que el parámetro es de tipo int , lo que se escribe es
el valor correspondiente a los 8 bits menos significativos, el resto son
ignorados.
La segunda versión del método write escribe los bytes almacenados en el
arreglo b en un flujo de salida.
La tercera versión del método write escribe un máximo de len bytes de un
arreglo b a partir de su posición off, en un flujo de salida.
Cada uno de estos métodos ha sido escrito para que bloquee la ejecución
del programa que los manda llamar hasta que toda la salida solicitada haya
sido escrita.
Por su parte, la clase Writer es una clase abstracta que es superclase de
todas las clases que representan un flujo para escribir caracteres a un
destino. Sus métodos son similares a los de la clase OutputStream, con la
diferencia de que utilizan parámetros de tipo char en lugar de tipo byte .
System.out
El objeto out definido en la clase System está asociado con el flujo de
salida que dirige los datos y permite visualizarlos en el monitor. Con estos
métodos se puede imprimir cualquier cadena (String ) o tipo de dato
primitivo o referenciado: Object, char[ ], int, short, long, double y bolean .
El método se encarga de convertir a cadena esos tipos básicos y
mostrarlos en pantalla. Así mismo, se pueden concatenar cadenas con
caracteres, enteros, etcétera, para lo cual se utiliza el operador +, que
internamente realiza la conversión. También existe una versión de println
que no tiene argumentos y lo que hace es avanzar a la línea siguiente.
System.out es una referencia a un objeto de la clase PrintStream, el cual
es un flujo de salida derivado de OutputStream, y tiene métodos que
permiten fácilmente la salida por pantalla. Estos métodos son:
print ( ) Escribe una cadena de caracteres en el buffer de la pantalla.
println ( ) Escribe una cadena decaracteres en el buffer de la pantalla y
añade el carácter de salto de línea al final de su salida.
flush ( ) Limpia el buffer con las cadenas almacenadas enviándolas a la
pantalla.
Java también hace uso de las secuencias de escape o constantes
especiales de carácter con barra invertida. La lista y significado de estas
constantes se muestran en la siguiente tabla.
Código Significado
‘\b’ Retroceso (backspace).
‘\n’ Salto de línea (line feed).
‘\r’ Retorno de carro (return).
‘\t’ Tabulación horizontal.
‘\f’ Salto de página (form feed).
‘\"’ Imprime comillas dobles.
‘\'’ Imprime una comilla simple.
‘\0’ Carácter nulo.
‘\\’ Imprime una barra invertida.
‘\000’ Número octal.
‘\uhhhh’ Número hexadecimal.
PrintWriter .
En la mayor parte de las aplicaciones reales de Java, no se utilizan programas cuya
salida basada en texto, sea a través del monitor, sino que serán aplicaciones
gráficas que basen su interacción con el usuario en un conjunto de herramientas
gráficas denominado AWT (Abstract Window Toolkit). Sin embargo, se recomienda el
uso de la clase PrintWriter en programas reales y aplicaciones de software con
salidas basadas en texto. PrintWriter es una clase que se basa en caracteres y, por
esta razón, resulta más fácil para la utilización internacional de un programa.
PrintWriter define varios constructores, el más recomendado es el siguiente:
PrintWriter (OutputStream flujosalida, bolean flushOnNuevalínea)
Donde flujosalida es un objeto del tipo OutputStream, y flushOnNuevalínea, una
variable booleana que controla si Java limpia el flujo de salida cada vez que se llama
al método println() . Si la variable flushOnNuevalínea es true , el flujo de salida se
limpia automáticamente. En caso de que sea false , esta limpieza no es automática.
La clase PrintWriter soporta los métodos print() y println() para todos los tipos,
incluyendo Object . Por lo tanto se pueden utilizar estos métodos de la misma
manera que se utilizan con System.out. Si un argumento no es de un tipo sencillo,
los métodos de PrintWriter llaman al método toString() del objeto, y entonces se
imprime el resultado.
Para escribir en la pantalla utilizando la clase PrintWriter, hay que especificar el
System.out para el flujo de salida y limpiar el flujo después de cada nueva línea. El
siguiente ejemplo crea un objeto PrintWriter que está conectado a la salida por el
monitor:
PrintWriter pw = new PrintWriter (System.out , true);
Visualizar datos con formato.
Los resultados producidos por las aplicaciones pueden tener algún tipo de
formato, ya que es posible que en alguna ocasión necesitemos expresar
una cantidad:
• Incluyendo el punto de los decimales y la coma de los miles.
• Con un determinado número de dígitos enteros, completando con ceros
por la izquierda si fuera necesario.
• Con un número determinado de decimales y ajustada a la derecha.
• O con una serie de cantidades decimales, una debajo de otra, ajustadas
por el punto decimal.
Si en lugar de cantidades hablamos de fechas, también podemos requerir
de diferentes modos de presentación.
Para controlar los distintos formatos, Java proporciona un conjunto de
clases en el paquete java.text . La clase Format es una clase abstracta
para dar formato a números, fechas/hora y mensajes. De esta clase se
derivan tres subclases especializadas en cada una de las tareas
mencionadas: NumberFormat , DateFormat y MessageFormat .
La clase NumberFormat es la clase base abstracta para todos los formatos
numéricos. La clase DateFormat es también una clase abstracta para los
formatos de fechas y horas. Pero las clases que son particularmente útiles y
que nos interesa conocer son: DecimalFormat , SimpleDateFormat y
MessageFormat .
a) Dar formato a números.
Para dar formato a un número, primero hay que crear un objeto formateador
basado en un formato específico, y luego utilizar su método format para
convertir el número en una cadena construida a partir del formato elegido.
Los símbolos que se pueden utilizar para especificar un determinado
formato son:
Símbolo Significado
0 Representa un dígito cualquiera, incluyendo los ceros no significativos.
# Representa un dígito cualquiera, excepto los ceros no significativos.
. Representa el separador decimal.
, Representa el separador de los miles.
E Formato de notación científica. E, separa la mantisa y el exponente.
; Actúa como separador cuando se especifican varios formatos.
- Signo negativo de forma predeterminada.
% Multiplicar por 100 y mostrar el símbolo %.
$ Representa el símbolo monetario.
carácter Cualquier carácter puede ser utilizado como prefijo o como sufijo. Por
ejemplo: $ o ‘\u0024’.
El siguiente ejemplo crea un objeto llamado formato que permitirá obtener
números formateados con dos decimales, si los hay, con la coma de los
miles.
DecimalFormat formato = new DecimalFormat (“###,###.##”);
String salida = formato.format (dato);
Si el número de dígitos correspondiente a la parte entera excede el número
de posiciones especificado para la misma, el formato se extiende en lo
necesario. Si el número de dígitos decimales excede el número de
posiciones especificado para los mismos, la parte decimal se trunca
redondeando el resultado.
Se puede utilizar también un objeto formateador basado en la localidad
actual. Por ejemplo, las siguientes líneas de código darán lugar a números
formateados así: $123,456.00.
NumberFormat formato = NumberFormat.getCurrencyInstance();
String salida = formato.format (dato);
El método getCurrencyInstance devuelve el formato monetario de la localidad
actual cuando no se especifica una, o el de la especificada. Por ejemplo:
Locale es_MX = new Locale ("es","MX");
NumberFormat formato = NumberFormat.getCurrencyInstance(es_MX);
String salida = formato.format (dato);
Donde (“es”, “MX”) significa español de México. Otros ejemplos de localidades son:
(“en”, “US”), significa inglés de Estados Unidos, (“en”, “GB”), significa inglés de Gran
Bretaña; (“es”, “ES”), significa español de España, (“fr”, “FR”), significa francés de
Francia; (“de”, “DE”), significa alemán de Alemania; etc. Sin embargo, una localidad
no es un idioma, ya que un mismo idioma se puede hablar en varios países. Cuando
se escriba un programa internacional se tendrá que definir la localidad actual y el
conjunto de localidades que soportará el programa. Las localidades son definidas en
Java por la clase Locale incluida en el paquete java.util . Un objeto de la clase
Locale es simplemente un identificador para una localidad específica. Por ejemplo,
el siguiente código crea dos objetos: país[0] y país[1], uno para el español de
México y otro para el inglés de Estados Unidos.
Locale [ ] país = {
new Locale (“es”, “MX”);
new Locale (“en”, “US”);
};
Aplicando todos los métodos, se puede obtener el formato predeterminado para
cualquiera de éstos dos países. Por ejemplo:
DecimalFormat df = (DecimalFormat ) DecimalFormat.getNumberInstance (país[i]);
Cuando escribimos valores numéricos con o sin formato, quedan alineados
automáticamente a la izquierda. Para alinear a la derecha una serie de valores
numéricos formateados, además del objeto formateador, hay que crear un objeto de la
clase FieldPosition basado en la posición utilizada para realizar la alineación. Ésta
puede ser:
INTEGER_FIELD Alineación por el último dígito entero (por el punto decimal).
FRACTION_FIELD Alineación por el último dígito decimal.
INTEGER_FIELD y FRACTION_FIELD son dos constantes pertenecientes a la clase
Numberformat . Para utilizar el objeto FieldPosition definido, el método format
invocado a través del objeto formateador debe tener tres parámetros: el valor
numérico a formatear, un objeto StringBuffer donde se almacenará el número
formateado y el objeto FieldPosition . Para realizar la alineación se deberán añadir al
principio del objeto StringBuffer un número de espacios en blanco igual al espacio de
impresión deseado menos el total de dígitos a imprimir.
String patrón = new String (“###,###,##0.00”);
DecimalFormat formato = new DecimalFormat

Continuar navegando

Contenido elegido para ti

320 pag.
Java_-_Jorge_Sanchez

ULT

User badge image

Manuel Rodrigues Monameo

207 pag.
Java-pdf

Albert Einstein

User badge image

FREDY PICHIHUA

172 pag.
JavaModulo2-2

Albert Einstein

User badge image

FREDY PICHIHUA