1. Programación básica en Java
Pedro Corcuera
Dpto. Matemática Aplicada y
Ciencias de la Computación
Universidad de Cantabria
corcuerp@unican.es
2. Objetivos
• Describir las partes básicas de un
programa en Java.
• Presentar los elementos lexicales del
lenguaje de programación Java.
• Diferenciar entre literales, tipos de datos
primitivos, identificadores, tipos de
variables, y operadores.
• Desarrollar programas simples válidos.
2
Java
3. Índice
• Análisis del primer programa Java
• Comentarios
• Elementos lexicales
• Tipos de datos primitivos
• Variables
• Impresión de variables
• Operadores y expresiones
3
Java
4. Análisis del primer programa Java
/*
**
*
Ejemplo HolaMundo
Imprime el mensaje "Hola, Mundo!"
*
/
public class
4
Java
HolaMundo {
main(String[] args) {
public static void
// Imprime el mensaje "Hola, Mundo!"
System.out.println("Hola, Mundo!");
}
}
5. Análisis del primer programa Java
/*
**
*
Ejemplo HolaMundo
Imprime el mensaje "Hola, Mundo!"
*/
• Lascuatroprimeraslíneasdelcódigofuenteson
comentarios.
• Uncomentario:
– sirveparadocumentarparte delcódigo.
– noespartedel programa, peroseusaconel propósito
de documentarlo.
– esunabuenaprácticadeprogramación añadir
comentariosal código.
5
Java
6. Análisis del primer programa Java
/*
**
*
Ejemplo HolaMundo
Imprime el mensaje "Hola, Mundo!"
*/
public class HolaMundo {
• Indicael nombredelaclasequeesHolaMundo.
• EnJava,todoel códigodebesercolocadodentrode
unadeclaracióndeclase.
• El especificador deaccesoalaclasepublic, indica
quelaclaseesaccesibledesdeotrasclasesdeotros
paquetes(lospaquetessoncoleccionesdeclases).
6
Java
7. Análisis del primer programa Java
/*
**
*
Ejemplo HolaMundo
Imprime el mensaje "Hola, Mundo!"
*/
public class HolaMundo {
• Lallaveindicael iniciodeunbloque.
• Enestecódigolallavesehacolocadoenlamisma
líneaqueladeclaracióndeclase, peropuede
ponerseenlasiguientelínea.
7
Java
8. Análisis del primer programa Java
public class HolaMundo {
public static void main(String[] args) {
• Indicael nombredeunmétodoenHolaMundoquees
el métodoprincipal.
Java.
• TodoslosprogramasenJava, exceptolosapplets,
empiezanconel métodomain.
• Esnecesariocolocar todaladeclaración
exactamente.
8
Java
9. Análisis del primer programa Java
public class HolaMundo {
public static void main(String[] args) {
// Imprime el mensaje "Hola, Mundo!"
• OtrotipodecomentarioJava.
9
Java
10. Análisis del primer programa Java
public class HolaMundo {
public static void main(String[] args) {
// Imprime el mensaje "Hola, Mundo!"
System.out.println("Hola, Mundo!");
• LainstrucciónSystem.out.println()imprimeel texto
• System.out serefierealasalidaestándar.
• El métodoprintln() imprimesuargumentocomouna
cadenadecaracteresconunsaltodelínea final.
• Todainstrucciónterminaconun;
10
Java
11. Análisis del primer programa Java
/*
**
*
Ejemplo HolaMundo
Imprime el mensaje "Hola, Mundo!"
*
/
public class HolaMundo {
main(String[] args) {
public static void
// Imprime el mensaje "Hola, Mundo!"
11
Java
System.out.println("Hola, Mundo!");
}
}
• Lasdosúltimasllavesseusanparacerrar el bloque
correspondiente al método main y la clase principal
respectivamente.
14. Comentarios en Java
• ComentarioestiloCodepárrafo:
– Selesllama tambiénmultilínea
– Todotexto encerrado entre /* y*/ quepuedeestar enuna
ovariaslíneassetratacomocomentario.
– Ejemplo:
/* este es un ejemplo de un
comentario estilo C o multilinea */
14
Java
15. Comentarios en Java
• ComentarioestiloC++odelínea:
– Empiezancon// yseextiendenhastael final dela línea.
– Todoel texto quesigue a// setrata comocomentario.
– Ejemplo:
// este es un comentario estilo C++ o de linea
15
Java
16. Comentarios en Java
• ComentariodocumentaciónJavaoJavadoc:
– LoscomentariosJavadocseusanparagenerarla
documentaciónenHTMLapartir delosprogramas Java.
Seutilizan para documentarclases, camposymétodos.
– SepuedencrearcomentariosJavadocempezando la
línea con/** yfinalizando con*/. Dela mismaformaque
loscomentariosestiloCsepuedenextenderporvarias
líneas. Puedeconteneretiquetas paraañadirinformación
aloscomentarios
– Seusalautilidaddegeneraciónautomática
de documentaciónllamada javadoc.
16
Java
17. Javadoc
• Lasetiquetasmásutilizadasson:
Tag Descripción
@author Nombre del desarrollador.
@deprecated Indicaqueelmétodooclaseesobsoletoyquenoserecomiendasuuso.
@param Definicióndeunparámetrodeunmétodo.
@return Describeelvalordevueltodeunmétodo.
@see Asocia con otro método o clase.
@since Fechaoversiónenqueaparecióporprimeravezla característica.
@throws Excepciónlanzadaporelmétodo
@version Versión del método o clase.
17
Java
18. Javadoc - ejemplo
/**
* Clase para representar círculos sobre el plano.
* Un círculo se define por su radio y las
* coordenadas de su centro.
* @version 1.2, 2/09/10
* @author Pedro Corcuera
*/
public class
protected
Circulo {
double x,y; // coordenadas del centro
double r; // radio del círculo
18
Java
protected
/**
* Crea un
* @param
* @param
* @param
círculo a partir de su origen y radio.
x Coordenada x del centro del círculo.
y Coordenada y del centro del círculo.
r Radio del círculo. (>= 0).
*/
public Circulo(double x, double y, double r) {
this.x=x; this.y = y; this.r = r;
}
19. Javadoc - ejemplo
/**
* Cálculo del área de este
* @return El área (mayor o
*/
public double area() {
círculo.
igual que 0) del círculo.
return Math.PI*r*r;
}
/**
si un punto está dentro del círculo.
px
py
componente x del punto
componente y del punto
19
Java
* Indica
* @param
* @param
* @return true si el punto está dentro del círculo o false en otro caso.
*/
public boolean contiene(double px, double py) {
/* Calculamos la distancia de (px,py) al centro del círculo (x,y),
que se obtiene como raíz cuadrada de (px-x)^2+(py-y)^2 */
double d = Math.sqrt((px-x)*(px-x)+(py-y)*(py-y));
// el círculo contiene el punto si d es menor o igual al radio
return d <= r;
}
}
20. Javadoc
• Paragenerar ladocumentación(formatoHTML) se
puedeutilizar:
– Modocomando:
>javadocCirculo.java
– Lamayoríadeentornosdeprogramacióndisponende
un menúpara ejecutar javadoc.Porejemplo en
NetBeans:
20
Java
24. Elementos lexicales – Conjunto de
caracteres
• LosprogramasenJavaseescribenenUnicode.
• Unicodeesunestándar internacional deconjuntosde
caracteres(16bits)quecontieneloscódigosde
caracteresdela mayoríadelenguajesutilizadosenel
mundo.
• ElconjuntodecaracteresASCII(7bits)equivalealos
primeros128caracteresdeUnicode(ISO-8859-1).
24
Java
25. Elementos lexicales - Identificadores
• Losidentificadoresseusanparanombrar clases,
métodos, variablesytodoloquerequieraunnombre.
• UnidentificadorenJavaempiezaconuna letra
(nuncaundígito!)ypuedeestarseguidodeletrasy
dígitos. Debeser diferentealaspalabrasreservadas
del lenguaje.
• En Java letras incluye los caracteres en los alfabetos
detodos los lenguajesdeUnicode,el guiónbajo(_) y
el signodólar ($).
• Javadistingueentremayúsculasyminúsculas.
25
Java
26. Directivas de programación
• Paranombresdelasclasesponer enmayúsculala
primeraletradelnombredela clase.Ejemplo:
EsteEsUnEjemploDeNombreDeClase
• Paranombresdemétodosyvariablesponer en
minúsculala primeraletradelnombre.Ejemplo:
esteEsUnEjemploDeNombreDeMetodo
• Encasodeidentificadoresmultipalabraponer en
mayúsculasólolaprimeraletradecadapalabra.
• Evitar usar guiónbajoal iniciodeunidentificador.
26
Java
27. Palabras reservadas en Java
• Laspalabrasreservadassonidentificadores
predefinidosreservadospor Javaparaunpropósito
específico.
• Nosepuedeusar laspalabrasreservadascomo
nombresdevariables, clases, métodos,… etc.
27
Java
28. abstract double instanceof static
assert else int strictfp
boolean enum interface super
break extends long switch
byte final native synchronize
d
case finally new this
catch float package throw
char for private throws
class goto* protected transient
const* if public try
continue implements return void
default import short volatile
do while
Palabras reservadas en Java
28
Java
* const y goto no se usan
true, false y null son literales
40. Tipos de datos primitivos - Integer
• Lostiposdedatosintegralesoenteros(byte,short,
int ylong) enJavarepresentanenterosdediferentes
tamaños.
• Sepuedeusar tresformas: decimal, octal o
hexadecimal parasurepresentación.
• El tipodedatointegral por defectoesint.
• Sepuededefinir el valor largoañadiendolaletral oL.
• Ejemplos:
2 077 0xBAC 10L
40
Java
41. Tipos de datos primitivos – Integer
• Tamañoyrangodeenteros:
Tipo Tamañ
o
(bit)
Valor Mínimo Valor Máximo
byte 8 -128 (-27) 127 (27-1)
short 16 -32768 (-215) 32767 (215-1)
int 32 -2147483648 (-231) 2147483647 (231-1)
long 64 -92233720368854775808 92233720368854775807
(-263) (263-1)
41
Java
42. Tipos de datos primitivos – Punto flotante
• Lostiposdedatosdepuntoflotante(float ydouble)
enJavarepresentannúmerosengeneral.
• Losliteralesenpuntoflotanteincluyenunaparte
decimal ounodelossiguientes:
– Eoe // valor exponencial
– Fof // (float)
– Dod // (double)
• Eltipodedatopuntoflotantepordefectoesdouble.
• Ejemplos:
3.1415 6.02E23 2.718F 123.4E35d
42
Java
43. Tipos de datos primitivos – Punto flotante
• Lostiposdedatosdepuntoflotantesealmacenan
segúnIEEE-754:
– Signo
– Exponentedespl.
– Mantisa
Signo
-1
Mantisa
5
Baseexponente
100
Partes de un número en punto flotante -5:
• El signousael bit mássignificativo.
• Elexponenteempleaunbyteenformatodesplazado.
• Lamantisaocupa23bits(float)y52bits(double).
43
Java
44. Tipos de datos primitivos – Punto flotante
• Tamañoyrangodetiposreales:
Tipo Tamaño (bit) Rango
float 32 + / - 3.4 ·1038
double 64 + / - 1.8 ·10308
44
Java
45. Tipos de datos primitivos –
Almacenamiento por tipo (bytes)
❑ Integer Types
▪ byte:
▪ short:
▪ int:
▪ long:
❑ Floating Point Types
▪ float:
▪ double:
❑ Other Types
▪ boolean:
▪ char:
45
Java
47. Variables – declaración e inicialización
• Sintaxisparadeclarar unavariable:
<tipo> <nombre> [= valor inicial];
– Nota:losvaloresencerradosentre<>sonvalores
requeridos, mientras quelos encerradosentre [ ] son
opcionales.
• Ejemplos:
int tanqueN1=6;
doubletanqueVolumen=12.0;
booleanresultado;
char opcion=′c′;
47
Java
48. Variables – Directivas de programación
• Usar nombresdescriptivosparalasvariables,
empezandosiempreporunaletraenminúscula.
• Esrecomendableinicializar lasvariablesenel
momentodeladeclaración. Losvaloresinicialespor
defectodelosdiferentestiposson:
Tipo Valor inicial por defecto
Integer 0
Floating-point 0.0
Char u0000
Boolean False
Reference null
48
Java
49. Compatibilidad de tipos y conversión
• Compatibilidaddetipos: untipoT1escompatible
contipoT2siunvalordeltipoT1puedeaparecer
dondeseaqueunvalordeltipoT2seesperay
viceversa.
• Conversión detipos: eslaconversióndevaloresde
untipoavaloresdeotrotipo.
• Ampliación y estrechamientodetipos numéricos:
convertiruntiponuméricoderangopequeñoaun
tiponuméricodemayor rangoesampliación. Lo
opuestoesestrechamiento.
49
Java
50. Compatibilidad de tipos y conversión
• Tamañosyrangosdetiposnuméricosordenadosde
menor amayor:
byte short int long float double
• Laampliacióndetiposserealizademaneraimplícita,
mientrasqueelestrechamientopuederesultaren
pérdidadeprecisión.Por ello,es necesariorealizar
uncast explícito(sinoel compilador produceerror).
• Ejemplo:
int i =10;longm=10000L;doubled=Math.PI;
i =(int) m; m=i; m=(long) d; d=m;
50
Java
51. Impresión simple del valor de variables
• Paraimprimir el valor deunavariablesepuedeusar
cualquieradelasinstrucciones:
System.out.println()
Añadeunanuevalíneaal final del datoimpreso
System.out.print()
Noañadeunanuevalínea al final deldatoimpreso
51
Java
52. Impresión simple del valor de variables -
Ejemplos
• Código1:
System.out.print(″Hola″);
System.out.print(″Mundo″);
Salida:
HolaMundo
• Código2:
System.out.println(″Hola″);
System.out.println(″Mundo″);
Salida:
Hola
Mundo
52
Java
53. Impresión simple del valor de variables -
Ejemplo
public class ImprimeVariable {
public static void main(String[] args) {
int valor = 10;
char x = ′A′;
System.out.println(valor);
System.out.println(″Valor de x = ″ + x);
53
Java
}
}
• Resultadoenpantalla:
10
Valor dex=A
54. Impresión con formato de variables
• Emulalaimpresiónconformatoprintf()deC.
• Sintaxisdel método:
System.out.printf(Stringdeformato,Objectos...args)
• ElStringdeformatopuedecontenerespecificadores
deformatocuyasintaxises:
%[argument_index$][flags][width][.precision]conversion_char
El carácter deconversiónpuedeser:
f parapuntos flotantes
oparaoctales
gnotación puntoflotante general
54
Java
dparaenteros
eparanotación científica
sparacadenas decaracteres
55. Tipos de formato de impresión
• Sepuedeincluir textodentrodelascomillas:
System.out.printf(″Precio por litro: %10.2f″, precio);
55
Java
56. Flags para formatos de impresión
• Sepuedeusar flagsdeformatosparacambiar lamanera
en queel texto ylos valoresnuméricossemuestran:
56
Java
57. Impresión con formato de variables
System.out.printf(″%10.2f″, precio);
System.out.printf(″%-10s″, ″Total:″);
10 espacios 2 espacios
System.out.printf(″%-10s%10.2f″, ″Total:″, precio);
57
Java
59. Impresión con formato de variables –
Resultado del Ejemplo
• Salida:
1.0/3.0=0,333
1.0/3.0=0,33333
1.0/2.0=00000,500
1000/3.0=3.33e+02
3.0/4567.0=6.57e-04
-1.0/0.0=-Infinity
0.0/0.0= NaN
pi =3.142, e=2.7183
C=2* 3.14159* 1.1, A= 1.1* 1.1* 3.14159
• Enlaceaopciones deprintf:
http://download-llnw.oracle.com/javase/tutorial/java/data/numberformat.html
59
Java
60. Variables primitivas y variables referencia
• Javadisponededostiposdevariablesquese
correspondenconlostiposempleadosensu
declaración:
– Variables primitivas
– Variables referencia
• Variablesprimitivas:
– Variablesdeclaradas contipos dedatosprimitivos.
– Almacenanlos datosenla ubicación dela memoria
asignadaalavariable.
60
Java
61. Variables primitivas y variables referencia
• Lostiposdedatosdereferenciasonclass, interfaceo
array.
• Variablesreferencia:
– Variablesquealmacenan la dirección dememoriadeotro
variable:apuntanaotradireccióndememoriadondese
encuentralosdatos.
– Cuandosedeclaraunavariabledeunaciertaclase, se
estádeclarandounavariablereferenciaal objetocon
esa clase.
• LasreferenciasenJavaseimplementancomo
punterosde32bits.
61
Java
62. Variables referencia: diferencia con
punteros C y C++
• LasvariablesreferenciaJavasediferenciandelos
punterosCyC++en:
Cy C++ Java
Lospunterossepuedenmodificar
mediantecast, aritméticade
Javanopermiteestasoperacionesy
prohíbelamanipulacióndirectade
punterosoasignacióndevalores.
62
Java
variablesreferencia
Lospunteroshacenreferenciaa
segmentosdememoriaquese
separandinámicamente.El
programadoresresponsablede
gestionarlaasignaciónyliberación
dememoria.
Lasvariablesreferenciaapuntanal
espaciodememoriaquees
dinámicamenteasignadopor el
garbage-collectorheap. Los
programadoresestánliberadosdela
responsabilidaddegestionarla
memoria.
63. Variables primitivas y variables referencia
Ejemplo
public class TiposVariables {
public static void main(String[] args) {
int num = 10; // tipo primitivo
String name = ″Hola″; // tipo referencia
}
}
10
:
Dirección(2000)
:
″Hola″
NombreVariable Dato
Dirección
Memoria
1001
:
1563
:
2000
num
name
63
Java
66. Operadores y expresiones: precedencia
Precedencia Expresión Tipos de
Operand
os
Descripción
1. exp++
exp−−
Numéri
co
Numéri
co
Incremento postfijo; resultado es el
valor antes Decremento postfijo;
resultado es el valor antes
2. ++exp
−−exp
+exp
Numéri
co
Numéri
co
Numéri
co
Incrementoprefijo; resultado esel valor después
Decremento prefijo; resultado es el valor
desp.
Positivo unario
−exp
~exp
!exp
Numérico
Integer,
boolean
Boolean
Negativo
unario
Complemento
bits Negación
lógica
3. exp1 * exp2
exp1 / exp2
Numéri
co
Multiplicación
División
66
Java
67. Operadores y expresiones: precedencia
Precedencia Expresión Tipos de
Operand
os
Descripción
5. exp1 << exp2
exp1 >> exp2
exp1 >>> exp2
Integ
er
Integ
er
Integ
er
Desplazamientoizquierda,rellenode0s
Desplazamiento derecha con signo
Desplazamiento derecha sin signo, relleno de0s
6. exp1 < exp2
exp1 > exp2
Numéri
co
Numéri
co
Menor
que
Mayor
que
exp1 <= exp2
exp1 >= exp2
Numéri
co
Numéri
co
Menor que o
igual a Mayor
que o igual a
7. exp1 == exp2
exp1 != exp2
Cualquie
ra
Cualquie
Igual de
comparación
Diferente
67
Java
68. Operadores y expresiones: precedencia
Precedencia Expresión Tipos de
Operand
os
Descripción
12. exp1 || exp2 Boolean O lógico
13. exp1 ? exp2 : exp3 exp1:Boolean
exp2/3,:Cualqui
era
Expresión condicional
14. var = exp Cualquiera Asignación:
var += exp Numérico, String var op= exp
var −= exp Numérico equivale a:
var *= exp Numérico var = (var) op (exp) con la
excepción
var /= exp Numérico que var se evalúa una sola vez
var %= exp Numérico
var <<= exp Integer
var >>= exp Integer
var >>>= exp Integer
var &= exp Integer, boolean
var ^= exp Integer, boolean
var |= exp Integer, boolean
68
Java
70. Operadores aritméticos
• Enlasoperacionesdedivisiónymódulo, si ambos
operandossonenteroshayquetenercuidadodeno
perder “precisión”.
int first = 7, second = 4, answer;
answer = first / second; // answer es 1
– Elresultado esunentero, sepierdela parte fraccionaria.
• Parahallar el restodeladivisiónenteraseusael
operador módulo%
int first = 7, second = 4, answer, remainder;
answer = first / second;
remainder = first % second; // remainder es 3
70
Java
71. Operaciones con potencias y raíces
• Javanotieneoperadoresparapotenciasyraíces. En
sulugar ofrecemétodosdelaclaseMath. Ejemplo:
Java
• Otrosmétodosson:
Método Descripción
Math.sin(x) seno de x (en radianes)
Math.cos(x) coseno de x (en radianes)
Math.tan(x) tangente de x
Math.log10(x) logaritmo decimal log10(x), x > 0
Math.abs(x) valor absoluto | x |
71
Java
72. Operaciones aritméticas
• Las operaciones conenterosnuncasedesbordan. Si
el valor excede el rango desu tipo se extiende por el
módulodel rango.
• Enexpresiones x/y yx%yseproduceunaexcepción
detipoArithmeticExceptioncuandoyes0.
• Lasoperacionesconpuntoflotantesiguenlanorma
IEEE-754-1985.Unaventajaesquenosegenera
unaexcepciónbajoningunacircunstancia(el
programanoabortacuandoseproduceunadivisión
por cero).
72
Java
73. Operaciones aritméticas
• LanormaIEEE-754definedosnúmerosmágicos:
InfinityyNaN(not anumber).
• Reglasquegobiernanlamultiplicaciónydivisión:
– Siningunodelos operandosesNaNel resultado es:
x y x / y x * y
Finito ±0.0 ±∞ ±0.0
Finito ±∞ ±0.0 ±∞
±0.0 ±0.0 NaN ±0.0
±∞ Finito ±∞ ±∞
±∞ ±∞ NaN ±∞
±0.0 ±∞ ±0.0 NaN
– Sialgún operandoesNaNel resultado esNaN.
Java 73
74. Concatenación de cadenas (+)
• EltipoString sirveparadeclarareinicializarcadenas
decaracteres:
String nombre = ″Esteban″
• LaclaseStringdisponedemétodos. Ejemplo:
int n = nombre.length(); // n = 7
• Eloperador+tambiénsepuedeusarparaconcatenar
doscadenas.Siunodelosoperandosesunacadena
yelotroes de otrotipo,ésteúltimose convertiráa
unarepresentacióndecadenayseconcatenaráal
operandocadena.
74
Java
75. Concatenación de cadenas (+)
• ‘Sumar’ unStringal final deotro:
String fName = ″Harry″; String lName =
″Morgan″; String name = fName + lName; //
HarryMorgan
• Añadir unespacioentrelosdos:
String name = fName + ″ ″ + lName; // Harry Morgan
• ConcatenarunvalornuméricoaunavariableString:
String a = ″Agent″; int n = 7;
String bond = a + n; // Agent7
• ConcatenarStringsyvaloresnuméricosdentrode
println:
System.out.println(″El precio total es ″ + total);
75
Java
76. Operadores de incremento/decremento
• Seaplicanconoperandosdetiposenteroypunto
flotante. Puedenser postfijosoprefijos.
Operador Uso Descripción
++ op++ Incrementa op en 1. El valor de la
expresión es el valor de op antes
del incremento
++ ++op Incrementa op en 1. El valor de la
expresión es el valor de op después
del incremento
− − o p − − Decrementa op en 1. El valor de la
expresión esel valor deopantes del
decremento
− − − − o p Decrementa op en 1. El valor de la
expresión esel valor deopdespués del
76
Java
77. Operadores de incremento/decremento
• Ejemplos:
int i = 10;
int j = 3;
int k = 0;
k = ++j + i; //resultado: k = 4 + 10 = 14
int i = 10;
int j = 3;
int k = 0;
77
Java
k = j++ + i; //resultado: k = 3 + 10 = 13
81. Operadores lógicos booleanos
• Seaplicanaoperandosdetipointegeroboolean.
x y ~x
complemento
x & y
AND
x | y
OR inclusivo
x ^ y
OR exclusivo
TRUE TRUE FALSE TRUE TRUE FALSE
TRUE FALSE FALSE FALSE TRUE TRUE
FALSE TRUE TRUE FALSE TRUE TRUE
FALSE FALSE TRUE FALSE FALSE FALSE
81
Java
82. Operadores lógicos && y & (boolean)
82
Java
• LadiferenciaentrelosoperadoreslógicosANDes
que&&realizaunaevaluaciónparcialo″corto
circuito″ mientrasque&no.
• Así enlaexpresiónexp1 && exp2
– &&evaluará la expresión exp1yretorna false deforma
inmediatasi exp1esfalse.
– Si exp1esfalse, el operador nuncaevaluarála
expresiónexp2porqueel resultadodela expresión es
false sinimportar el valor deexp2.
• Por el contrario, el operador &siempreevaluaráexp1
yexp2antesdedevolver unvalor.
83. Operadores lógicos || y | (boolean)
83
Java
• LadiferenciaentrelosoperadoreslógicosOResque
|| realizaunaevaluaciónparcialo″cortocircuito″
mientrasque| no.
• Así enlaexpresiónexp1 || exp2
– || evaluará la expresión exp1yretorna true deforma
inmediatasi exp1estrue.
– Si exp1estrue, el operador nuncaevaluarála
expresión exp2porqueel resultado dela expresión es
true sin
importar el valor deexp2.
• Por el contrario, el operador | y^siempreevaluará
exp1yexp2antesdedevolver unvalor.
84. Operadores de desplazamiento bits
• Seaplicanaoperandosdetipointeger.
Expresión Descripción
x << k Desplaza los bits en x k lugares a la izquierda
rellenando por la derecha con 0 bits.
El resultado es x • 2k
x >> k Desplaza los bits en x k lugares a la derecha
rellenando por la izquierda con el bit más alto
(signo).
El resultado es x / 2k
x >>> k Desplaza los bits en x k lugares a la derecha
rellenando por la izquierda con 0 bits
84
Java
85. Operador condicional ( ? : )
• Eloperadorcondicionalesternarioyporello requiere
detresexpresionescomooperandos.
• Lasintaxisdeunaexpresiónqueusael operador
condicional es:
exp1 ? exp2 : exp3
donde:exp1 esunaexpresiónboolean,exp2 y
exp3 puedenser decualquier tipo
• Resultado:el valordelaexpresióncondicionales
exp2 si exp1 estrueyexp3 si exp1esfalse.
85
Java
86. Operador condicional ( ? : ): ejemplo
public class OperadorCondicional {
String status =
public static void main(String[] args) {
"";
int grade = 80;
// Obtiene el estado de un estudiante
status = (grade >= 60)?"Apto":"No apto";
// Imprime status
System.out.println(status);
}
}
• Resultado:
Apto
86
Java
87. Operadores de asignación
• Eloperadordeasignaciónsimplees=ounode:
+= − = *= /= %=
<<= >>= >>>= &= ^= |=
• Laexpresióndeasignación: var op= exp
esequivalentea: var = (var) op (exp)
Conlaexcepciónquevar seevalúaunasolavezen
el primer caso.
87
Java