Está en la página 1de 32

CursodeprogramacinenJavaNivelbsico

Pagina2/32

1 ndice
1 ndice.............................................................................................................................................................................................................2
2 Introduccin al curso...................................................................................................................................................................................5
2.1 Objetivo de este curso..........................................................................................................................................................................5
2.2 Manual del alumno..............................................................................................................................................................................5
2.3 Ejercicios prcticos..............................................................................................................................................................................5
2.4 Requisitos para atender a este curso..................................................................................................................................................5
2.5 Soporte despues del curso....................................................................................................................................................................5
3 Introduccin al Java.....................................................................................................................................................................................6
3.1 Objetivo del capitulo............................................................................................................................................................................6
3.2 Historia del Java...................................................................................................................................................................................6
3.3 Las versiones de Java...........................................................................................................................................................................6
3.4 Uso del Java..........................................................................................................................................................................................6
3.5 Caractersticas del Java.......................................................................................................................................................................6
3.5.1 Simple.............................................................................................................................................................................................7
3.5.2 Orientado objetos...........................................................................................................................................................................7
3.5.3 Distribuido......................................................................................................................................................................................7
3.5.4 Interpretado....................................................................................................................................................................................7
3.5.5 Seguro.............................................................................................................................................................................................7
3.5.6 Multihilo.........................................................................................................................................................................................7
4 Instalacin del Java......................................................................................................................................................................................8
4.1 Objetivo del capitulo............................................................................................................................................................................8
4.2 Cual versin?........................................................................................................................................................................................8
4.3 Instalacin de Java bajo Suse Linux..................................................................................................................................................8
4.4 Verificacin de la instalacin..............................................................................................................................................................8
4.5 Entornos de desarrollo (IDE)..............................................................................................................................................................9
5 Primera aplicacin.....................................................................................................................................................................................10
5.1 Objetivo del capitulo..........................................................................................................................................................................10
5.2 Estructura del cdigo.........................................................................................................................................................................10
5.2.1 Declaracin de la clase.................................................................................................................................................................10
5.2.2 Declaracin de mtodo.................................................................................................................................................................10
5.3 Compilacin del cdigo......................................................................................................................................................................10
5.4 Ejecucin de la aplicacin.................................................................................................................................................................10
6 Caractersticas del lenguaje Java...............................................................................................................................................................11
6.1 Objetivo del capitulo..........................................................................................................................................................................11
6.2 Palabras reservadas...........................................................................................................................................................................11
6.3 Sensibilidad.........................................................................................................................................................................................11
6.4 Identificadores....................................................................................................................................................................................11
6.5 Reglas de nombramiento...................................................................................................................................................................11
6.6 Declaracin de variables....................................................................................................................................................................12
6.6.1 Variable de clase vs. Variable de mtodo....................................................................................................................................12
6.7 Tipos simples ( o primitivos).............................................................................................................................................................12
6.7.1 Enteros..........................................................................................................................................................................................13
CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina3/32

6.7.2 Reales...........................................................................................................................................................................................13
6.7.3 Carcter........................................................................................................................................................................................13
6.7.4 Bolanos.......................................................................................................................................................................................14
6.8 Constantes...........................................................................................................................................................................................14
6.9 Operadores.........................................................................................................................................................................................14
6.9.1 Principales operadores sobre enteros y reales..............................................................................................................................14
6.9.2 Prioridad de operadores................................................................................................................................................................15
6.10 Conversiones entre tipos..................................................................................................................................................................15
6.10.1 Conversin automtica...............................................................................................................................................................15
6.10.2 Conversin explicita...................................................................................................................................................................15
6.11 La clase Math...................................................................................................................................................................................16
6.12 Comentarios......................................................................................................................................................................................16
7 Cadenas de caracteres y fechas..................................................................................................................................................................17
7.1 Objetivo del capitulo..........................................................................................................................................................................17
7.2 Introduccin ......................................................................................................................................................................................17
7.3 String...................................................................................................................................................................................................17
7.3.1 Declaracin...................................................................................................................................................................................17
7.3.2 Caracteres especiales....................................................................................................................................................................17
7.3.3 Concatenacin de cadenas............................................................................................................................................................17
7.3.4 Otros mtodos de String...............................................................................................................................................................17
7.3.5 Conversin de String a enteros o reales y contrario.....................................................................................................................18
7.4 Date......................................................................................................................................................................................................18
7.5 Calendar.............................................................................................................................................................................................18
8 Arreglos.......................................................................................................................................................................................................19
8.1 Objetivo del capitulo..........................................................................................................................................................................19
8.2 Tipos de arreglos y uso......................................................................................................................................................................19
9 Decisiones y bucles.....................................................................................................................................................................................20
9.1 Objetivo del capitulo..........................................................................................................................................................................20
9.2 if ... else................................................................................................................................................................................................20
9.3 Comparacin de objetos....................................................................................................................................................................20
9.4 Condiciones mltiples (AND y OR)..................................................................................................................................................20
9.5 switch...................................................................................................................................................................................................21
9.6 while.....................................................................................................................................................................................................21
9.7 do ... while...........................................................................................................................................................................................21
9.8 for.........................................................................................................................................................................................................21
9.9 break....................................................................................................................................................................................................22
9.10 continue.............................................................................................................................................................................................22
9.11 Operador ternario............................................................................................................................................................................22
10 Paquetes, clases, y mtodos......................................................................................................................................................................23
10.1 Objetivo del capitulo........................................................................................................................................................................23
10.2 Paquetes............................................................................................................................................................................................23
10.2.1 Uso.............................................................................................................................................................................................23
1.1.1 Importacin de paquetes ..............................................................................................................................................................23
10.3 Clases.................................................................................................................................................................................................24
10.3.1 Declaracin y uso.......................................................................................................................................................................24
10.4 Constructores...................................................................................................................................................................................24
CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina4/32

10.5 Mtodos.............................................................................................................................................................................................24
10.5.1 Declaracin y uso.......................................................................................................................................................................24
10.6 Modificadores de acceso..................................................................................................................................................................25
10.6.1 Acceso por defecto.....................................................................................................................................................................25
10.6.2 private.........................................................................................................................................................................................25
10.6.3 public..........................................................................................................................................................................................25
10.6.4 protected.....................................................................................................................................................................................25
11 Polimorfismo, encapsulamiento, y herencia...........................................................................................................................................26
11.1 Objetivo del capitulo........................................................................................................................................................................26
11.2 Polimorfismo.....................................................................................................................................................................................26
11.3 Encapsulamiento..............................................................................................................................................................................26
11.3.1 Clases internas............................................................................................................................................................................26
11.3.2 Clases abstractas.........................................................................................................................................................................28
11.3.3 Interfaces....................................................................................................................................................................................28
11.4 Herencia............................................................................................................................................................................................28
12 Tratamiento de excepciones.....................................................................................................................................................................29
12.1 Objetivo del capitulo........................................................................................................................................................................29
12.2 Errores de compilacin....................................................................................................................................................................29
12.3 Errores de lgica..............................................................................................................................................................................29
12.4 Errores de ejecucin........................................................................................................................................................................29
12.4.1 throws.........................................................................................................................................................................................29
12.4.2 try ..............................................................................................................................................................................................30
12.4.3 catch...........................................................................................................................................................................................30
12.4.4 finally.........................................................................................................................................................................................30
13 Ejercicios...................................................................................................................................................................................................31

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina5/32

2 Introduccinalcurso
2.1 Objetivodeestecurso
EnestecursovamosaverlasbasesdellenguajeJava.Estabaselesvaaservirporcualquiertipodeaplicacinque
desearealizar:aplicacinindependiente,applet,paginawebenJava

2.2 Manualdelalumno
Estemanualdelalumnoesunaayudaparaelalumno,paratengaunrecuerdodelcurso.Estemanualcontieneun
resumendelasmateriasquesevanaestudiarduranteelcurso,peroelalumnodeberadetomarnotaspersonales
paracompletasestemanual.

2.3 Ejerciciosprcticos
Paracaptarmejorlateora,seharnmuchosejerciciosconlosalumnos,paraprobarlateorayverificarlaintegracin
delamateria.

Tambin,elalumnopodrcopiarsuscdigosenundisquetealfindelcursoparallevarse,confindeseguirlaprctica
ensuhogar.

2.4 Requisitosparaatenderaestecurso
Nohayrequisitosparaatenderaestecurso,peroelconocimientodeotrolenguajedeprogramacin,yespecialmenteel
C++,leayudaranaentendermasrpidamenteellenguajeJava.
Sielalumnotienedificultadesenunuotrocapitulo,eldebesentirselibredepedirexplicacionesadicionalesal
profesor.

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina6/32

3 IntroduccinalJava
3.1 Objetivodelcapitulo
Alfindeestecapitulo,elalumnotendrunavistageneraldelahistoriadelJava,ascomodesuscaractersticas
generales.

3.2 HistoriadelJava
JavafuedesarrolladoporSunMicrosystems.Laprimeraversinsalien1995.Elobjetivoeradetenerunlenguajede
programacinquepuedafuncionarsobrecualquierequipo,demaneraindependientedelhardwareydelsistema
operativo.
JavaconociungranintersdepartedelosdesarrolladoresgraciasalInternet.LosappletsdesarrolladasenJava
podanserinterpretadasyejecutadasporcualquierclienteweb,queseaunPC,unMac,Linux.Fueprimerograciasa
suportabilidadqueJavaestuvo(yest!)tanpopular.

3.3 LasversionesdeJava
LaprimeraversindeJavafuelaversin1.0.Siguieronlaversin1.1,1.2,1.3,1.4,1.5,yahora1.6.
Apartirdelaversin1.2,sehabladeJava2,paradiferenciardelasversionesanteriores.
SunMicrosystemsutilizadosnmerosdeversionesparasusproductosJava:elnmerodeversindeproducto,yel
nmerodeversindedesarrollo.
Ashablandodelproductooplataformasehablaradelaversin6.0,cuandoeldesarrolladorhablaradelaversin1.6.0
EjemplodeproductosdeSunMicrosystems:
Nombrecompleto
Java2PlatformStandard
Nombredeplataforma
Edition6.0
J2SEDevelopmentKit6.0
Productostrabajandobajola
J2SERuntimeEnvironment
plataforma
6.0

Abreviacin
J2SE6.0
JDK6.0
JRE6.0

Losdosprimerosdgitosdelnmerodeversinpermitenidentificarsuversinmayor.Aslaversin1.4.2_01esuna
subversin2,revisin01,delJava2,versin1.4.

3.4 UsodelJava
Javatienevariasutilidades.Puedeserviradesarrollaraplicacionesautnomas(100%Java),appletsparraelInternet
(pequeasaplicacionesdescargadasyejecutandosobreelcliente),osermezcladoconotrolenguajecomoHTML(Java
script,JavaServerPages,...).

3.5 CaractersticasdelJava
LadifusinrpidadelJavahasidoposiblegraciasasusimportantescaractersticas.Aqusonlascaractersticas
principalesdelJava.

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

3.5.1

Pagina7/32

Simple

Aunqueellenguajeorientadoobjeto(OO)noesfcilnisencillo,Javaesreconocidocomomsfcilqueotroslenguajes
comoelC++.
3.5.2

Orientadoobjetos

Laprogramacinorientadaobjetomodelalascosasdelmundoreal,olosconceptos,comounobjeto.Aselobjetocarro
puedeserviraconstruircarrosrojos,comocarrosazules,apartirdelmismoobjetocarro.
3.5.3

Distribuido

Javapermiteinteraccionesentrevariascomputadorasconectadasenredes,paradistribuireltrabajoolosrecursos.
3.5.4

Interpretado

Javaesunlenguajeinterpretado,esosignificaquenecesitauninterpreteparapoderserejecutado.Esteintrpretees
lamaquinavirtualdeJava(JVM).
Javaestacompiladoenuncdigobinario,quelamaquinavirtualinterpreta.Aselcdigopuedesercompiladode
maneraindependientedelsistemadedestino.LamaquinavirtualdeJavaesespecficaalsistemaoperativodedestino,
noalcdigo.
3.5.5

Seguro

EllenguajeJavaseutilizaenelInternetenmuchossitioswebquenecesitanunagrandeseguridad,comobancos,
comercioelectrnico,...
Javatienemuchasopcionesparagestionarlaseguridaddeejecucindelaaplicacin.
TambinelcdigoJavadescargadodelInternetyejecutadoellamaquinadelcliente,noproducedaosenlamaquina
delcliente.
3.5.6

Multihilo

Javapermiteejecutartareassegnvarioshilosdeejecucin,esdecirejecutarvariastareasenparalelo.

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina8/32

4 InstalacindelJava
4.1 Objetivodelcapitulo
Alfindeestecapitulo,elalumnotendrlasherramientasdeJavainstaladoensucomputadora.Esteesunrequisito
parapodercumplirlosejerciciosprcticos.

4.2 Cualversin?
ExistentresplataformasdeJava2:
LaedicinestndardeJava2(J2SE).Eslaquevamosautilizar.
LaedicindeempresadeJava2(J2EE).Esunaversinmsamplia,parahaceraplicaciones(web)muy
grandes.
LaedicinmicrodeJava2(J2ME).Esunaversinparahaceraplicacionesparaaparatoselectrnicos(mviles,
beeper,MP3,...)
Enlaplataformaestndar,haydosproductosprincipales:
Elambientedeejecucin(JRE),quecontienelamaquinavirtual,yqueesnecesarioparaejecutaruncdigo
Java.
Elambientededesarrollo(JDK),quecontienelasfuentesycdigosnecesariosparacompilaruncdigoJava
textoencdigoJavabinario,listoparaserejecutado.
ExistenotrasversionesdeJavaqueladeSun,asporejemploelOpenJDK,olamaquinavirtualJavadeMicrosoft.
Peroparamsestabilidad,yparaestartodosutilizandolamismacosa,vamosaquedarnosutilizandolasversionesde
JavadeSun.

Nosotros,parapoderdesarrollarenJava,necesitamosdescargarlaversindedesarrollo(JDK)quecorrespondeal
sistemaoperativosobreelcualvamosatrabajar.
ElJDK(yelJRE)sepuedendescargargratuitamentededesdeelsitiohttp://java.sun.com

4.3 InstalacindeJavabajoSuseLinux
Parainstalarlaversion1.6deJavaJDKvamosprimeroaentrarcomoelusuarioRoot(ousarsu).
Luegoabrimosunaventanadeconsola,introducemoselCDdelcurso,yvamosainstalarlaversiondeJavaqueestaen
elCDlanzandodesdeelCDlainstruccin:
rpm

-ivh jdk-6u4-linux-i586.rpm

AhoraelJavaestadisponibleenensistemabajo/usr/java/jdk1.6.0_04peroelJavapordefectoestodavialaversion1.5
queveniaconSuse10.3.Sepuedeverificarejecutandojava -version
Paraquelaversionpordefectosealaversion1.6hayquecambiaralgunosenlacesdebajode/etc/alternatives.Para
eso,ejecutadesdeelCD'. modifySuseJDK16.sh'. Sisaleunerrordequejavacnoexiste,ignorala.

4.4 Verificacindelainstalacin
Unavezelarchivodescargadoeinstalado,verificamosqueelJavaestabieninstaladoabriendounaventanade
ejecucinyejecutandolosiguiente:java -versionyjavac
SinocontestaquelaversiondeJavaes1.6.0,esqueJava1.6.0noestainstaladocorrectamente,oquenosehan
cambiadocorectamentelosatajosde /etc/alternatives.
CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina9/32

Sinoreconoceeljavac,hayqueconfigurarvariablesdeambiente(path).Debajode/etcmodificarelarchivoprofile
adjuntandoelcamino /usr/share/java/binenlavariablePATH.
BajoWindows,elcaminohacialacarpetabindeJavadebeestarincluidoenlavariabledeentornoPath.BajoXPy
Windows2000,clickderechosobreMi PC... Propiedades... Opciones avanzadas... Variables de entorno... Variables
de sistema.EditarlavariablepathyincluiralfinalentredoblecomillaselcaminohaciaJava(porejemplo
"C.\Archivos de Programa\Java\jdk1.6.0_04\bin).

4.5 Entornosdedesarrollo(IDE)
SiparaprogramarenJava,nosenecesitamsqueuneditordetexto(yelJavainstalado...),existenvarias
aplicacionesqueayudanenlaprogramacin,identificandolaspalabrasreservadas,proponiendolasintaxis,
formateandoelcdigo,etc...
Paraestecurso,vamosautilizarunsimpletratamientodetexto,porqueeselmassimple,yorequieremanualde
usuario,comociertosentornosdedesarrollo.Parasuinformacin,aquestnunosentornosdedesarrolloparaJava
queproponenunaversingratis,yquesondisponiblesparaWindowscomoparaLinux:
Eclipse(www.eclipse.org)
NetBeans(www.netbeans.org)
JdeveloperdeOracle(www.oracle.com)
Jbuilder(versindisponibleenespaol!)(www.borland.com/jbuilder)

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina10/32

5 Primeraaplicacin
5.1 Objetivodelcapitulo
Alfindeestecapitulo,elalumnoharcreadoyejecutadosuprimercdigoJava.
Estaprimeraaplicacinservirdebaseparaponerenprcticayprobarlateoraquevamosaverenlosprximos
captulos.

5.2 Estructuradelcdigo
Parapoderserejecutado,uncdigoJavanecesitaalmenosunaclase,yqueestaclasecontieneunamtodo,lamtodo
main.
AquestaunejemplodeunaaplicacinqueimprimaenlaconsolaEstoyenmain:
class Test {
public static void main(String[] args) { // metodo principal
System.out.println("Estoy en main!");
}// fin de metodo Main
} // fin de clase

5.2.1

Declaracindelaclase

Laclasetienequeserdeclaradaconlapalabrareservadaclass,yseguidodeunespacioydelnombredelaclase(aqu
Test).
Laclasetienequeserguardadaenunarchivoquetengaelmismonombrequelaclase,ylaextensin.java
Elinicioyelfinaldelaclaseestnmarcadoscon{y}respectivamente.Ahorateneosunobjeto(clase)quesellama
Test.
5.2.2

Declaracindemtodo

Elmtodoprincipal,queestallamadacuandoseinicialaaplicacinJavaeselmtodomain(public

static void

main(String[] args)).

Elinicioyelfinaldelmtodoestnmarcadoscon{y}respectivamente.Estemtodohacesolamenteunaaccin:
imprimaenlaconsolaeltextoEstoyenmain!).
Paramasinformacionessobrelasclasesymtodos,verelcapituloPaquetes,clases,ymtodos.

5.3 Compilacindelcdigo
Unavezelcdigoguardado(Test.java),lopodemoscompilarejecutandolainstruccinsiguiente:javac

Test.java

Estainstruccinvaacompilarelcdigoy,silacompilacinsaleconxito,crearunarchivoTest.class

5.4 Ejecucindelaaplicacin
Paraejecutarelcdigodenuestraaplicacin,llamamosalainstruccinjava
enmain!.

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Test.

EnlaconsoladebeaparecerEstoy

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina11/32

6 CaractersticasdellenguajeJava
6.1 Objetivodelcapitulo
Alfindeestecapitulo,elalumnosercapazdeelegireltipodevariablenecesariaparaunciertotipodedatos,ypodr
declararvariablesyconstantesenJava.
Elpodrtambinponercomentariosensucdigo,convertirdatosdeuntipoaotro,yhaceroperacionessobre
variables.

6.2 Palabrasreservadas
HaypalabrasquesonreservadasporquetienenunsignificadoespecialdentrodellenguajeJava.Asnosepueden
utilizarparaotracosaquesuusopredefinido.Todaslaspalabrasreservadasestanenminsculas.
ListadepalabrasreservadasdelJava1.6.0:
abstract
assert***
boolean
break
byte
case
catch
char
class
const*

continue
default
do
double
else
enum****
extends
final
finally
float

*
**
***
****

not used
added in 1.2
added in 1.4
added in 5.0

for
goto*
if
implements
import
instanceof
int
interface
long
native

new
package
private
protected
public
return
short
static
strictfp**
super

switch
synchronized
this
throw
throws
transient
try
void
volatile
while

6.3 Sensibilidad
Javaessensiblealasmaysculasylasminsculas.Astryesunapalabrareservada,peroTryno.

6.4 Identificadores
Losidentificadoressonlosnombresquesedanparaidentificaralasclases,paquetes,interfaces,mtodos,yvariables.
Elnombredeunidentificadortienequecumplirconciertasreglas:
Debetenerunomascaracteres(sinlongitudmxima)
Nopuedeconteneroperadores(+,,>...)
Nopuedeserigualaunapalabrareservado(if,void,...).Verlalistadepalabrareservadasarriba.
Elprimercarctertienequeserunaletra,elcarcter$oelcarcter_(subrayado).
LasletrasquepuedenserutilizadassonlasdelalfabetoUnicode,conmaysculasyminsculas(cuidadoque
Javahacediferenciasentremaysculasyminsculas!).

6.5 Reglasdenombramiento
Parateneruncdigomsestndar,existenrglasdenombramientodelospaquetes,clases,mtodos,variables,y
constantes.
Losnombresdepaquetesestnnormalmenteenminsculas.Ej:paquetetest
CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina12/32

Losnombresdeclasesestnnormalmenteenminsculas,conlaprimeraletraenmayscula,ascomolaprimeraletra
decasenombreinterno.Ej:claseTestJava
Losnombresdemtodosyvariablesestnnormalmenteenminsculas,conlaprimeraletraenminscula,yla
primeraletradecasenombreinternoenmayscula.Ej:mtodogetNombre,variableedadEmpleado,...
Losnombresdeconstantesestnnormalmenteenmaysculas.Ej:constantePREF_TEL;
AnquenoseguirestasreglasdenombramientonoprovocaerroresenJava,peroaltrabajarenequipo,alutilizar
cdigodeotrapersona,oalquererutilizarciertasopcionesdeherramientasparagenerarpartedecdigodemanera
automtica,elseguimientodeestasreglasesmuyimportante.

6.6 Declaracindevariables
Lasvariablespermitenalmacenardatosdeentrada,desalida,ointermedios.
Lasintaxisbsicadedeclaracindevariablees:
<tipo de dato> <nombre de variable>;
int miNumero;

Enladeclaracinsepuededeclararalavezvariasvariablesdeunmismotipo,separandolosnombresdevariablescon
unacoma.
<tipo de dato> <nombre de variable 1>,<nombre de variable 2>;
int miNumero, tuNmero;

Enladeclaracinsepuedetambininicializarlavariable,asignndoleunvalor.Elvalorseasignaconelsignoigualy
lavalorinicial.
<tipo de dato> <nombre de variable> = <valor inicial>;
int miNumero = 1;

Unavariableestdisponiblesolamenteadentrodelbloquedecdigoadondeestdeclarado(delimitadopor{}).Los
diferentesnivelesonclase,mtodo,ybloqueadentrodeunmtodo.
6.6.1

Variabledeclasevs.Variabledemtodo

Unavariabledeclaradaalniveldelaclaseseinicializapordefectoacero(enterosyreales),false(bolean),oanulo
(otrostipos).Lasvariablesdeclasesondisponiblededesdecualquiermtododelaclase.
Unavariabledeclaradaenunmtododebeserinicializadademaneraexplicitaparapoderserutilizada.
Siunvariabledemtodotieneelmismonombrequeunvariabledeclase,adentrodeestemtodolavariablede
mtodosobreescribelavariabledeclase,amenosquesemenciona'this.'Anteselnombredelavariable(parautilizar
lavariabledeclase).
Unavariabledemtodonopuedesersobreescritaporotra.Esdecir,losnombredevariabledebensernicosadentro
deunmtodo.

6.7 Tipossimples(oprimitivos)
Lostipossimplessontiposquenosonorientadosobjetos.Sesubdividenentreenteros,reales,carcter,ybolanos.

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

6.7.1

Pagina13/32

Enteros

Haycuartotiposdeenteros:byte,short,intylong.Todospuedenserpositivosonegativos,ytienenunacapacidadde
8,16,32o64bits.
Cuandoseasignaunvalornumricoaunlong,haypegarlelaletralparaindicaraJavaqueesunlong.Pordefecto,
unvalorenteroestaconsideradocomounint.
Ejemplosdedeclaracin:
int miNumero = 1;
byte testByte = 17;
short testShort = 12357;
long testLong = 122132135l;

6.7.1.1

byte

Elbytepuedecontenervaloresenterasentre128y127.
6.7.1.2

short

Elshortpuedecontenervaloresenterasentre32768y32767.
6.7.1.3

int

Elintpuedecontenervaloresenterasentre2147483648y2147483647.
6.7.1.4

long

Ellongpuedecontenervaloresenterasentre9223372036854775808y9223372036854775807.
6.7.2

Reales

Losrealescontienesvaloresconcomaflotante,quepermitealmacenarnmerosmuygrandesomuypequeoscon
grandeprecisin.
Losrealessedividenentrefloatydouble.Losfloattienenprecisinsimple(6o7dgitosmximo)ylosdoubletienen
precisindoble(14o15dgitos).Pordefecto,unvalorrealestaconsideradocomoundoble.

Cuandoseasignaunvalornumricoaunfloat,haypegarlelaletrafparaindicaraJavaqueesunfloat.Alosdouble,
laletrad.
Ejemplosdedeclaracin:
float testFloat = 1.771f;
double testDouble = 1.221d;

6.7.2.1

float

Elfloatpuedecontenervaloresdecimalesentre3,4E38y3,4E38.
6.7.2.2

double

Eldoublepuedecontenervaloresdecimalesentre1,7E308y1,7E308.
6.7.3

Carcter

Elcarcter(char)puedecontenersolouncarcter.Lascadenasdecaracteressernvistosenotrocapitulo.
Ejemplodedeclaracin:char
CopyrightCdricSimon,2009

miChar='A';

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

6.7.3.1

Pagina14/32

char

Eltipocarcter(char)puedecontenerun(ysoloun)carcterUnicode.ElUnicodepermiteutilizaruncarcterde
cualquieridioma.Elcarctersedeclaraentresimplecomillas:
6.7.4
6.7.4.1

Bolanos
boolean

Losbolanospuedentomarexclusivamenteelvalortrueofalse(verdaderoofalso).
Ejemplodedeclaracin:boolean

miBoolean=true;

6.8 Constantes
Lasconstantessondatoscuyovalornopuedecambiardurantelaejecucindelprograma.
Lasconstantesutilizanlosmismostiposquelasvariables,ysedeclarandelamismamaneraalaexceptionquese
ponefinalanteseltipodedato.
Lasintaxisbsicadedeclaracindevariablees:
final <tipo de dato> <nombre de variable>;
final int MI_CONSTANTE;

6.9 Operadores
Losoperadoresseutilizanparahaceroperacionessobrelasvariables.Permitencombinar,modificar,oevaluarlas
variables.
6.9.1

Principalesoperadoressobreenterosyreales

++

=
==
!=
<
<=
>=
>
+
*
/
%

Negacin(unitario),resta(binario)
Incremento
Decremento
Asignacin
Igualdad
Desigualdad
Menosque
Menosoigualque
Mayoroigualque
Mayorque
Suma
Multiplicacin
Divisin
Modulo

Losoperadoresdeincremento(++)ydecremento()sepuedenutilizarantesodespusdelavariable,pegadoaella.
Siseutilizanantes,lavariableseincrementaodecrementadirectamente.Siseutilizadespus,lavariablese
incrementaodecrementajustodespusdehabersidoutilizada.
Ejemplodedeclaracin:

int i = 0;
System.out.println(++i); // imprime 1
System.out.println(i); // imprime 1

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina15/32

System.out.println(i++);// imprime 1
System.out.println(i); // imprime 2
System.out.println(i++ +" y "+ --i ); // imprime 2 y 2

6.9.2

Prioridaddeoperadores

Comoenlamatemtica,enJavaexistenprioridadesentrelosoperadores.Losparntesistienenlamsgrande
prioridad,sepuedenutilizarparaforzarunordendeevaluacin,ascomoparafacilitarlalecturadelcdigo.
Prioridaddeslosoperadores:
1. ()[]
2. !++
3. new(tipo)
4. */%
5. +
6. >>=<=<instanceof
7. ==!=
8. &
9. |
10. &&
11. ||
12. ?:
13. =*=/=%=+==>>=>>>=<<=&=|=

6.10 Conversionesentretipos
Lasconversionespuedenserautomticasoexplicitas.
6.10.1

Conversinautomtica

Cuandoexpresionesutilizanvariostiposdedatosoperandoentreellos,Javaintentarealizarconversionesautomticas
detipos.Lasconversionesautomticassonposiblessolamentedeuntipohastaotraquetengaigualomsgrande
precisin.
Lasconversionesautomticassonposiblesenelsiguientesentido
char
byteshort

6.10.2

intlongfloatdouble

Conversinexplicita

Cuandoseprecisaunestrechamientodetipo,esnecesarioconvertirdemaneraexplicitalostiposdedatos.Sino,se
podrangenerarunerrordecompilacin,uobtenerunresultadocondemasiadaprecisin.
Lasconversionesexplicitasentreenterosyrealessehacenindicandoentipodeseadodelanteelnmeroaconvertir.
Cuidadoquecuandoelnumeroconvertidoesmsgrandequeeltamaoposibleparaeltipodeseado(porejemplo
cambiar123546atipobyte),elresultadopuedeserbienextrao...
Ejemplo:

float miFloat = 1.999f;


int miInt = (int) miFloat;

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina16/32

6.11 LaclaseMath
LaclaseMathdelJavacontienelamayoradelasoperacionesmatemticasquesehacensobreenterosoreales.Para
lalistacompletademtodos,verladocumentacinJava.
Incluyeentreotros:
Elvalorabsoluto
Mximoentre2exp
Nmeroaleatorio
Sinus
Lognatural
Elenteroigualosuperior
Elenteroigualoinferio

Math.abs(<exp>)
Math.max(<exp1>,<exp2>)
Math.random()
Math.sin(<exp>)
Math.log(<exp>)
Math.ceil(<exp>)
Math.floor(<exp>)

6.12 Comentarios
EnelcdigoJavasepuedenmetercomentarios.
Loscomentariosdeunasolalneasesgnalacon//.Loscomentariosdeunaovariaslneassesgnalacon/*alinicio,
y*/alfinal.
Ejemplos:
/* Este

es un comentario
de varias lneas */
int miNumero2;
int miNumero = 1; // Este es una muestra de comentario de una lnea

LoscomentariosdeunaovariaslneasquetienencomoobjetivodeparticiparenlacreacindeladocumentacinJava
(Javadoc)sesgnalacon/**alinicio,y*/alfinal.

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina17/32

7 Cadenasdecaracteresyfechas
7.1 Objetivodelcapitulo
Alfindeestecapitulo,elalumnosercapazdeutilizarymanejarcadenasdecaracteresyfechas.

7.2 Introduccin
EnJava,existenvariables(objetos)quepuedencontenercadenasdecaracteresofechas,quenosontiposprimitivosde
Java,sinoobjetosutilizadoscomotipo,yquetienensuspropiosmtodosparasermodificadas.

7.3 String
ElobjetomasutilizadoparacontenercadenasdecaractereseseltipoobjetoString.Estetipopermiteguardaruna
cadenadecaracteressinlimitacin,sinolalimitacindelamemoriadelacomputadora.
7.3.1

Declaracin

Lascadenasdecaracteressedeclarancomolasvariables,yelvalorsemencionaentredoblecuotas.
Ejemplo:String
7.3.2

miTexto = "Hola Nicaragua!";

Caracteresespeciales

Parainsertarciertoscaracteresespecialesadentrodeunacadenadecaracteres,hayquemencionarlosdetrsdeuna
contrabarra(\).
Paramencionarunadoblecomilla:\"
Paramencionarunatabulacin:\t
Paramencionarunanuevalnea:\n
Paramencionarunregresoalalnea:\r
ParamencionaruncarcterUnicode:\uxxxxadondexxxxeselvalorhexadecimaldelcarcter
O\xxxadondexxxeselvaloroctaldelcarcter(0a7)
7.3.3

Concatenacindecadenas

Paraconcatenardoscadenasdecaracteres,sepuedeutilizarelmtodoconcatoelsigno+.
Ejemplo:
String miTexto = "Hola!";
miTexto += "Una prueba.";

Hayquetenercuidadoconlasconcatenaciones,porqueconelobjetoString,cadaconcatenacincreaunnuevoobjeto,
loqueconsumememoria.SiUstednecesitahacermuchasconcatenaciones,utilizamejorlaclaseStringBuilder.
7.3.4

OtrosmtodosdeString

ExistenmuchosmtodosdelobjetoStringparahaceroperacionessobrecadenadecaracteres.Paralalistacompletade
mtodos,verladocumentacinJava.
Porejemplo:length(),

charAt(int <indice>),substring (int <inicio>,int <final>),...

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

7.3.5

Pagina18/32

ConversindeStringaenterosorealesycontrario

Paraconvertirunacadenadecaracteres(quecontienesolounnmero)aenterosorealesocontrario,hayqueutilizar
mtodosespeciales.
Ejemplos:

int miNumero = Integer.parseInt("1234");


float miFloat = Float.parseFloat("123.566");
String miConvertido = String.valueOf(miFloat);

7.4 Date
LaclaseDate delpaquetejava.util seutilizaparaguardarfechasyhoras.Comoelpaquete
java.utilnosecargapordefecto,hayqueimportarlo.Solotienedosconstructores:unosin
argumento,queasignalafechayhoraactual,yunoconunargumentolongquecontieneel
nmerodemilisegundosquehayqueincrementaralafechadel1/1/1970.
LaclaseDate tienemtodos,entreotrasparacambiarlafecha,extraerelda,mes,ao...
formatearlafechaoconvertirlaenString.Peromuchosdesusmtodosestndespreciadas,
ysetienequeutilizarlaclaseCalendar.Paralalistacompletademtodos,verla
documentacinJava.
ExistetambinunobjetoDate enelpaquetejava.sql queseutilizaparamanejarfechas
durantelasconexionesabasesdedatos.
Ejemplo:
import java.util.Date;
public class TestDate{
Date miFecha = new Date();
}

7.5 Calendar
LaclaseCalendar,ysusubclaseGregorianCalendar,permitemanejarfecharsegnelcalendarioGregoriano.
Conesteclasepodemosgradardatosdefechaymanejarlashaciendo,entreotros,sumasydiferenciasdefechas.
Ejemplo:
import java.util.*;
public class TestFecha {
public TestFecha() {
System.out.println(getCurrDate());
System.out.println(getTestDate());
}
public String getCurrDate() {
Calendar cal = new GregorianCalendar();
String day = "0" + cal.get(Calendar.DATE);
int pos = day.length();
day = day.substring(pos - 2, pos);
String month = "0" + (cal.get(Calendar.MONTH) + 1);
pos = month.length();
month = month.substring(pos - 2, pos);
String year = "" + cal.get(Calendar.YEAR);
String currdate = day + "/" + month + "/" + year;
return currdate;
}
public String getTestDate() {
Calendar cal = new GregorianCalendar();
cal.set(1996, 11, 1); // cuidado que el mes empieza con 0 y no 1 (0->11)
System.out.println(cal.get(Calendar.DATE)); // 1
System.out.println(cal.get(Calendar.MONTH)); // 11
System.out.println(cal.get(Calendar.YEAR)); // 1996

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina19/32

String day = "0" + cal.get(Calendar.DATE);


int pos = day.length();
day = day.substring(pos - 2, pos);
String month = "0" + (cal.get(Calendar.MONTH) + 1); // +1 para corregir el mes
pos = month.length();
month = month.substring(pos - 2, pos);
String year = "" + cal.get(Calendar.YEAR);
String currdate = day + "/" + month + "/" + year; // 01/12/1996
return currdate;

public static void main(String[] args) { // metodo principal


System.out.println(new GregorianCalendar().getTime());
new TestFecha();
}// fin de metodo Main

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina20/32

8 Arreglos
8.1 Objetivodelcapitulo
Alfindeestecapitulo,elalumnosercapazdeutilizarymanejarunacoleccindedatos.

8.2 Tiposdearreglosyuso
EnJavaexistenvariablesquepuedencontenerunacoleccindedatosdelmismotipo.
Losarreglosaunadimensincontienenunalistadevalores,unarreglobidimensionalcontendrunatabladedatos.
As,sepuedeguardarunatabladedatosenunsolovariable.
Losarreglospuedenserdetiposimplecomodeobjetos.
Sedeclarancon[]detrsdeltipoparaunadimensin,y[][]paradobledimensin.
Cuandosecreaunarreglo,suselementosestninicializadospordefectoaceroparaarreglosdeenterosyreales,una
cadenavacaparachar,falseparabolanos,ynullparalosobjetos.
Losndicesdeunarregloempiezancon0yseincrementanporunidad.
Unavezinicializado,eltamaodelarreglonopuedecambiarmas.
Ejemplosdedeclaracin:

String paginaList []= {"Formato A4", // arreglo de 4,


"Carta 8.5 x 11",
"Prescripcion US",
"Prescripcion BE"};

inicializado con valores

int miArregloInt [] = new int [9]; // arreglo de 9 lneas, inicializado con cero
int miArreglo2 [] [] = {{1,2,3},{2,4,6}}; // arreglo de 2 lneas y 3 columnas, inicializado con valores.

Ejemplosdeutilizacin:

miArregloInt [0]=5; // asigna el valor 5 al primer miembro del arreglo


int miNumero = miArregloInt [0]; // miNumero ser igual a 5
System.out.println(miArreglo2[0][0]); // imprime 1
System.out.println(miArreglo2[0][2]); // imprime 3
System.out.println(miArreglo2[1][2]); // imprime 6
System.out.println(miArreglo2[2][3]); // esta lnea genera un error java.lang.ArrayIndexOutOfBoundsException

8.3 publicstaticvoidmain(String[]args)
Elmtodopublic

static void main (String [] args)acceptacomoparametrodeentradaunarreglodeString.

Parapasarlosvaloresenparametro,semencionandespusdelnombredelaclase,separadosporespacios.Siunvalor
contieneespacios,hayqueponerlaentredoblecomillas.
Ejemplo:

public static void main(String[] args) { // metodo principal


System.out.println(args[0]); // imprime Uno
System.out.println(args[1]); // imprime y dos
}

java Test Uno "y dos"

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina21/32

9 Decisionesybucles
9.1 Objetivodelcapitulo
Alfindeestecapitulo,elalumnosercapazdecrearesquemadedecisionesensucdigo,ascomocrearymanejar
bucles.

9.2 if...else
Elifseutilizaparacrearesquemadedecisiones.Sepuedeutilizarconelelse,peroesfacultativo.
Elif,quesignificasipermiteprobarunaovariascondiciones.Elresultadodecadacondicinsiempreessiono.Las
condicionessiempreestnentreparntesis.
Despusdelifvienelainstruccinqueserrealizadaencasoqueelresultadodela(s)condicin(es)saleverdadero.
Elelse,quesepuedetraducirporsinosecumplo,lainstruccinqueserrealizadaencasoqueelresultadodela(s)
condicin(es)delifsalifalso.
Sihaymasqueunainstruccinqueejecutartraselifoelelse,hayqueutilizarunbloquedeinstrucciones,
conteniendolasinstruccionesentre{y}.
Ejemplo:
int licencia = 0;
if (licencia==1) System.out.println("!Yo tengo la licencia!);
else {System.out.println("!No tengo licencia!);
System.out.println("Pero la voy a comprar pronto...);
}

9.3 Comparacindeobjetos
Parahacercomparacionesentredosobjetos,essiempremasseguroutilizarenmtodoequals,porqueelusode==
harlacomparacinbasadaenlosobjetos,ynoensucontenido.
Ejemplo:
String miTexto = "Hola!";
if (miTexto.equals("Hola!")) System.out.println("OK");

9.4 Condicionesmltiples(ANDyOR)
Paramencionarcondicionesmltiplesseutilizanlossmbolos|y&.
ParaquecumpleconunaYotracondiciones,seutilizael&(significaY).
ParaquecumpleconunaUotracondiciones,seutilizael|(significaU).
Paraqueevalasolamentelascondicionesnecesarias(encasodeY,silaprimeranocumple,noevalalasotra,en
casodeU,silaprimeracumple,noevalualasotras),sedoblaelsino(||o&&).Paramejorrendimientosedobla
siempre.
Ejemplo:
int licencia = 0;
if (licencia > 10 || licencia == 5) System.out.println("!Yo tengo la licencia 5 o > 10!");
else if (licencia < 10 || licencia > 5) System.out.println("!Tengo licencia entre 5 y 10!");
else System.out.println("!Tengo licencia < 5 ");

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina22/32

9.5 switch
Elswitchseutilizaparacrearesquemadedecisiones.Elswitchpermitedetenervariasalternativas,encontradel
if...elsequesolotienedosalternativas.
Primerasedeclara,entreparntesis,cualvariablesevaaevaluar.Solochar,byte,shortointpedenserevaluados.
Siguiendo,paracadaalternativa,semencionalapalabracaseconlavalorcorrespondiendoalavalordelaalternativa,
yelcdigoquehayqueejecutar.Sinoseterminalaalternativaconlapalabrabreak,elcdigodelasalternativas
siguientesevanaejecutartambin,mismosielvalordelavariableevaluadanocorrespondealcase.
Porfin,lapalabradefaultseutilizaparamencionaraccionesarealizarencasoqueningunaalternativasali
verdadera.Comoparaelcase,deberaterminarconbreakparaquenoseejecutaraotrocdigosiguiendo.

Sihaymasqueunainstruccinqueejecutartraselcaseoeldefault,hayqueutilizarunbloquedeinstrucciones,
conteniendolasinstruccionesentre{y}.
Ejemplo:

int test=1;
switch (test) {
case 1 : System.out.println("Igual a
case 10 : System.out.println(" Igual
break;
case 20 : System.out.println(" Igual
default : System.out.println(" Igual

1");
a 10");
a 20");
a otro valor");

9.6 while
Elwhile...seutilizaparacrearbucles,esdecirrepetirunaaccinportantoquesecumpleaunacondicin.
Lacondicinquehayquecumplirsemencionadetrsdelapalabrawhile,entreparntesis.
Lasaccionesquehayqueejecutarsemencionandetrsdelwhile.Sihaymasqueunainstruccinqueejecutar,hayque
utilizarunbloquedeinstrucciones,conteniendolasinstruccionesentre{y}.

9.7 do...while
Eldo...whileseutilizaparacrearbucles,esdecirrepetirunaaccinportantoquesecumpleaunacondicin.
Lacondicinquehayquecumplirsemencionadetrsdelapalabrawhile,entreparntesis,yterminaconpuntocoma
';'.
Lasaccionesquehayqueejecutarsemencionandetrsdeldo.Sihaymasqueunainstruccinqueejecutar,hayque
utilizarunbloquedeinstrucciones,conteniendolasinstruccionesentre{y}.
Laclusuladosepuedemencionarantesdelaclusulawhile.Enestecaso,elcdigodelaclusuladoseejecutarauna
primeravezantesdeverificarlacondicindelwhile,yserepetirhastaquelacondicinseafalsa.
Ejemplo:
int miNumero = 1;
do {System.out.println("El nmero actual es "+ ++miNumero);
while (miNumero < 5);

9.8 for
Elforseutilizaparacrearbuclesunnmerofijodeveces.
CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina23/32

Lacondicinquehayquecumplirsemencionadetrsdelapalabrafor,entreparntesis,ytienetresdiferentepartes,
separadaspor;.Cadaparteesopcional,peroel;tienequesermencionadomismosilaparteestavaca.
Laprimerapartesirveadeclararunvariable(usualmenteunint)y/oasignarleunvalororiginal.
Lasegundapartecontienelacondicindeejecucin.Usualmentelavariableinicializada>o<queotrointovalorfija.
Laterceraparteseutilizaparamencionarelincrementoodecrementoeventual.
Lasaccionesquehayqueejecutarsemencionandetrsdelfor.Sihaymasqueunainstruccinqueejecutar,hayque
utilizarunbloquedeinstrucciones,conteniendolasinstruccionesentre{y}.
Ejemplo:
for (int i = 0; i < 3; i++) { System.out.println(i);}

Existeunfor'simplificado'pararecorerarreglos,quefuncionaas:
String a [] = {uno,dos,tres};
for (String s : a) { System.out.println(s);}

9.9 break
Lainstruccinbreakpermitedesalirdeunabucleodeabandonarlassentenciasdeejecucindeunswitch.
Ejemplo:

int ii = 5;
for (int i = 0; i < 10; i++) {
if (i>ii) break;
System.out.println(i);}

9.10 continue
Lainstruccincontinuesolosepuedeusarenbucles,ypermitedesaltardirectamentealabuclesiguiente,sinejecutar
elrestodelcdigodelabuclecorriente.
Ejemplo:
int ii = 5;
for (int i = 0; i < 10; i++) {
if (i==ii) continue;

System.out.println(i); }

9.11 Operadorternario
Otrooperadorcondicionaleseloperador"?:"(oternario).
Ejemplo:.Asignacindeunvalorpredeterminado
// Ejemplo de uso de: el Operador Ternario
int edad=5;
String tipo = ((edad<=18) ? "Joven : "Adulto);

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina24/32

10 Paquetes,clases,ymtodos
10.1 Objetivodelcapitulo
Alfindeestecapitulo,elalumnosercapazentenderelusoydecrearpaquetes,clases,constructores,ymtodos,yde
definirleslosderechosdeaccesonecesarios.

10.2 Paquetes
10.2.1

Uso

Lospaquetesseutilizanparareunirclasesquepertenecenaunamismaaplicacin,oquetienenalgunascaracterstica
juntas.
Porejemplo,sepuedecrearunpaqueteparalasclasesespecficasdeunaaplicacin,yotrospaquetesparaclases
generales,comotiles,conexinalabasededatos,etc...
Elnombredelpaquetetienequecorresponderconelnombredelacarpetaenlacuallaclasedelpaqueteesta
guardada.Unpaquetepuedecontenervariosniveles.Porejemplo,elpaqueteitc.nicaseencontrarabajolacapetaitc,
queseencontrarabajolacarpetanica.
Pordefecto,lasclasesdeunmismopaquetetienenaccesoatodaslasclasesdeestemismopaquete.Estederechode
accesopuedesermodificado,utilizandomodificadoresdeacceso,parapermitirelusodeunaclaseporclasesdeotros
paquetes,orestringirelusodeunaclase.Veremoslosmodificadoresdeaccesomsadelante.
Laprimerainstruccindeunarchivodeunaclasequepermaneceaunpaquetees:package

<nombre del paquete>;

Paracompilarunpaquete,hayqueestarenlaraizdelaaplicacin,ycompilarcon
javac nombre_del_paquete/NombreDeLaClase.java

Parallamaraunaclasedeunpaquetehayqueestarenlaraizdelaaplicacinyllamara
java nombre_del_paquete.NombreDeLaClase

1.1.1

Importacindepaquetes

Cuandoserequiereunobjetodeotropaquete,senecesitaponerelnombreenterodelpaquetedelanteelnombredel
objeto,separadocon..
Porejemplo,parallamaralobjetoMitestdelpaquetetest :test.Mitest
Paranotenerquemarcarsiempreelnombredelpaquetedelanteelobjeto,hayqueimportarelpaquete.
Paraimportarunpaquete,hayquemencionarlapalabraimportyelnombredelpaquetemas;.Laimportacinsolose
puedehacerentreladeclaracindelpaquetedelcdigo(siperteneceaunpaquete)yladeclaracindelaclase
principaldelcdigo.
Ejemplo:

package dbaccess;
import java.sql.*;
public class Readdb {...}

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina25/32

10.3 Clases
10.3.1

Declaracinyuso

LaclaseeslaunidadprincipaldelJava.Unaclasesirveparadefinirunobjeto,ycontienesusconstructoresysus
mtodos.
Sonlosconstructoresymtodosquepermitirninicializarymanejarelobjeto.
Laclasepuedetenervariableoconstantesquesernaccesiblesportodoslosconstructoresymtodosdelaclase.
Unaclasetienederechosdeaccesoquesepuedenmodificar.Losderechosdeaccesosestarnexplicadosmasadelante
enestecapitulo.
Unaclasetienequeserguardadasbajounarchivoquetengaelmismonombrequelaclase.
Ejemplo:

class Test {
private int miNumero; //variable de clase
public Test (){ // constructor
miNumero=1;
}
public void mtodo_1 (){ // metodo
miNumero+=10;
...
}
}

10.4 Constructores
Elconstructoreslapartedelaclasequepermiteinicializarlaclase.Pordefectounaclasetieneunconstructorsin
argumentoysinaccin.
Elconstructorsepuededefinirysobredefinirparaejecutarciertasaccionesy/oparaaceptarparmetros(argumentos)
alinicializarlaclase.
Elconstructorsedefinecomounmtodoquetieneelmismonombrequelaclase,yquenopuederegresarvaloresni
extenderotromtodo.
Unamismaclasepuedetenervariosconstructores.
Ejemplo:
class Test {
int miCampo; // variable de clase
public Test (int miNumero){ // mi constructor
miCampo = miNumero; // variable de clase inicializada
}
}

10.5 Mtodos
10.5.1

Declaracinyuso

Unmtodoesunacaractersticadeunaclase.Unmtodopermiteejecutaraccionessobreelobjeto(class).
Sonlosmtodosquehacentodaslasaccionesdeunaaplicacin,asquecontienenlamayoradelcdigo.
CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina26/32

Unmtodotiene,comolaclase,derechodeaccesoquesepuedenmodificar,ytambinsenecesitaindicarsielmtodo
regresaalgunavalorono,ycualeseltipodevaloreregresada.
Losmtodospuedenaceptarcero,uno,ovariosparmetrosdeentrada,ypuedensersobredefinida,esdecirtenerun
mismonombrecondiferentesnmerosotiposdeparmetros.
Elmtodomain(public static void main(String[] args))esunmtodoespecialqueestallamadoporlaJVMaliniciar
unaaplicacin.Elmtodomainpuedeaceptarcero,uno,ovariosparmetros,quesoncadenasdecaracteres.
Ejemplo:

class Test {
public int calculo (int nmeroDado){ // metodo de calculo
return nmeroDado+5;
}// fin de metodo
public static void main(String[] args) { // metodo principal
Test miTest = new Test();
int resultado = miTest.calculo(12);
System.out.println(resultado);
}// fin de metodo Main
} // fin de clase

10.6 Modificadoresdeacceso
10.6.1

Accesopordefecto

Pordefecto,unaclase,mtodo,odatoesvisibleenestepaquete.
10.6.2

private

Elmtodo,odatoesvisiblesoloenestaclase.
10.6.3

public

Laclase,mtodo,odatoesvisibleentodoeluniverso.
10.6.4

protected

Laclase,mtodo,odatoesvisibleenestepaqueteylassubclasesdeestaclaseencualquierpaquete.

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina27/32

11 Polimorfismo,encapsulamiento,y
herencia
11.1 Objetivodelcapitulo
Alfindeestecapitulo,elalumnosercapazdeentender,identificarsituacionesquenecesitan,yutilizarel
polimorfismo,elencapsulamiento,ylaherencia.

11.2 Polimorfismo
ElpolimorfismoeslacapacidadquetieneJavadediferenciarmtodosquetieneunmismonombregraciasasus
parmetros,odeinicializarunaclaseutilizandoenconstructorcorrespondientealosparmetrospasados.
Ejemplo:
public class TestPoli {
static int numeroGeneral;
public TestPoli() {
numeroGeneral=5;
} // fin constructor
public TestPoli(int inicializaNo) {
numeroGeneral=inicializaNo;
} // fin constructor
public static void main(String[] args) { // metodo principal
TestPoli miTest= new TestPoli(Integer.parseInt(args[0]));
System.out.println("Constructon con (int). numeroGeneral = "+numeroGeneral);
TestPoli miTest2= new TestPoli();
System.out.println("Constructon con (int). numeroGeneral = "+numeroGeneral);
} // fin de clase

}// fin de metodo main

11.3 Encapsulamiento
Elencapsulamientopermitedeesconderlaestructurainternadeunobjeto,ysoloensearlonecesario.
Elencapsulamientosehaceutilizandomodificadoresdeacceso,paquetes,clasesinternas,claseabstractas,y/o
interfaces.
11.3.1

Clasesinternas

Unaclaseinternaesunaclasedefinidadentrodeotraclase,llamadaclasecontenedora.
11.3.1.1 Claseseinerfacesinternasstatic
Seconocentambincomoclasesanidadas(nestedclases).Lasclaseseinterfaces
internasstaticslopuedensercreadasdentrodeotraclasealmximonivel,esdecirdirectamenteenelbloquede
definicindelaclasecontenedoraynoenunbloquemsinterno.Estetipodeclasesinternassedefinenutilizandola
palabrastatic.Todaslasinterfacesinternassonimplcitamentestatic.
Enciertaforma,lasclasesinternasstaticsecomportancomoclasesnormalesenunpackage.Parautilizarsunombre
desdefueradelaclasecontenedorahayqueprecederloporelnombredelaclasecontenedorayeloperadorpunto(.)
Estetipoderelacinentreclasessepuedeutilizarparaagruparvariasclasesdentrodeunaclasemsgeneral.

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina28/32

11.3.1.2 Clasesinternasmiembro
Lasclasesinternasmiembroosimplementeclasesinternas,sonclasesdefinidasalmximoniveldelaclase
contenedora(directamenteenelbloquedediminucindedichaclase),sinlapalabrastatic.Sesuelenllamarclases
internasmiembroosimplementeclasesinternas.Noexisteninterfacesinternasdeestetipo.
Otrasclasesdiferentesdelasclasescontenedoraeinternapuedenutilizardirectamentelosobjetosdelaclaseinterna,
sincualificarlosconelobjetooelnombredelaclasecontenedora.
Lasclasesinternaspuedentambinserprivateyprotected(lasclasesnormalesslopuedenserpublicypackage).Esto
permitenuevasposibilidadesdeencapsulacin.
Losmtodosdelasclasesinternasaccedendirectamenteatodoslosmiembros,inclusoprivate,delaclasecontenedora.
Tambinlaclasecontenedorapuedeaccedersidisponedeunareferenciaatodaslasvariablesmiembro(incluso
private)desusclasesinternas.
Unaclaseinternapuedeaccedertambinalosmiembros(inclusoprivate)deotrasclasesinternasdefinidasenla
mismaclasecontenedora.
11.3.1.3 Clasesinternaslocales
Lasclasesinternaslocalesosimplementeclaseslocalesnosedeclarandentrodeotraclasealmximonivel,sino
dentrodeunbloquedecdigo.
Lasprincipalescaractersticasdelasclaseslocalessonlassiguientes:
1.Comolasvariableslocales,lasclaseslocalesslosonvisiblesyutilizablesenelbloquedecdigoenelqueestn
definidas.Losobjetosdelaclaselocaldebensercreadosenelmismobloqueenquedichaclasehasidodefinida.De
estaformasepuedeacercarladefinicinalusodelaclase.
2.Lasclasesinternaslocalestienenaccesoatodaslasvariablesmiembroymtodosdelaclasecontenedora.Pueden
vertambinlosmiembrosheredados,tantoporlaclaseinternalocalcomoporlaclasecontenedora.
3.Lasclaseslocalespuedenutilizarlasvariableslocalesyargumentosdemtodosvisiblesenesebloquedecdigo,
peroslosisonfinal5(enrealidadlaclaselocaltrabajaconsuscopiasdelasvariableslocalesyporesoseexigeque
seanfinalynopuedancambiar).
4.Unobjetodeunaclaseinternalocalslopuedeexistirenrelacinconunobjetodelaclasecontenedora,quedebe
existirpreviamente.
5.Lapalabrathis sepuedeutilizarenlamismaformaqueenlasclasesinternasmiembro,peronolaspalabrasnewy
super.
Restriccionesenelusodelasclasesinternaslocales:
1.Nopuedentenerelmismonombrequeningunadesusclasescontenedoras.
2.Nopuedendefinirvariables,mtodosyclasesstatic.
3.Nopuedenserdeclaradaspublic,protected,privateopackage,puessuvisibilidadessiempreladelasvariables
locales,esdecir,ladelbloqueenquehansidodefinidas.
LasclasesinternaslocalesseutilizanparadefinirclasesAdapterenelAWT.
11.3.1.4 Clasesannimas
Lasclasesannimassonmuysimilaresalasclasesinternaslocales,perosinnombre.Enlasclasesinternaslocales
primerosedefinelaclaseyluegosecreanunoomsobjetos.Enlasclasesannimasseunenestosdospasos:Comola
clasenotienenombreslosepuedecrearunnicoobjeto,yaquelasclasesannimasnopuedendefinirconstructores.
LasclasesannimasseutilizanconmuchafrecuenciaenelAWTparadefinirclasesyobjetosquegestionenloseventos
delosdistintoscomponentesdelainterfacedeusuario.Nohayinterfacesannimas.

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

11.3.2

Pagina29/32

Clasesabstractas

Unaclaseabstractaesunaclasequecontieneunaomsmtodosabstractas,loscualesnosonimplementados.Una
claseabstractanosepuedeinstanciar.
Lasclasesabstractastienenqueserimplementadasutilizandolaherencia.Ellassirvendesuperclasealasclases(o
interfaces)concretos.Lasclasesconcretassobredefinelosmetodos,implementndolos.
11.3.3

Interfaces

Unainterfazesunaclasedelascualestodoslosmtodossonabstractos.
Pordefecto,todoslosmiembrosdeunainterfazsonpblicos,abstractos,staticyfinal.
Comolasclasesabstractas,lasinterfacestienequeserimplementadasutilizandolaherencia.

11.4 Herencia
Lasclasespuedentenerherenciadeotraclase,loquepermitederecuperarciertascaractersticas(mtodosydatos)de
unobjeto,ymodificaroagregarotras.Losconstructoresnodeheredenydebenserdefinidosdenuevoenlaclase,pero
puedenllamaralconstructordelaclasemadreconlapalabra'super'.Pordefecto,elconstructorllamaalconstructor
sinargumentodelaclasemadre,amenosquesellamaaotroconstructorexplicitamente.
Entonces:
Cuandonotengoconstructordelaclasehijadefinido,elconstructorsinargumentodelaclasemadreesta
llamadoenprimerlugar,siexiste(sino,errordecompilacion).
Cuandounconstructordelaclasehijanollamaaningunconstructordelaclasemadre,elconstructorsin
argumentodelaclasemadreestallamadoenprimerlugar,siexiste.
Cuandollamodeunconstructordelaclasehijahaciaunconstructorotroqueelsinargumentodelaclase
madre,elconstructorsinargumentodelaclasemadrenoestallamado
Assepuedecrearsubclasesqueextiendenlaclasedebase.
LaherenciaseutilizamuchoenJava,yespecialmenteenelweb(servlets)yelGUI(AWT,Swing).
LaclasedebasepuedeserunaclasefundadoradeJava(JavaFoundationClass)ounaclasepersonal.
Ejemplo:

package test;
public class TestHerencia {
int numeroGeneral;
TestHerencia () {numeroGeneral = 5;}
public void adjunta_100() {numeroGeneral += 100; }
} // fin de clase TestHerencia
package test;
public class TestHerenciaExt extends TestHerencia{
public TestHerenciaExt () {super();}
public void adjunta_50() {numeroGeneral += 50;
}
public static void main(String[] args) { // metodo principal
TestHerenciaExt miTest = new TestHerenciaExt ();
System.out.println("Valor inicial de numeroGeneral = " +
miTest.numeroGeneral);
miTest.adjunta_100();
System.out.println("Valor de numeroGeneral = " +
miTest.numeroGeneral);
miTest.adjunta_50();
System.out.println("Valor de numeroGeneral = " +
miTest.numeroGeneral);
} // fin de metodo main
}

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina30/32

12 Tratamientodeexcepciones
ExistentrescategorasdeerroresenJava.Loserroresdecompilacin,loserroresdeejecucin,yloserroresdelgica.
Loserroresdeejecucin

12.1 Objetivodelcapitulo
Alfindeestecapitulo,elalumnosercapazidentificarlostiposdeerroresquesepuedenencontrarenuncdigoen
Java,ytratarlosconxito.

12.2 Erroresdecompilacin
Loserroresdecompilacinsonlaserroresdesintaxis.Alcompilarelcdigo,Javadetectaloserroresquenorespetanla
sintaxisdelJava,ascomoerroresdeconversindetipos,usodevariablesnodeclaradas,etc...
Estaserroresnopermitenquesecrearaelarchivo.class,elcdigocompilado,porqueestecdigonuncapodra
funcionar.

12.3 Erroresdelgica
Loserroresdelgicasonerroresdebidoaundiseoincorrectodelcdigo.Porejemplo,unbuclequenuncatermina,
unafaltadeortografaenuntexto,unaformuladeclculoequivocada,...

12.4 Erroresdeejecucin
LoserroresdeejecucinsonexcepcionesqueJavanopudodetectaralcompilarelcdigo.Porejemplo,unnmero
divididoporcero,ollamaraunabasededatosquenoexiste,etc...
Existendosclasesdeexcepciones:laclaseErrorylaclaseException.
LasexcepcionesdelaclaseErrorabarcanfallosgravesqueelprogramanovaapoderrecuperary,portanto,no
puedensercaptadas.
LasexcepcionesdelaclaseExceptionsonexcepcionesqueJavapuedecapturar.Existenvariassubclases,comoRuntime
Exception, IOException, InterruptedException,...
LasexcepcionesdelaclaseExcepcionpuedenseratrapadaadentrodelcdigo,paratomaraccincorrectivayasevitar
quelaerrorseafatalparalaaplicacin.Parapoderatraparunerror,hayqueutilizarunbloquetryenconjuntocon
unoovariosbloquescatchy/ounbloquefinally.
12.4.1

throws

Todosloserroresquesepuedenoriginarenunmtodo,exceptoloserroresdeltipoErroryRuntimeExceptiontienenque
sercapturadasodeclaradaenunaclusulathrowsaldeclararelmtodo.
Todaslaserrores,afueradelasdetipoRuntimeErrortienenquesercapturadosenelcdigo,odescartadasutilizando
throws.
Laclusulathrowspermitedescartalaserrores,esdecirnocapturarlas.EsteeselcomportamientopordefectodeJava,
peroencasoqueJavaesperaqueunaerrorseaatrapadademaneraexplicita(porejemplocuandoseusaelSQL),la
clusulathrowspermiteignorarlaerrorycompilarelcdigo.

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina31/32

Ejemplo:

public Readdb() throws Exception {


Class.forName("org.firebirdsql.jdbc.FBDriver");
...
}

12.4.2

try

Elcdigodeejecucinenelcualsepodraproducirunaerrordeejecucinseponeenunbloquetry.Esteeselcdigode
ejecucinnormal,encasoquenosucedeerrores.
Unbloquetrynuncapuedesalirsolo.Siempretienequeseacompaadodeunbloquecatchy/ofinally,mismosiel
bloquefinallyestavaco.
Ejemplo:
try

12.4.3

{
.....
}

catch

Elbloquecatchpermiteatraparerroresquepodransucederenelbloquepreviotry.
Unbloquetrypuedetenervariosbloquecatchparaatraparvariaserrores.Enestecaso,laserroresmasespecifica
tienenqueestarmencionadasenprimerlugar.Laserroresgeneralesenultimolugar.
Ejemplo:

catch (ArithmeticException e){


...
}
catch (Exception e){
...
}

12.4.4

finally

Elbloquefinallyseutilizaparacolocarinstruccionesqueelcdigotendrquerealizardespusdeltryyelcatch.No
importasiocurriexcepcinono,elbloquefinallysiempresevaarealizar(conexcepcionescuandosetrabajacon
hilosdeejecucionesydaemon).
Ejemplo:

int miResultado = 0;
try {
miResultado = 12/0;
}
catch (ArithmeticException e){
System.out.println(e);
}
catch (Exception e){
System.out.println("Otro error");
}
finally {
miResultado+=1;
System.out.println(miResultado);
}

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida

CursodeprogramacinenJavaNivelbsico

Pagina32/32

13 Ejercicios
1)Crear,compilar,yejecutarla'primeraaplicacin
2)Declararvariabledelosdiferentetipo,asignarlesvaloreimprimirelvalor.
3)Declararunaconstanteeimprimirelvalor.Probardecambiarsuvalorluegoyverqueesloquepasa.
4)Declaraunentero,incrementarlo,decrementarlo,haceroperacionesconel.
5)Probarlaprioridaddeoperadores
6)Probarlaconversinimplcitayexplicita.
7)Declararunfloatconvalor=10152466.25.Declaraunbytequeesiguala5+elfloat.
8)ProbarmtodosdelobjetoMathyconsultarladocumentacindelobjeto.
9)Adjuntarcomentariodeunaydevariaslneasunsucdigo.
10)Imprimirlafechayhoradelsistema.
11)Imprimirelnumerodesegundasdelahoracorrientedelsistema.
12)Crearunarregloconteniendolosnumerosde1a10,eimprimirlosnmeros5y10utilizandoelarreglo.
13)CrearunarreglodeStringconnombre,apellido,yfechadenacimientode3empleados.Imprimirlosnombresy
fechadenacimientodeltercerempleado.
14)Declararuneenteroyasignarleunvalor.Sielvalor<5imprimir"Pequeo",sinoimprimir"Grande".
15)Declararuneenteroyasignarleunvalor.Sielvalor=1imprimir"no",=2imprimir"Dos",=3imprimir"3",sino
imprimir"Niuno,nidos,nitres".
16)Declararunentero=0.Mientraselentero<5,imprimirsuvaloryincrementarlodeuno.
17)Declararunentero=10.Mientraselentero>5,imprimirsuvalorydecrementarlodeuno,peroimprimeporlo
menosunavezsuvalor.
18)Crearunabuclequeseejecuta10vecesutilizandounenteroquevade10a19incrementndose.Imprimirencada
bucleelvalordelentero,menoscuandoesiguala15.
19)CrearunobjetoAutoconatributoprivadosdemarca,modelo,ycolor.Crearlosmtodosparacambiaryleerlos
valoresdelosatributos.CreartresinstanciasdeAuto.Cambiarlessusatributosyimprimirlos.
20)Crearunpaquete'personal'quecontiene:
o Unaclase'Persona',convariablesprivadasparacontenerelnombre,apellido,sexo,fechade
nacimiento,ymetodosparaasignarorecuperarelvalordelasvariables,asicomoparaimprimirlos
valoresconformalidad.
- Unaclase'Empleado',queextiende'Persona',yqueleadjuntavariablesprivadas:funccion,salario,si
tianecontratotemporalono,ymetodosparaasignarorecuperarelvalordelasvariables,asicomo
paraimprimirtodaslosvaloresconformalidad.
Crearunpaquete'Empresa'quecontiene:
- Unaclase'main'quevaacreartresempleados,yimprimirsusdatos.
21)CrearunaclasePruebaconmtodomainquedeclaraunenteroigualacincodividido
porcero(5/0).Ejecutarlayatraparlaerror.

CopyrightCdricSimon,2009

Versin2.0

www.detodoprogramacion.com

Reproduccinprohibida