Los operadores se utilizan mediante los tipos de DATOS PRIMITIVOS.
Normalmente un mismo operador se utiliza para varios tipos de datos primitivos, aunque a veces no del mismo modo. Se dice que el operador está sobrecargado.
Hacemos un programa de prueba para analizarlo:
import java.util.*;
public class OperadoresTipos{
public static void main(String[] arg){
Scanner teclado = new Scanner(System.in).useLocale(Locale.US);// hacemos decimal al punto
//Introduccion de DATOS segun los Tipos:
System.out.println("Introduzca un número entero a=");
int a = teclado.nextInt();
System.out.println("Introduzca otro número entero b=");
int b = teclado.nextInt();
System.out.println("Introduzca un número decimal x=");
double x = teclado.nextDouble();
System.out.println("Introduzca otro número decimal y=");
double y = teclado.nextDouble();
System.out.println("Introduzca un caracter m");
char m = teclado.next().charAt(0);
System.out.println("Introduzca otro caracter n");
char n = teclado.next().charAt(0);
System.out.println("Introduzca un booleano s");
boolean s = teclado.nextBoolean();
System.out.println("Introduzca otro booleano t");
boolean t = teclado.nextBoolean();
//Operaciones segun los tipos: aritméticos con enteros
int c = a + b ;System.out.println("a+b vale " +c);
int d = a * b ;System.out.println("a*b vale " +d);
int e = a / b ;System.out.println("a/b vale " +e);
int f = a % b ;System.out.println("a%b vale " +f);
//arirméticos con los dobles
double z = x + y ;System.out.println("x+y vale " +z);
double u = x * y ;System.out.println("x*y vale " +u);
double v = x / y ;System.out.println("x/y vale " +v);
double w = x % y ;System.out.println("x%y vale " +w);
//aritméticos con los char: requieren una conversión o CASTING.
char o = (char) (m + n) ;System.out.println("m+n vale " +o);
char p = (char) (m * n) ;System.out.println("m*n vale " +p);
char q = (char) (m / n) ;System.out.println("m/n vale " +q);
char r = (char) (m % n) ;System.out.println("m%n vale " +r);
//operadores relacionales con cualquiera de los anteriores, dan resultados booleanos.
if( m >= n) System.out.println("m>=n = "+true);else System.out.println("m>=n vale "+false);
if( s == t) System.out.println("s==t = "+true);else System.out.println("s==t vale"+false);
if( a <= b) System.out.println("a <=b = "+true);else System.out.println("a <=b vale "+false);
if( s != t) System.out.println("s!=t = "+true);else System.out.println("s!=t vale "+false);
}
}
Ejecutando el programa OperadoresTipos:
Introduzca un número entero a vale 2
Introduzca otro número entero b vale 4
Introduzca un número decimal x vale 2
Introduzca otro número decimal y vale 4
Introduzca un caracter m vale 2
Introduzca otro caracter n vale 4
Introduzca un booleano s vale true
Introduzca otro booleano t vale false
a+b vale 6
a*b vale 8
a/b vale 0
a%b vale 2
x+y vale 6.0
x*y vale 8.0
x/y vale 0.5
x%y vale 2.0
m+n vale f
m*n vale ਨ
m/n vale
m%n vale 2
m>=n vale false
s==t vale false
a <=b vale true
s!=t vale true
Podemos ver que la división de números enteros no se comporta del mismo modo que la división de decimales o dobles:
2/4 vale 0 (división de dos enteros).
2.0/4.0 vale 0.5 (división de dos dobles).
m/0 error de ejecución.(división de un entero por 0);
0.0/0 vale NaN (Not a Number: división decimal de cero decimal por cero)
5.0/0 vale Infinity (division decimal de decimal positivo por cero).
-5.0/0 vale - Infinity (division decimal de decimal negativo por cero).
Los char se pueden comportar como los enteros, si hacemos una conversión o casting como hemos hecho arriba.