Professional Documents
Culture Documents
ElementosformalesdellenguajeJava(I)
Enestedocumentopodrsencontrarinformacinrelacionadaconlasintaxisgeneral
necesariaparalaconstruccindeprogramasenJavabasadosenasignaciones.
Notacin
Entodoslosdocumentosdesintaxisseusarunanotacinsencillaqueusteddebe
conocerparaentenderrpidamentelaestructuradeloselementosdescritos.
Elementosobligatorios:sonelementosquedebenserespecificadosparaconstruiruna
estructura.Serepresentanusando<y>
Elementosopcionales:sonelementosqueesposibledefinir,peronosondeuso
obligatorio.Serepresentanusando(y)
Usodefuentesdetexto:alusaresta fuente,nosreferimosaque,paraqueel
procesodecompilacinseaexitoso,eltextosedebeescribirexactamenteigualacomose
presenta.Conesta fuenteescribiremoselcdigoenJava.
Aclaracinimportante:Javaesunlenguajesensiblealusodemaysculasyminsculas,
porlotantoFloatesdiferenteafloat.Muchasvecescomoenesteejemplo,las
dospalabrastienenusosyunaconnotacindistinta.Poreso,esimportanteusarcada
elementodellenguajetalycomoesdefinidoenestedocumento.
3.1.Tiposdedatos
EnJavaexistentiposdedatosbsicosorientadosalaconstruccindeexpresionesquenos
sirvenparahallarelresultadodeoperaciones.Estostiposdedatossebasanenlostipos
definidosparalasexpresionesqueconocemos(Enteros,Realesetc)ysediferenciande
acuerdoconsuusoysuprecisinoelrangodevaloresquepermitenalmacenar.
AdrianNicolsMalaverBarrera
Tipodedato
Entero
TipoenJava
Rangodevalores
byte
De128(2 )a127(2 1)
short
De32768(2 )a32767(2 1)
int
De2147483648(2 )a2147483647(2 1)
long
De9223372036854775808(2 )a
63
9223372036854775807(2 1)
64bits
float
Elnmeromspequeoquesepuede
representares1.40129846432481707e45.El
msgrandees3.40282346638528860e+38
32bits
double
Elnmeromspequeoquesepuede
representares4.94065645841246544e324.El
msgrandees1.79769313486231570e+308.
64bits
boolean
false y true
char
De0a65535,dondecadavalorrepresentaun
carcterdetextodeacuerdoconlacodificacin
usada.
16bits
Usodememoria
7
15
8bits
15
31
16bits
31
63
Real
Booleano
Carcter
32bits
Tabla1.TiposdedatosbsicosenJava
3.2. Definicindevariables
Deacuerdoconlanecesidad,esposibledefinirvariablesquealmacenarnelresultadode
operaciones,parmetrosyotrosvaloresqueserequieranparalasolucinalgortmicade
problemas.Lasintaxiseslasiguiente:
<Tipodedato><Nombredelavariable>(=<Valorinicial>);
Porejemplo:
float f;
int i;
int y, z, t, w;
Nombresdevariables:losnombressonunasecuenciadecaracteresdetextoquepueden
comenzarconletras,conelsigno$oconelsigno_.Haypalabrasquenopuedenusarse
paradefinirnombresdevariables,dadoquesonpalabrasqueusaellenguajeJavapara
AdrianNicolsMalaverBarrera
definirsuspropiasestructuras.Estaspalabrassonllamadaspalabrasreservadasysonlas
siguientes:
abstract
assert
boolean
break
byte
case
catch
char
class
const
continue
default
do
double
else
enum
extends
final
finally
float
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
Valorinicial:Aldefinirunavariableesposibleasignarleunvalorinicial,deacuerdoconel
tipodedato.Notaimportante:Lasvariablesdefinidasdentrodemtodos,enestecaso,
dentrodelmtodomain,enelquedefinimoslalgicadelosprogramas,requierendeun
valorinicial,yaqueJavanolesasignauno.
Datosenteros:Valoresnumricosenterospositivosonegativos.Pordefectoestn
enbasedecimal.Paradefinirvaloresenbaseoctalseanteponeun0alvalor.Para
definirvaloresenbasehexadecimalseantepone0x.
int x = 12;
long personas = 94674242;
byte dato = -123;
int h = 0x19fe; //6654 en base hexadecimal
Datosreales:valoresnumricosrealespositivosynegativos.Lapartedecimalse
separadelaenteraconpunto..Paradefinirvaloresdetipoflotanteesnecesario
colocarfalfinaldelnmero.Esposibleusarnotacincientfica.Porejemplo,el
nmero4326.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
Unicodeesunestndarinternacionalqueasignaunvalornumricoacadaunode
losposiblessmbolosquepodemosrepresentar;nosoloenespaol,sinoen
muchosotrosidiomas.
char letra = 'A';
char arroba = '\u0041';
char otraLetra = 65;
Enestecaso,sepresentantresformasposiblesdehacerreferenciaalsmbolo'A'.
Cadenasdetexto:sedefinenentrecomillasdobles("").Lasutilizaremos
inicialmenteparamostrarinformacinalusuariodenuestrasaplicaciones.
String palabra = Hola;
String otraPalabra = Hola mundo;
3.3 Asignaciones
Paraasignarunavariable,seusaeloperadordeasignacin'='deformasimilarala
asignacindevalorinicial.
<Nombredelavariable>=<Valor>;
SiemprequeescribamosasignacionesenellenguajeJava,usaremospuntoycoma(;)para
definirsufinalizacin.Nosoloaldefinirasignaciones,sinotambinaldefinirvariableso
hacerllamadoamtodosespecficos.
Porejemplo:
f = 1.45f;
i = 23;
letra = 'W';
Lasreglasparalosvaloresusadossonlasmismasqueparalosvaloresiniciales.Las
variablesdebenhabersidodefinidaspreviamente.
3.4 Expresiones
LaescrituradelasexpresionesenJavasiguelasmismasreglasdefinidasparalas
expresionesenpseudocdigo.Acontinuacinserelacionanlosoperadoresprincipales
queusaremosalolargodelcurso.Unalistamsdetalladapuedeencontrarseaqu
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/operators.html.Los
operadoressepresentanenordendeprioridad(delmsimportantealmenosimportante
enelordendeevaluacin).
AdrianNicolsMalaverBarrera
Operador
Operadores
unitariosde
incremento
postfijos
(x++, x--)
Descripcin
Incrementan(++)odisminuyen(--)elvalordeunavariabledespusde
laevaluacindelaexpresinqueloscontiene.Porejemplo:
1
2
int x = 10, y;
y = 15 + x++;
Lavariablexvaleinicialmente10.Elresultadodelalnea2es25yluego
sehaceelincremento.Estosignificaqueenlaslneassiguientes,xvale
16.
Cumplenlamismafuncinquelosanteriores,conlaexcepcindeque
Operadores
primeromodificanelvalorantesdelclculodelaexpresin
unitariosde
correspondiente.
incremento
Paraelejemploanterior,elvaloralmacenadoenlavariableysera26y
infijos
(x++, x--)
no25.
Operadoresbinariosdemultiplicacin,divisinymdulo.Esteltimo
Operadores
multiplicativos funcionademaneraequivalentealoperadorMODusadopreviamente
(*, /, %)
enexpresiones.
Operadores
Operadoresbinariosderestaysumausadosentiposdedatosnumricos.
aditivos
(+,-)
Operadoresaplicadosatiposdedatosquedefinenrelacionesdeorden,
Operadores
comotiposnumricosycaracteresdetexto.Elresultadodeestos
relacionales
(<,>,<=,>=) operadoresesdetipobooleano.
Operadores
Operadoresdeequivalencia.Elresultadodeestosoperadoresesdetipo
deigualdad
booleano.
(==,!=)
Operador
Permiterealizarlaoperacinlgica'Y'vistaenexpresionesbooleanas.Se
lgicoY
puedeaplicaraoperandosdetipobooleano.
(&&)
Operador
lgicoO
(||)
Operadores
deasignacin
(=,+=,=,*=,/=)
Permiterealizarlaoperacinlgica'O'vistaenexpresionesbooleanas.Se
puedeaplicaraoperandosdetipobooleano
Permitenrealizaroperacionesaritmticasyasignacinalmismotiempo.
Porejemplo:
1
2
3
int x = 10;
x += 15;
x *= 3;
Lalnea2esequivalenteax = x + 15;
Lalnea3esequivalenteax = x * 3;
4 Referenciadeoperacionesdelecturayescrituraporconsola
AdrianNicolsMalaverBarrera
Conelobjetivodecapturarinformacindeunusuarioodepresentarinformacinen
pantalla,sehandefinidooperacionesenJavaquepermitenrealizarestatareaenforma
sencilla.
Presentacindeinformacinenlaconsoladetexto
Cuandoseanecesariopresentarelresultadodeunaoperacinocualquierinformacinal
usuario,usaremoslosmtodosprintyprintln quepertenecenalafuncionalidad
bsicaqueofreceJava.
Porejemplo:
1
2
3
4
int x = 10;
float f = 1.45f;
long l = 34543566;
String s = Hola;
5
6
7
8
9
System.out.println(f);
System.out.println(l);
System.out.println(x);
System.out.println(s);
System.out.println(El resultado es: + f);
Alejecutarestecdigo,lasalidaenlaconsoladetextosera:
1.45
34543566
10
Hola
El resultado es: 1.45
Laslneas5,6,7y8muestranelcontenidodelasvariablesenpantalla.Tambines
posiblemostrarcadenasdetextoqueacompaenalcontenidodelasvariables,como
sucedeenlalnea9.
Cuandoseusaelmtodoprintenvezdeprintln,nosebajalalneadespusdeescribir
cadavariable.Siseusaraprintlasalidasera:
1.453454356610HolaEl resultado es: 1.45
Lecturadeinformacindeconsola
Cuandoseanecesariocapturarinformacindelusuario,porejemploparaestablecer
valoresparalasvariablesdeentradadeunalgoritmo,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
Despusdelaejecucindecadalnea,quedaralmacenadoelvalorledoencada
variable.Paramsinformacin,puedeconsultarseladocumentacindelaclase
scannerdeJava:http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html.
5 Invocacindemtodos
Esposibleconstruirexpresionesqueinvolucrenlarealizacindetareascomunescomo
racescuadradas,valoresabsolutos,entreotras.Loharemosdelasiguienteforma:
<Variabledetipoadecuado>=<Nombredelmtodo>(<Parmetros>);
Esnecesarioidentificareltipodevariablequedeberaserusado,deacuerdoconeltipo
dedatoqueretornaunmtodoparticular.Deigualmanera,haymtodosquenotienen
valorderetornoy,porlotanto,nopodranserusadosparaasignarvaloresavariables.
Losmtodosrelacionadosconfuncionesmatemticas,puedenserencontradosenlaclase
Mathyseusandeacuerdoconlosparmetrosquerequieren1.Porejemplo,sise
requierecalcularlarazcuadradade95738,loqueseharaeslosiguiente:
double x = 0.0f;
x = Math.sqrt(95738);
Siempre,alusarmtodoscomoeste,esrecomendableleerlareferenciasobreeluso,
parmetrosyvalorderetornoparaestarsegurosdequeeselmtodomsadecuado.
Esposibleusarestetipodemtodosenexpresionesquepermitanrealizaroperaciones
mscomplejas:
d = x*x + Math.sqrt(y * y) + 98 * z;
6 Comentarios
EnJava,comoenlamayoradelenguajesdeprogramacin,esposiblehacercomentarios
paraexplicarseccionesdecdigo,oagregaranotacionesparafuturasmodificaciones.
Loscomentariospuedenhacerseparaunasolalneaoparaunbloquedetexto.
Comentariosdeunalnea:Sehacenusando"//".Todoeltextosubsiguientehastaelfinal
delalneanosetieneencuentaalcompilarelcdigopresenteenelarchivo.
ParainformacinsobrelosmtodosdefinidosenlaclaseMath:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Math.html[Recuperado:15deEnerode2010]
AdrianNicolsMalaverBarrera
Comentariosdebloque:Sehacenusando"/*"y"*/".Cualquiertextoencerradoentre
estosdoselementosnosertenidoencuentaalcompilarelcdigopresenteenelarchivo.
/*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:
Fecha:
*/
.
.
.
nmalaver
30-02-08
Usandocomentarios,adems,esposibleocultartemporalmenteunbloquedecdigoque
norequerimosoquenoestlistoparasuejecucin:
/*
y = 17 * 1.6180 + z;
x = 100*34 + 18*(45+5)/y
*/
AdrianNicolsMalaverBarrera