AdrianNicolsMalaverBarrera 1
3.ElementosformalesdellenguajeJava(I)
EnestedocumentopodrsencontrarinformacinrelacionadaconlasintaxisgeneralnecesariaparalaconstruccindeprogramasenJavabasadosenasignaciones.
Notacin
Entodoslosdocumentosdesintaxisseusarunanotacinsencillaqueusteddebeconocerparaentenderrpidamentelaestructuradeloselementosdescritos.
Elementosobligatorios:sonelementosquedebenserespecificadosparaconstruirunaestructura.Serepresentanusando
Elementosopcionales:sonelementosqueesposibledefinir,peronosondeusoobligatorio.Serepresentanusando(y)
Usodefuentesdetexto:alusaresta fuente,nosreferimosaque,paraqueelprocesodecompilacinseaexitoso,eltextosedebeescribirexactamenteigualacomosepresenta.Conesta fuenteescribiremoselcdigoenJava.
Aclaracinimportante:Javaesunlenguajesensiblealusodemaysculasyminsculas,porlotantoFloatesdiferenteafloat.Muchasvecescomoenesteejemplo,lasdospalabrastienenusosyunaconnotacindistinta.Poreso,esimportanteusarcadaelementodellenguajetalycomoesdefinidoenestedocumento.
3.1.Tiposdedatos
EnJavaexistentiposdedatosbsicosorientadosalaconstruccindeexpresionesquenossirvenparahallarelresultadodeoperaciones.Estostiposdedatossebasanenlostiposdefinidosparalasexpresionesqueconocemos(Enteros,Realesetc)ysediferenciandeacuerdoconsuusoysuprecisinoelrangodevaloresquepermitenalmacenar.
POLITCNICO GRANCOLOMBIANO EN ALIANZA CON WHITNEY INTERNATIONAL UNIVERSITY SYSTEM
AdrianNicolsMalaverBarrera 2
Tipodedato TipoenJava Rangodevalores Usodememoria
byte De128(27)a127(271) 8bitsshort De32768(215)a32767(2151) 16bitsint De2147483648(231)a2147483647(2311) 32bitsEntero
long De9223372036854775808(263)a
9223372036854775807(2631)64bits
float Elnmeromspequeoquesepuede
representares1.40129846432481707e45.Elmsgrandees3.40282346638528860e+38
32bits
Real
double Elnmeromspequeoquesepuederepresentares4.94065645841246544e324.El
msgrandees1.79769313486231570e+308.64bits
Booleano boolean false y true
Carcter char De0a65535,dondecadavalorrepresentauncarcterdetextodeacuerdoconlacodificacin
usada.16bits
Tabla1.TiposdedatosbsicosenJava
3.2. Definicindevariables
Deacuerdoconlanecesidad,esposibledefinirvariablesquealmacenarnelresultadodeoperaciones,parmetrosyotrosvaloresqueserequieranparalasolucinalgortmicadeproblemas.Lasintaxiseslasiguiente:
(=);
Porejemplo:float f; int i; int y, z, t, w;
Nombresdevariables:losnombressonunasecuenciadecaracteresdetextoquepuedencomenzarconletras,conelsigno$oconelsigno_.Haypalabrasquenopuedenusarseparadefinirnombresdevariables,dadoquesonpalabrasqueusaellenguajeJavapara
AdrianNicolsMalaverBarrera 3
definirsuspropiasestructuras.Estaspalabrassonllamadaspalabrasreservadasysonlassiguientes:
abstract continue for new switch assert default goto package synchronized boolean do if private this break double implements protected throw byte else import public throws case enum instanceof return transient catch extends int short try char final interface static void class finally long strictfp volatile const float native super while
Valorinicial:Aldefinirunavariableesposibleasignarleunvalorinicial,deacuerdoconeltipodedato.Notaimportante:Lasvariablesdefinidasdentrodemtodos,enestecaso,dentrodelmtodomain,enelquedefinimoslalgicadelosprogramas,requierendeunvalorinicial,yaqueJavanolesasignauno.
Datosenteros:Valoresnumricosenterospositivosonegativos.Pordefectoestnenbasedecimal.Paradefinirvaloresenbaseoctalseanteponeun0alvalor.Paradefinirvaloresenbasehexadecimalseantepone0x.
int x = 12; long personas = 94674242; byte dato = -123; int h = 0x19fe; //6654 en base hexadecimal
Datosreales:valoresnumricosrealespositivosynegativos.Lapartedecimalse
separadelaenteraconpunto..Paradefinirvaloresdetipoflotanteesnecesariocolocarfalfinaldelnmero.Esposibleusarnotacincientfica.Porejemplo,elnmero4326.783puedeserescritocomo4.326783x103.EnJava:4.326783e3;
float valor = 1.452f; double dato = 1.45e-6; double numeroGrande = 9.87e230;
Datosbooleanos:falseotrue.boolean llueve = true; boolean cieloRojo = false; double resultado = true;
Caracteresdetexto:sedefinenentrecomillassencillas('').Esposible,adems,usarelcdigounicodeespecfico:\u00F1esiguala.
AdrianNicolsMalaverBarrera 4
Unicodeesunestndarinternacionalqueasignaunvalornumricoacadaunodelosposiblessmbolosquepodemosrepresentar;nosoloenespaol,sinoenmuchosotrosidiomas.
char letra = 'A'; char arroba = '\u0041'; char otraLetra = 65;
Enestecaso,sepresentantresformasposiblesdehacerreferenciaalsmbolo'A'.
Cadenasdetexto:sedefinenentrecomillasdobles("").Lasutilizaremosinicialmenteparamostrarinformacinalusuariodenuestrasaplicaciones.
String palabra = Hola; String otraPalabra = Hola mundo;
3.3 Asignaciones
Paraasignarunavariable,seusaeloperadordeasignacin'='deformasimilaralaasignacindevalorinicial.
=;
SiemprequeescribamosasignacionesenellenguajeJava,usaremospuntoycoma(;)paradefinirsufinalizacin.Nosoloaldefinirasignaciones,sinotambinaldefinirvariablesohacerllamadoamtodosespecficos.
Porejemplo:
f = 1.45f; i = 23; letra = 'W';
Lasreglasparalosvaloresusadossonlasmismasqueparalosvaloresiniciales.Lasvariablesdebenhabersidodefinidaspreviamente.
3.4 Expresiones
LaescrituradelasexpresionesenJavasiguelasmismasreglasdefinidasparalasexpresionesenpseudocdigo.Acontinuacinserelacionanlosoperadoresprincipalesqueusaremosalolargodelcurso.Unalistamsdetalladapuedeencontrarseaquhttp://java.sun.com/docs/books/tutorial/java/nutsandbolts/operators.html.Losoperadoressepresentanenordendeprioridad(delmsimportantealmenosimportanteenelordendeevaluacin).
AdrianNicolsMalaverBarrera 5
Operador Descripcin
Operadoresunitariosdeincrementopostfijos(x++, x--)
Incrementan(++)odisminuyen(--)elvalordeunavariabledespusdelaevaluacindelaexpresinqueloscontiene.Porejemplo: 1 int x = 10, y; 2 y = 15 + x++; Lavariablexvaleinicialmente10.Elresultadodelalnea2es25yluegosehaceelincremento.Estosignificaqueenlaslneassiguientes,xvale16.
Operadoresunitariosdeincrementoinfijos(x++, x--)
Cumplenlamismafuncinquelosanteriores,conlaexcepcindequeprimeromodificanelvalorantesdelclculodelaexpresincorrespondiente.Paraelejemploanterior,elvaloralmacenadoenlavariableysera26yno25.
Operadoresmultiplicativos(*, /, %)
Operadoresbinariosdemultiplicacin,divisinymdulo.EsteltimofuncionademaneraequivalentealoperadorMODusadopreviamenteenexpresiones.
Operadoresaditivos(+,-)
Operadoresbinariosderestaysumausadosentiposdedatosnumricos.
Operadoresrelacionales(,=)
Operadoresaplicadosatiposdedatosquedefinenrelacionesdeorden,comotiposnumricosycaracteresdetexto.Elresultadodeestosoperadoresesdetipobooleano.
Operadoresdeigualdad(==,!=)
Operadoresdeequivalencia.Elresultadodeestosoperadoresesdetipobooleano.
OperadorlgicoY(&&)
Permiterealizarlaoperacinlgica'Y'vistaenexpresionesbooleanas.Sepuedeaplicaraoperandosdetipobooleano.
OperadorlgicoO(||)
Permiterealizarlaoperacinlgica'O'vistaenexpresionesbooleanas.Sepuedeaplicaraoperandosdetipobooleano
Operadoresdeasignacin(=,+=,-=,*=,/=)
Permitenrealizaroperacionesaritmticasyasignacinalmismotiempo.Porejemplo: 1 int x = 10; 2 x += 15; 3 x *= 3; Lalnea2esequivalenteax = x + 15; Lalnea3esequivalenteax = x * 3;
4 Referenciadeoperacionesdelecturayescrituraporconsola
AdrianNicolsMalaverBarrera 6
Conelobjetivodecapturarinformacindeunusuarioodepresentarinformacinenpantalla,sehandefinidooperacionesenJavaquepermitenrealizarestatareaenformasencilla.
Presentacindeinformacinenlaconsoladetexto
Cuandoseanecesariopresentarelresultadodeunaoperacinocualquierinformacinalusuario,usaremoslosmtodosprintyprintln quepertenecenalafuncionalidadbsicaqueofreceJava.
Porejemplo:
1 int x = 10; 2 float f = 1.45f; 3 long l = 34543566; 4 String s = Hola; 5 System.out.println(f); 6 System.out.println(l); 7 System.out.println(x); 8 System.out.println(s); 9 System.out.println(El resultado es: + f); Alejecutarestecdigo,lasalidaenlaconsoladetextosera:
1.45 34543566 10 Hola El resultado es: 1.45 Laslneas5,6,7y8muestranelcontenidodelasvariablesenpantalla.Tambinesposiblemostrarcadenasdetextoqueacompaenalcontenidodelasvariables,comosucedeenlalnea9.
Cuandoseusaelmtodoprintenvezdeprintln,nosebajalalneadespusdeescribircadavariable.Siseusaraprintlasalidasera:
1.453454356610HolaEl resultado es: 1.45 LecturadeinformacindeconsolaCuandoseanecesariocapturarinformacindelusuario,porejemploparaestablecervaloresparalasvariablesdeentradadeunalgoritmo,debemoshacerlosiguiente:1. DefinirunobjetoScanner,quecuentaconmtodosparaleerinformacindeteclado:
Scanner scanner = new Scanner(System.in);2. Definiryasignarvaloresparalasvariablesqueseannecesarias,usandolosmtodos
adecuadosdelobjetodelaclaseScanner:n = scanner.nextInt(); //Para leer valores enteros f = scanner.nextFloat(); //Para leer valores de tipo float d = scanner.nextDouble(); //Para leer valores de tipo double
AdrianNicolsMalaverBarrera 7
b = scanner.nextBoolean(); //Para leer valores de tipo boolean Despusdelaejecucindecadalnea,quedaralmacenadoelvalorledoencadavariable.Paramsinformacin,puedeconsultarseladocumentacindelaclasescannerdeJava:http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html.
5 Invocacindemtodos
Esposibleconstruirexpresionesqueinvolucrenlarealizacindetareascomunescomoracescuadradas,valoresabsolutos,entreotras.Loharemosdelasiguienteforma:
=();
Esnecesarioidentificareltipodevariablequedeberaserusado,deacuerdoconeltipodedatoqueretornaunmtodoparticular.Deigualmanera,haymtodosquenotienenvalorderetornoy,porlotanto,nopodranserusadosparaasignarvaloresavariables.
Losmtodosrelacionadosconfuncionesmatemticas,puedenserencontradosenlaclaseMathyseusandeacuerdoconlosparmetrosquerequieren1.Porejemplo,siserequierecalcularlarazcuadradade95738,loqueseharaeslosiguiente:double x = 0.0f; x = Math.sqrt(95738);
Siempre,alusarmtodoscomoeste,esrecomendableleerlareferenciasobreeluso,parmetrosyvalorderetornoparaestarsegurosdequeeselmtodomsadecuado.
Esposibleusarestetipodemtodosenexpresionesquepermitanrealizaroperacionesmscomplejas:
d = x*x + Math.sqrt(y * y) + 98 * z;
6 Comentarios
EnJava,comoenlamayoradelenguajesdeprogramacin,esposiblehacercomentariosparaexplicarseccionesdecdigo,oagregaranotacionesparafuturasmodificaciones.
Loscomentariospuedenhacerseparaunasolalneaoparaunbloquedetexto.
Comentariosdeunalnea:Sehacenusando"//".Todoeltextosubsiguientehastaelfinaldelalneanosetieneencuentaalcompilarelcdigopresenteenelarchivo.
1ParainformacinsobrelosmtodosdefinidosenlaclaseMath:http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Math.html[Recuperado:15deEnerode2010]
AdrianNicolsMalaverBarrera 8
int x = 8; //x almacenar el nmero de personas que inicialmente es 8 float t = 3.45; //La temperatura t ser inicialmente 3.45C //x = 10;
Comentariosdebloque:Sehacenusando"/*"y"*/".Cualquiertextoencerradoentreestosdoselementosnosertenidoencuentaalcompilarelcdigopresenteenelarchivo.
/*El propsito del siguiente bloque de cdigo es calcular la ruta ptima para llegar del punto (x,y) al punto (x1,y1) en coordenadas planas*/ int x = 10, y = 30; int x1 = 100, y1 = 54; . . . /* Cdigo generado por: nmalaver Fecha: 30-02-08 */ . . . Usandocomentarios,adems,esposibleocultartemporalmenteunbloquedecdigoquenorequerimosoquenoestlistoparasuejecucin:
/* y = 17 * 1.6180 + z; x = 100*34 + 18*(45+5)/y */