1. Tipo de datos lógico: boolean
Como ya hemos comprobado, en Java hay un operador muy útil — if-else. Ejecuta un bloque de instrucciones si la condición entre paréntesis es verdadera, y un segundo bloque si la condición es falsa.
Para trabajar cómodamente con expresiones que pueden ser verdaderas o falsas, en Java se añadió un tipo especial — boolean. Su característica principal es que las variables de este tipo solo pueden tomar dos valores: true (verdadero) y false (falso).
No se puede asignar ningún otro valor a variables de tipo boolean. El compilador no lo permitirá.
Ejemplos de variables de tipo boolean:
boolean isAdult = true;
boolean hasMoney = false;
Una variable de tipo boolean solo tiene dos valores — true y false. ¡Y ya está! Casi como una prueba exitosa — o «aprobó», o «falló».
2. Operaciones de comparación
¿Y para qué sirve un tipo tan primitivo? El verdadero poder de boolean se manifiesta cuando construimos expresiones lógicas. Normalmente se obtienen con operadores de comparación.
| Operador | Propósito | Ejemplo | Valor |
|---|---|---|---|
| == | Igual | |
true o false |
| != | Distinto | |
true o false |
| > | Mayor que | |
true o false |
| < | Menor que | |
true o false |
| >= | Mayor o igual | |
true o false |
| <= | Menor o igual | |
true o false |
Ejemplo:
int age = 20;
boolean isAdult = age >= 18; // true (20 es mayor o igual que 18)
boolean isTeenager = age >= 13 && age < 18; // false (20 no es menor que 18)
boolean isEven = age % 2 == 0; // true (20 se divide entre 2 sin resto)
isAdult será true aquí, porque 20 es realmente una edad de «adulto».
Punto importante 1:
Los operadores compuestos por dos símbolos no se pueden separar.
a < = 10
speed > = max
age = = 18
time ! = 0
Punto importante 2:
Ten en cuenta que no existen los operadores => y =<: solo existen <= y >=. Si escribes a =< 3, tu código simplemente no compilará.
Punto importante 3:
En Java no puedes escribir una expresión del tipo 18 < age < 65. La expresión 18 < age tendrá el valor true o false. Y no se puede comparar true con un número (65) — son tipos distintos.
3. Operaciones lógicas
En Java no se puede escribir la expresión 18 < age < 65 — es sintácticamente incorrecta y el programa no compilará.
Pero sí puedes escribirlo así:
(18 < age) I (age < 65)
Por supuesto, en lugar de la palabra Y se utilizan operadores lógicos. En Java hay tres operadores lógicos: AND (y), OR (o) y NOT (no).
Buena noticia: usando paréntesis, puedes construir expresiones lógicas de cualquier complejidad.
Mala noticia: en Java, en lugar de las palabras and, or y not, se usan los símbolos de la familia de C: &&, ||, !.
| Operador lógico | Lo esperado | Realidad |
|---|---|---|
| Y (∧) | and | && |
| O (∨) | or | || |
| NO (¬) | not | ! |
Aquí tienes algunos ejemplos de uso de los operadores lógicos en Java:
| Expresión | Lectura | Explicación |
|---|---|---|
|
(0 < a) and (a < 100) | (0 < a) Y (a < 100) |
|
(not a) and (not b) | (NO a) Y (NO b) |
|
not((not a) or (not b)) | NO((NO a) O (NO b)) |
4. Tablas de verdad
Repasemos brevemente las operaciones lógicas.
Operador AND
El operador AND, también llamado Y, también &&, también conjunción, también multiplicación lógica.
| Expresión | Resultado |
|---|---|
| true && true | true |
| true && false | false |
| false && true | false |
| false && false | false |
Operador OR
El operador OR, también llamado O, también ||, también disyunción, también suma lógica.
| Expresión | Resultado |
|---|---|
| true || true | true |
| true || false | true |
| false || true | true |
| false || false | false |
Operador NOT
El operador NOT, también llamado NO, también !, también inversión.
| Expresión | Resultado |
|---|---|
| ! true | false |
| ! false | true |
Expresiones útiles:
| Expresión | Resultado |
|---|---|
| m && !m | false |
| m || !m | true |
| !(a && b) | !a || !b |
| !(a || b) | !a && !b |
5. Ejemplos de operaciones lógicas: and, or, not
Operación «Y», AND, se representa como &&
El resultado es verdadero solo cuando ambas variables son verdaderas.
int age = 16;
boolean hasTicket = true;
boolean canAttend = age >= 14 && hasTicket; // true (16 es mayor que 14 Y hay entrada)
Si tienes 14 Y tienes entrada — ¡adelante!
Operación «O», OR, se representa (||)
El resultado es verdadero si al menos una condición es verdadera.
boolean isAdmin = false;
boolean isModerator = true;
boolean canEdit = isAdmin || isModerator; // true (se puede editar si al menos una de estas es true)
Si eres admin O moderador — por favor, ¡pulsa los botones!
Operación «NO», NOT, se representa (!)
El operador de negación convierte verdadero en falso y viceversa.
boolean isWeekend = false;
boolean shouldGoToWork = !isWeekend; // true (si no es fin de semana, trabajamos)
Si NO es fin de semana — ¡toca levantarse!
Combinación: construye condiciones tan complejas como quieras
Puedes combinar tantas operaciones lógicas como quieras (mejor no excederse). Los paréntesis se pueden (¡y se deben!) usar para mayor claridad.
Ejemplo:
int age = 17;
boolean hasTicket = false;
boolean isVip = true;
boolean canGo = (age >= 18 && hasTicket) || isVip; // true, porque isVip = true
Lógica: si la persona es mayor de edad y tiene entrada, o si es VIP — la dejamos pasar. Si no es VIP — solo si es adulta y tiene entrada.
GO TO FULL VERSION