You are on page 1of 43

PROGRAMACIN

EN
JAVA
Mximo Fernndez Lpez
Carmen Rey Doval


UNIDAD DIDCTICA 1
IDENTIFICACIN
DE LOS ELEMENTOS DE
UN PROGRAMA
INFORMTICO


!" e# $ava%

Java es un lenguaje informtico, originalmente desarrollado


por un grupo de ingenieros de Sun a principios de los 90
como software para dispositivos electrnicos de consumo.

En 1995 se presenta como lenguaje de desarrollo de


nternet.

En 199! Sun Microsystems anuncia el Java " como marca


comercial de la versin J#$ 1."


!" e# $ava%

%ctualmente Java &a sido clasificada en tres ediciones


distintas, cada una orientada &acia distintas reas de
desarrollo'

J2SE o Java Standar Edition ( )rientada al


desarrollo de aplicaciones independientes de la
plataforma.

J2EE o Java Esterprise Edition ( orientada para


desarrollo de aplicaciones de entorno empresarial
*versin ms completa+.

J2ME o Java Micro Edition ( )rientado a


dispositivos con capacidades restringidas, como
mviles o pdas


Cara&'er(#'i&a#

Java es un lenguaje orientado a o,jetos -ue proporciona


un conjunto de clases potente . fle/i,le.

Es un lenguaje interpretado . compilado. #espu0s de la


compilacin se o,tiene un cdigo intermedio, denominado
bytecodes -ue se puede ejecutar en distintas plataformas,
siempre . cuando tengan instalada la m-uina virtual de
Java*J12+.

Es un lenguaje independiente de la plataforma, .a -ue


puede ejecutarse en redes de ordenadores de distinto tipo,
gracias al bytecode.

Java fue desarrollado ,asndose en 344, pero eliminando


rasgos del mismo poco empleados *punteros, uniones,
estructuras, define,...+.


)#'r!&'!ra *eneral de
!n pro*rama
package holaMundo;
/**
* @author Carmen
*/
public class HolaMundo {
/**
* @param args the command line arguments
*/
public static void main(String[] args {
S!stem"out"println(#hola mundo#;
$
$
Comentarios
Clase principal
mtodo
paquete


)#'r!&'!ra *eneral de
!n pro*rama

El arc&ivo anterior *fic&ero fuente+ de,e tener la


e/tensin .java . el nom,re de,e coincidir con el de la
clase public si 0sta e/iste. En el ejemplo anterior, el fic&ero
se llamar HolaMundo.java.

package holaMundo; 5as clases de Java se agrupan


en packages, -ue son li,rer6as de clases. 7o es o,ligatorio
utili8arlos.

public class %olaMundo. #efine el nom,re de la


clase. 9n arc&ivo puede contener ms de una clase, pero
slo una puede ser public. Esta clase es la -ue contiene el
programa principal *a-uel -ue contiene el m0todo main+


)#'r!&'!ra *eneral de
!n pro*rama

public static void main(String[] args


20todo principal por el -ue cual comien8a a ejecutarse la
aplicacin.

S!stem"out"println(#hola mundo#; visuali8a


el te/to hola mundo utili8ando el m0todo println.


)#'r!&'!ra *eneral de
!n pro*rama

En el programa aparecen tam,i0n separadores'

:; corc&etes. Se utili8an en arra.s.

< punto . coma. Separa sentencias.

, coma. Separa identificadores consecutivos en una


declaracin de varia,les.

=> llaves. %grupan determinadas instrucciones. Se


utili8an en m0todos, clases, ,ucles, etc.

*+ par0ntesis. Se utili8an en m0todos, llamadas a


m0todos . para indicar prioridad en e/presiones.


)#'r!&'!ra *eneral de
!n pro*rama

Comentarios. Sirven para documentar un programa. Son


ignorados por el compilador. ?ueden representarse de las
siguientes formas'

/* comentario */. ?uede ocupar varias l6neas.

//comentario. El comentario termina al final de la


l6nea.

/** comentario documentacin */. Estos


comentarios son utili8ados por avadoc en la
documentacin -ue se genera automticamente
cuando se utili8a esta &erramienta . E/iste un
conjunto de indicadores -ue avadoc reconoce
como especiales . -ue empie8an por @'
!author" !version...


Compila&in

5os fic&eros fuente *.java+ se traducen a un cdigo


intermedio llamado bytecodes. 3omo resultado de esta
compilacin se o,tienen fic&eros con e/tensin .class. 9na
aplicacin suele estar constituida por varios fic&eros .class.

Aa,itualmente se utili8an entornos de desarrollo *#$E+ para


crear fic&eros fuente, compilarlos . ejecutarlos.

9tili8aremos %et&eans como entorno de desarrollo, pero


tam,i0n veremos como se puede compilar un arc&ivo sin
utili8ar un #$E, en modo comando.


Compila&in

?roceso a seguir' 3rear un programa fuente mediante


cual-uier editor de te/to . almacenarlo con el nom,re
'olaMundo.ava *nom,re de la clase pB,lica+.
public class %olaMundo
{
//primer programa de &ava
public static void main(String argv []
{
S!stem"out"println(#%ola mundo#;
$
$


Compila&in

3ompilar desde la l6nea de comandos, utili8ando el


compilador avac'
avac 'olaMundo.ava
Sinta/is' avac (opciones) fichero*.ava (fichero2.ava..)
?odemos ver todas las opciones ejecutando avac +help

?odemos indicar la ruta de acceso a las clases con la opcin


+classpath del compilador o con la varia,le de entorno
classpath. En este Bltimo caso, la ruta -ueda cam,iada de
modo general'
set ,-.SS/.0'1rutaacceso*2rutaacceso2.....

5as rutas de acceso corresponden a los arc&ivos .ar, .3ip


o .class


Compila&in

?ara -ue el proceso funcione correctamente, la varia,le de


entorno ?%CA de,e indicar al sistema operativo donde
,uscar las utilidades de Java.

3omo resultado de la compilacin o,tendremos el fic&ero


'olaMundo.class. Este cdigo puede ejecutarse en distintas
plataformas.

2ediante la m-uina virtual de Java, *Java 1irtual


2ac&ine+ los bytecodes se traducen a lenguaje m-uina .
se ejecutan'
ava 'olaMundo
Sinta/is' ava (opciones) nombreclase (ar4umentos)

),teniendo la siguiente salida'


'ola mundo


Compila&in

%dems del compilador avac . del int0rprete ava


tenemos la &erramienta avadoc -ue genera documentacin
en formato '0M- a partir del cdigo fuente de un
programa.
Sinta/is' avadoc (opciones) fichero.ava


+i,lio'e&a de &la#e#
$ava

Java permite a un usuario crear sus propias clases, o,jetos


. m0todos. %dems, Java tiene su propia ,i,lioteca de
clases formada por un conjunto de pa-uetes estndar con
ms de 1000 clases -ue se pueden utili8ar en los programas
de Java.

5a ,i,lioteca de clases de Java proporciona, entre otros los


siguientes pa-uetes'

ava.lan4. Es el pa-uete por defecto.

ava.util. ?ermite la gestin de o,jetos en listas o


colecciones. Cam,i0n contiene clases -ue
permiten la generacin de nBmeros aleatorios,
gestin de fec&as, etc.


+i,lio'e&a de &la#e#
$ava

ava.s5in4. ?ermite a los programas Java ofrecer


interfaces grficos de usuario . recoger los datos
de entrada mediante ratn, teclado . otros
dispositivos.

ava.a5t. ?ermite gestionar los componentes para


la construccin del interfa8 del usuario.

ava.beans. Esta,lece las formas en -ue los


componentes en un interfa8 de usuario pueden
interactuar entre s6.

ava.io. ?osi,ilita la comunicacin de entrada .


salida a perif0ricos . fic&eros.


+i,lio'e&a de &la#e#
$ava

ava.math. 3ontiene utilidades matemticas.

ava.net. ?ermite la comunicacin entre un cliente


. un servidor.

ava.rmi. ?osi,ilita el acceso a o,jetos remotos.

ava.security. ?ermite el uso de mecanismos de


seguridad.

ava.s6l. ?ermite la conectividad con ,ases de


datos.


Iden'i-i&adore#

5os identificadores permiten nom,rar varia,les, m0todos,


o,jetos . clases de forma Bnica ante el compilador. Estos
nom,res de,en tener un sentido para el programador.

Java &ace distincin entre ma.Bsculas . minBsculas, por lo


tanto, nom,res o identificadores como nota, %ota . %70. son
distintos.

5os identificadores pueden estar formados por cual-uiera de


los caracteres del cdigo 8nicode, aun-ue de,en comen8ar
con una letra *aD8, %DE+, un su,ra.ado*F+ o s6m,olo de
dlar*G+.

5a longitud del identificador es prcticamente ilimitada.




Iden'i-i&adore#

7o pueden utili8arse como identificadores pala,ras reservadas


del lenguaje, espacios en ,lanco, s6m,olos coincidentes con
operadores ni los valores lgicos true o false.

?or convenio, los nom,res de las varia,les . los m0todos


de,er6an empe8ar por una letra minBscula . los de las clases por
ma.Bscula.

%dems, si el identificador est formado por varias pala,ras la


primera se escri,e en minBsculas *e/cepto para las clases+ . las
siguienes por ma.Bscula *notaMedia+. Estas reglas no son
o,ligatorias, pero son convenientes .a -ue a.udan al proceso de
codificacin de un programa, as6 como a su legi,ilidad.
Iden'i-i&adore#

Vlidos
7H
aIo7acimiento
,otn
notaFmedia
nota1
123
1nota
nota
nota
descuento%
Sueldo neto

No vlidos


.ala,ra# re#ervada#

5as siguientes pala,ras clave estn definidas en Java . no


se pueden utili8ar como identificadores'
abstract continue for ne5 s5itch
boolean default 4oto null synchroni3ed
brea9 do if pac9a4e this
byte double implements private threadsafe
byvalue else import protected thro5
case e:tends instanceof public transient
catch false int return true
char final interface short try
class finally lon4 static void
const float native super 5hile


.ala,ra# re#ervada#

%dems, el lenguaje se reserva unas cuantas pala,ras ms,


pero -ue &asta a&ora no tienen un cometido espec6fico'
cast future 4eneric inner
operator outer rest var


Tipo# de da'o#
En Java e/isten dos tipos principales de datos'

Tipos de datos primitivos, simples o bsicos. Estn


predefinidos en Java. ?ermiten almacenar enteros, nBmeros
de coma flotante, caracteres . valores ,ooleanos.

Tipos de datos referenciales. 3lases, intefaces . arra.s.




Tipo# de da'o#
primi'ivo#

TIPO
Valor por
defecto
Descripcin Formato longitud ango
b!te " b!te C#$ % b!te # %$& ' %$(
s)ort " entero corto C#$ $ b!tes # *$(+& ' *$(+(
int " entero C#$ , b!tes # $%,(,&*+,& '$%,(,&*+,(
long " entero largo C#$ & b!tes
#-$$**($"*+&.,((.&"&'
-$$**($"*+&.,((.&"(
float "."
real en coma
flotante
I/// (., , b!tes
%.,"%$-&0%"
#,.
'
*.,"$&$*0%"
*&
double "."
real en coma
flotante
I/// (., & b!tes ,.-0%"
#*$,
' %.(-(+-*0%"
*"&
c)ar
12u""""1
3null4
carcter 5nicode $ b!tes " ' +..*.
boolean false lgico % bit % bit true6false


Da'o# primi'ivo#
Alma&enamien'o

3D" DJ Complemento a dos'


Kit de la i8-uierda para el signo *0L4, 1L D+.
Si nBmero JL0 resto de ,its para valor ,inario.
Si nBmero M0 cam,iar 0 por 1, 1 por 0 . sumar 1.


Da'o# primi'ivo#
Alma&enamien'o

1
11111111
1111111 11111111
1
2!!
32"#"
1 1
11111111 1
11111111 11111111
$1
$2!!
$32"#"
E/emplos de tipo short . %lmacenamiento en " ,.tes


/aria,le#

Eonas de memoria en las -ue se guardan datos -ue pueden


cam,iar de valor durante la ejecucin de un programa.

?ara poder utili8ar varia,les, primero &a. -ue declararlas.

9na varia,le se declara especificando el tipo . el identificador.


5as varia,les pueden ser iniciali8adas en el momento de su
declaracin, siempre -ue el valor -ue se les asigne coincida con
el tipo de dato de la varia,le.

int '; //declaraci(n
')*; //asignaci(n de un valor
int !)+;//declaraci(n e iniciali,aci(n


Li'erale#

5os literales son elementos -ue sirven representar un valor


en el cdigo fuente del programa. En Java e/isten literales
para los siguientes tipos de datos7

5gicos *,ooleanos+' true, false.


boolean correcto1false2

3arcter *char+.

Enteros *byte" short" int" lon4+.

Neales *double" float+.

3adenas de caracteres *Strin4+.


Li'erale# de &ar&'er
Se representan siempre entre comillas simples. ?ueden escri,irse
de distintas formas'

9n s6m,olo del cdigo 973)#E' O%P, Q:Q, QRQ

En octal' QS101Q e-uivalente a Q%Q

En &e/adecimal' QSu00T1Q e-uivalente a Q%Q


Li'erale# en'ero#

Se almacenan por defecto como de tipo int. Si se tra,aja


con nBmeros mu. grandes, se almacenan como lon4. ?uede
aIadirse al final la letra - ;l< para indicar -ue son de tipo
lon4.

?ueden e/presarse en'

&ase *=' primer d6gito entre 1 . 9, siguientes entre 0 .


9.

7ctal *,ase !+' primer d6gito 0, siguientes entre 0 . U.

'e:adecimal *,ase 1V+' empie8an por 0W *0/+,


continBan con nBmeros entre 0 . 9 .Xo letras %DH *aDf+.
"0 entero ,ase 10
0"T entero octal *"0 en ,ase 10+
0/1T entero &e/adecimal *"0 en ,ase 10+
"05 long ,ase 10
0"! no vlido
0/TY no vlido
Li'erale# en'ero#
Li'erale# reale#

%lmacenan valores de tipo double o float. Se almacenan


por defecto como de tipo double. 7o pueden e/presarse en
octal o &e/adecimal.

?ueden llevar aIadida una H*f+ o una #*d+ -ue indicarn


-ue son de tipo float o double respectivamente.

?ueden e/presarse'

2ediante su parte entera, el punto decimal *.+ . la


parte fraccionaria.

2ediante notacin e/ponencial o cient6fica.


1.VU!e" 1VU.! 1VU.!f
1"T".T5ED" 1".T"5 1".T"5d
Cadena# de &ara&'ere#

?ueden iniciali8arse a partir de literales de tipo Strin4.

1an encerrados entre comillas do,les *Z+ . de,en estar


incluidos en una sola l6nea del programa.

?ueden incluir cual-uier carcter de 973)#E o su cdigo


precedido de S.

?ueden incluir caracteres de escape'Sn *salto de l6nea+,S[ *Z+,


SQ *Q+, SS*S+, St *ta,ulador+, Sr *retorno de carro+
S!stem"out"println(-.rimera l/nea0nSegunda l/nea0n1;
S!stem"out"println(-%ol0u++231;
S!stem"out"println(-comillas 01insertadas01 -;


Con#'an'e#

5as constantes en Java son declaradas como atri,utos


de tipo final. El valor de un atri,uto final de,e ser
asignado en la declaracin del mismo. 3ual-uier
intento de modificar su valor generar un error por
parte del compilador.
Ej' final double PI=3.1415!"


0peradore# ari'm"'i&o#
OP/8DO/9 9I:;IFIC8DO
44 incrementa en uno la varia,le adjunta
DD decrementa en uno la varia,le adjunta
\ multiplicacin
%
divisinD si dividendo . divisor son
enteros, el resultado ser un entero
% resto divisin
4
sumaD si a la i8-uierda &a. una cadena de
caracteres, concatena
D resta
)xpre#ione# ari'm"'i&a#

9na e/presin aritm0tica es un conjunto de varia,les,


constantes . funciones unidas por operadores aritm0ticos.

En una e/presin pueden aparecer varios operadores . el


valor final puede variar en funcin del orden de ejecucin
de 0stos.

?rioridad de ejecucin'

44 DD *igual prioridad, de i8-uierda a derec&a+

\ X ] *igual prioridad, de i8-uierda a derec&a+

4 D *igual prioridad, de i8-uierda a derec&a+


?odemos cam,iar el orden de ejecucin utili8ando par0ntesis.
)xpre#ione# ari'm"'i&a#
-4 * 7 + 2 % 3 / 4 - 5
$2& ' 2 % 3 % ( $ !
$2& ' 2 % ( $ !
$2& ' $ !
$2& $ !
$32
)xpre#ione# ari'm"'i&a#

)perador 44 situado a la i8-uierda de la varia,le *prefijo+.


?rimero se reali8a el incremento . luego el resto de
operaciones.
>>a * 2 DJincrementa a . multiplica por "
Suponiendo -ue a vale 10 inicialmente, su valor
final ser 11 . el resultado ""

)perador 44 situado a la derec&a de la varia,le *sufijo+.


?rimero se reali8an las operaciones . luego el incremento.
/44 \ " DJmultiplica / por " . finalmente
incrementa /
Suponiendo -ue / vale 10 inicialmente, el
resultado ser "0 . el valor final de / 11


0peradore# de
a#i*na&in
OP/8DO/9 9I:;IFIC8DO
L %signacin de derec&a a i-uierda
4L Suma . asigna a la i8-uierda
DL Nesta . asigna a la i8-uierda
)* 2ultiplica . asigna a la i8-uierda
%* #ivide . asigna a la i8-uierda
]L Nesto de la divisin . asigna a la i8-uierda
0peradore# de
a#i*na&in

Cienen menor prioridad -ue el resto de operadores.

7perador 1
/L 5 4 ^ \ T XX/L1U
.L *5 4 ^+ \ T XX.L^"
aL10

7peradores de asi4nacin ampliada >1 " +1......


/4L 5 DJincrementa / en 5, e-uivale a /L/45
/\L10 DJmultiplica / por 10, e-uivale a /L/\10


Conver#ione# de 'ipo#

Si en una operacin &a. datos num0ricos de distintos tipos,


todos ellos se convierten al tipo de dato -ue permite una ma.or
precisin . rango de representacin num0rica< as6, por ejemplo'

Si cual-uier operando es double todos se convertirn a


double.

Si cual-uier operando es float . no &a. ningBn double


todos se convertirn a float.
Jerar-u6a en las conversiones de ma.or a menor'
double <# float <# long <# int <# s)ort <# b!te

3ual-uier dato puede ser convertido a cadena'


int i)4;
S!stem"println"out(-5alor de i - 6 i;


Conver#ione# de 'ipo#
En Java es posi,le transformar el tipo de una varia,le u o,jeto
en otro diferente al original con el -ue fue declarado. Este
proceso de conversin e/pl6cita, se denomina moldeado o cast.
5a conversin se lleva a ca,o colocando el tipo deseado entre
par0ntesis, a la i8-uierda del valor -ue -ueremos convertir.
int ' )3+;
int i ) 7;
8loat 9 ) *4"7:;
k ) (int9;
9)(8loat'/i;//el resultado ser; real

You might also like