VARIABLES Y OPERADORES

OPERADORES
Image by Cool Text: Logo and Button Generator - Create Your Own Logo



Un operador lleva a cabo operaciones sobre uno (operador unario), dos (operador binario) o tres (operador ternario) datos u operandos de tipo primitvo devolviendo un valor determinado también de un tipo primitivo. El tipo de valor devuelto tras la evaluación depende del operador y del tipo de los operandos. Por ejemplo, los operadores aritméticos trabajan con operandos numéricos, llevan a cabo operaciones aritméticas básicas y devuelven el valor numérico correspondiente. Los operadores se pueden clasificar en distintos grupos según se muestra en los siguientes apartados.

OPERADOR ASIGNACIÓN

El operador asignación =, es un operador binario que asigna el valor del término de la derecha al operando de la izquierda. El operando de la izquierda suele ser el identificador de una variable. El término de la derecha es, en general, una expresión de un tipo de dato compatible; en particular puede ser una constante u otra variable. Como caso particular, y a diferencia de los demás operadores, este operador no se evalúa devolviendo un determinado valor.
Operador asignación
No debe confundirse el operador asignación (=) con el operador relacional de igualdad (==) que se verá más adelante. Además Java dispone de otros operadores que combinan la asignación con otras operaciones (operadores aritméticos combinados).
En el siguiente código se muestran algunos ejemplos de uso del operador asignación con datos de distintos tipos:
public class OpAsignacion {public static void main(String[] args) {
        int i,j;
        double x;
        char c;
        boolean b;
        String s;
        i = 15;
        j = i;
        x = 12.345;
        c = 'A';
        b = false;
        s = "Hola";
 
        System.out.println("i = " + i);
        System.out.println("j = " + j);
        System.out.println("x = " + x);
        System.out.println("c = " + c);
        System.out.println("b = " + b);
        System.out.println("s = " + s);
    }
}
Salida por pantalla del programa anterior:
$>javac OpAsignacion.java
 
$>java OpAsignacion
 
i = 15

j = 15

x = 12.345
c = A

b = false
s = Hola

OPERADORES ARITMÉTICOS

El lenguaje de programación Java tiene varios operadores aritméticos para los datos numéricos enteros y reales. En la siguiente tabla se resumen los diferentes operadores de esta categoría.
Operadores aritméticos básicos
 Operadores aritméticos básicos
El resultado exacto depende de los tipos de operando involucrados. Es conveniente tener en cuenta las siguientes peculiaridades:
  • El resultado es de tipo long si, al menos, uno de los operandos es de tipo long y ninguno es real (float o double).
  • El resultado es de tipo int si ninguno de los operandos es de tipo long y tampoco es real (float o double).
  • El resultado es de tipo double si, al menos, uno de los operandos es de tipo double.
  • El resultado es de tipo float si, al menos, uno de los operandos es de tipo float y
 ninguno es double.
  • El formato empleado para la representación de datos enteros es el complemento a dos. En la aritmética entera no se producen nunca desbordamientos (overflow) aunque el resultado sobrepase el intervalo de representación (int o long).
  • La división entera se trunca hacia 0. La división o el resto de dividir por cero es una operación válida que genera una excepción ArithmeticException que puede dar lugar a un error de ejecución y la consiguiente interrupción de la ejecución del programa.
  • La aritmética real (en coma flotante) puede desbordar al infinito (demasiado grande, overflow) o hacia cero (demasiado pequeño, underflow).
  • El resultado de una expresión inválida, por ejemplo, dividir infinito por infinito, no genera una excepción ni un error de ejecución: es un valor NaN (Not a Number).

OPERADORES ARITMÉTICOS INCREMENTALES

Los operadores aritméticos incrementales son operadores unarios (un único operando). El operando puede ser numérico o de tipo char y el resultado es del mismo tipo que el operando. Estos operadores pueden emplearse de dos formas dependiendo de su posición con respecto al operando.
Operadores aritméticos incrementales
Operadores aritméticos incrementales
Estos operadores suelen sustituir a veces al operador asignación y también suelen aparecer en bucles for.

 OPERADORES ARITMÉTICOS COMBINADOS

Combinan un operador aritmético con el operador asignación. Como en el caso de los operadores aritméticos pueden tener operandos numéricos enteros o reales y el tipo específico de resultado numérico dependerá del tipo de éstos. En la siguiente tabla se resumen los diferentes operadores de esta categoría.
Operadores aritméticos combinados
 Operadores aritméticos combinados

 OPERADORES DE RELACIÓN

Realizan comparaciones entre datos compatibles de tipos primitivos (numéricos, carácter y booleanos) teniendo siempre un resultado booleano. Los operandos booleanos sólo pueden emplear los operadores de igualdad y desigualdad.
Operadores de relación
Operadores de relación
Todos los valores numéricos que se comparan con NaN dan como resultado false excepto el operador != que devuelve true. Esto ocurre incluso si ambos valores son NaN.

 OPERADORES LÓGICOS O BOOLEANOS

Realizan operaciones sobre datos booleanos y tienen como resultado un valor booleano. En la siguiente tabla se resumen los diferentes operadores de esta categoría.
Operadores booleanos
Operadores booleanos
Para mejorar el rendimiento de ejecución del código es recomendable emplear en las expresiones booleanas el operador && en lugar del operador &. En este caso es conveniente situar la condición más propensa a ser falsa en el término de la izquierda. Esta técnica puede reducir el tiempo de ejecución del programa. De forma equivalente es preferible emplear el operador || al operador |. En este caso es conveniente colocar la condición más propensa a ser verdadera en el término de la izquierda.

 EL OPERADOR CONDICIONAL

Este operador ternario tomado de C/C++ permite devolver valores en función de una expresión lógica. Sintaxis:
expresionLogica ? expresion_1 : expresion_2
Si el resultado de evaluar la expresión lógica es verdadero, devuelve el valor de la primera expresión, y en caso contrario, devuelve el valor de la segunda expresión.
Operador condicional
Operador condicional
La sentencia de asignación:
valor = (expresionLogica ? expresion_1 : expresion_2);`
como se verá más adelante es equivalente a:
if (expresionLogica)
    valor = expresion_1;
else
    valor = expresion_2

 OPERADORES DE BIT

Tienen operandos de tipo entero (o char) y un resultado de tipo entero. Realizan operaciones con dígitos (ceros y unos) de la representación binaria de los operandos. Exceptuando al operador negación, los demás operadores son binarios. En la siguiente tabla se resumen los diferentes operadores de esta categoría.
Operadores de bit
 Operadores de bit

OPERADOR CONCATENACIÓN DE CADENAS

El operador concatenación +, es un operador binario que devuelve una cadena resultado de concatenar las dos cadenas que actúan como operandos. Si sólo uno de los operandos es de tipo cadena, el otro operando se convierte implícitamente en tipo cadena.
Operador concatenación
Operador concatenación

 SEPARADORES

Existen algunos caracteres que tienen un significado especial en el lenguaje Java. En la siguiente tabla se resumen los diferentes separadores que pueden encontrarse en el código fuente de un programa.
Separadores en Java
Separadores en Java

 EXPRESIONES

Una expresión es una combinación de operadores y operandos que se evalúa generándose un único resultado de un tipo determinado.

 PRIORIDAD ENTRE OPERADORES

Si dos operadores se encuentran en la misma expresión, el orden en el que se evalúan puede determinar el valor de la expresión. En la siguiente tabla se muestra el orden o prioridad en el que se ejecutan los operadores que se encuentren en la misma sentencia. Los operadores de la misma prioridad se evalúan de izquierda a derecha dentro de la expresión.
Prioridad de los operadores

VARIABLES:

Las variables Java son un espacio de memoria en el que guardamos un determinado valor (o dato). Para definir una variable seguiremos la estructura:
[privacidad] tipo_variable identificador;
Java es un lenguaje de tipado estático. Por lo cual todas las variables tendrán un tipo de dato (ya sea un tipo de dato primitivo o una clase) y un nombre de identificador.
El tipo de dato se asignará a la hora de definir la variable. Además, en el caso de que las variables sean propiedades de objetos tendrán una privacidad.
Ejemplos de variables serían…
int numero = 2;
String cadena = "Hola";
long decimal = 2.4;
boolean flag = true;
Las variables son utilizadas como propiedades dentro de los objetos.
class Triangulo {
    private long base;
    private long altura;
}
No te preocupes por el concepto de objeto, ya que lo revisaremos más adelante cuando hablemos de la Programación Orientada a Objetos

Tipos de variables en Java

Dentro de Java podemos encontrar los siguientes tipos de variables:
  • Variables de instancia (campos no estáticos), son las variables que están definidas dentro de un objeto pero que no tienen un modificador de estáticas (static). Suelen llevar un modificador de visibilidad (public, private, protected) definiéndose.
class Triangulo {
    private long base;
    private long altura;
}
  • Variables de clase (campos estáticos), son aquellas variables que están precedidas del modificador static. Esto indica que solo hay una instancia de dicha variable. Es decir, aunque tengamos N objetos de la clase, la variable estática solo se instancia una vez.
class Triangulo {
    static long lados = 3;
}
Si además queremos que el valor no pueda cambiar nunca la definiremos como final.
class Matematicas {
    final static long PI = 3.14159;
}
  • Variables locales, son variables temporales cuyo ámbito de visibilidad es el método sobre el que están definidas. No pueden ser accedidas desde otra parte del código. Se las distingue de las variables de instancia ya que estas no llevan modificadores de visibilidad delante.
int variable = 2;
  • Parámetros, son las variables recibidas como parámetros de los métodos. Su visibilidad será el código que contenga dicho método.
public Triangulo(long base, long altura){...}

Nombres de las variables Java

Cuando vayamos a dar un nombre a una variable deberemos de tener en cuenta una serie de normas. Es decir, no podemos poner el nombre que nos dé la gana a una variable.
Los identificadores son secuencias de texto unicode, sensibles a mayúsculas cuya primer carácter solo puede ser una letra, número, símbolo dolar $ o subrayado _ . Si bien es verdad que el símbolo dolar no es utilizado por convención.
Es recomendable que los nombres de los identificadores sean legibles y no acrónimos que no podamos leer. De tal manera que a la hora de verlos se auto-documenten por sí mismos. Además estos identificadores nunca podrán coincidir con las palabras reservadas.
Algunas reglas no escritas, pero que se han asumido por convención son:
  • Los identificadores siempre se escriben en minúsculas. (pe. nombre). Y si son dos o más palabras, el inicio de cada siguiente palabra se escriba en mayúsculas (pe. nombrePersona)
  • Si el identificador implica que sea una constante. Es decir que hayamos utilizado los modificadores final static, dicho nombre se suele escribir en mayúsculas (pe. LETRA). Y si la constante está compuesta de dos palabras, estas se separan con un subrayado (pe. LETRA_PI).

1 comentario: