Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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:
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
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(),
CopyrightCdricSimon,2009
Versin2.0
www.detodoprogramacion.com
Reproduccinprohibida
CursodeprogramacinenJavaNivelbsico
7.3.5
Pagina18/32
ConversindeStringaenterosorealesycontrario
Paraconvertirunacadenadecaracteres(quecontienesolounnmero)aenterosorealesocontrario,hayqueutilizar
mtodosespeciales.
Ejemplos:
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
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:
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:
8.3 publicstaticvoidmain(String[]args)
Elmtodopublic
Parapasarlosvaloresenparametro,semencionandespusdelnombredelaclase,separadosporespacios.Siunvalor
contieneespacios,hayqueponerlaentredoblecomillas.
Ejemplo:
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
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
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:
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:
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