Operaciones aritmeticas
Comencemos con lo más simple: las operaciones aritméticas. Se trata de las conocidas suma (signo +), resta (-), multiplicación (*) y división (/).public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
System.out.println(x+y);
System.out.println(x-y);
System.out.println(x*y);
System.out.println(x/y);
}
}
Salida de consola:
1032
966
32967
30
Ya has usado todo esto. Puede agregarles una operación %
: el resto de la división.
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 33%2;
System.out.println(y);
}
}
Salida de consola:
1
En este ejemplo, dividimos 33 entre 2. Como resultado, obtenemos 16 y queda una "cola" adicional que no es divisible por 2: uno. Esta “cola” será el resultado de la operación “resto de división”. Java (así como las matemáticas) implementa operadores de comparación . Probablemente también los conozcas de la escuela:
- es igual (
==
) - más (
>
) - menos (
<
) - Mayor qué o igual a (
>=
) - Menos que o igual a (
<=
) - no es igual (
!=
)
==
y no con un signo =
. El signo de unidad =
en Java es un operador de asignación, donde a una variable se le asigna un número, una cadena o el valor de otra variable.
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x=y);// espera que false se imprima en la consola
}
}
Salida de consola:
999
¡Ups! Claramente este no es el resultado que esperábamos. Este es un tipo de datos completamente diferente: esperábamos ver boolean
, pero obtuvimos un número. Esto se debe a que entre paréntesis tenemos una operación de asignación, no una comparación. Se asignó x=y
el valor (999) a la variable y luego lo imprimimos en la consola. Opción correcta: y
x
x
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x==y);
}
}
Salida de consola:
false
¡Ahora hemos comparado correctamente los 2 números! :) Otra característica de la operación de asignación ( =
) es que se puede realizar “encadenada”:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
int z = 256;
x = y = z;
System.out.println(x);
}
}
Salida de consola:
256
Recuerde: la asignación se realiza de derecha a izquierda. Esta expresión ( x = y = z
) se ejecutará en pasos:
- y = z, es decir, y = 256
- x = y, es decir x = 256
Operaciones unarias
Se les llama "unarios" de la palabra "uno" - "uno". Recibieron este nombre porque, a diferencia de los anteriores, se realizan sobre un número y no sobre varios. Éstas incluyen:-
Menos unario. Invierte el signo del número.
public class Main { public static void main(String[] args) { int x = 999; // cambia el signo por primera vez x = -x; System.out.println(x); // cambia el signo por segunda vez x= -x; System.out.println(x); } }
Salida de consola:
-999 999
Usamos el menos unario dos veces. Como resultado, nuestro número se volvió negativo al principio y luego positivo nuevamente.
-
Incremento (
++
) y disminución (--
)Una operación
++
aumenta un número en uno y una operación--
lo disminuye en la misma unidad.public class Main { public static void main(String[] args) { int x = 999; x++; System.out.println(x); x--; System.out.println(x); } }
Salida de consola:
1000 999
x++
- notación postfijo ++x
- notación prefijo ¿Cuál es la diferencia fundamental si pones más y menos antes o después del número? Veamos en un ejemplo:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
}
}
Salida de consola:
999
¡Hay algo mal! Queríamos incrementar x
en 1 y asignar un nuevo valor a la variable y
. Es decir, y debería ser igual a 1000. Pero tenemos un resultado diferente: 999. ¿Resulta que x
no se incrementó y la operación de incremento no funcionó? Cómo funcionó. Para verificar esto, intente imprimir x en la consola al final :)
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
System.out.println(x);
}
}
Salida de consola:
999
1000
De hecho, es por eso que la operación postfix se llama así: se realiza después de la expresión principal. Es decir, en nuestro caso: int y = x++;
primero se ejecuta y = x
(y se le asignará el valor inicial a la variable y x
), y sólo después x++
¿Qué pasa si no estamos satisfechos con este comportamiento? Necesitas usar la notación de prefijo:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = ++x;
System.out.println(y);
}
}
En este caso, funcionará primero ++x
y solo después. y = x;
Vale la pena recordar esta diferencia de inmediato para no cometer errores en un programa real, en el que todo el comportamiento puede cambiar debido a esto :)
Operaciones combinadas
Además, en Java existen las llamadas operaciones combinadas. Utilizan una combinación de dos operaciones:- Asignación
- Operación aritmética
+=
-=
*=
/=
%=
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
x += y;
System.out.println(x);
}
}
Salida de consola:
1032
x += y
medio x = x + y
. Por motivos de brevedad, se utilizan dos caracteres seguidos. Esto también funciona con combinaciones de -=
, *=
y /=
.%=
Operaciones lógicas
Además de las operaciones con números, Java también tiene operaciones con variables booleanastrue
y false
. Estas operaciones se realizan mediante operadores lógicos.
-
!
— Operador “NO”. Invierte el valor de una variable booleanapublic class Main { public static void main(String[] args) { boolean x = true; System.out.println(!x); } }
Salida de consola:
false
-
&&
— operador “Y”. Devuelve un valortrue
sólo si ambos operandos sontrue
.public class Main { public static void main(String[] args) { System.out.println(100 > 10 && 100 > 200); System.out.println(100 > 50 && 100 >= 100); } }
Salida de consola:
false true
El resultado de la primera operación es
false
, ya que una de las condiciones es falsa, es decir, 100 > 200. El operador requiere que todas las condiciones sean verdaderas (como en la segunda línea, por ejemplo)&&
para poder devolver .true
-
||
— Operador “O”. Devuelvetrue
cuando al menos uno de los operandos es verdadero.Aquí nuestro ejemplo anterior funcionará de manera diferente:
public class Main { public static void main(String[] args) { System.out.println(100 > 10 || 100 > 200); } }
Salida de consola:
true
Выражение 100 > 200 по-прежнему ложно, но оператору “o” вполне достаточно, что первая часть (100 > 10) является истинной.
GO TO FULL VERSION