|
Introducción a Java |
Otros elementos de sintaxis
Existen más pequeños ladrillos con los que se construye el lenguaje, que veremos a continuación.
Identificadores
Un identificador es un nombre que le damos a un elemento, es decir, una clase, un método, una propiedad... Java distingue entre mayúsculas y minúsculas y los identificadores pueden comenzar por una letra, un subrayado o un símbolo de dolar, siendo los siguientes caracteres letras o dígitos. Por ejemplo, son identificadores válidos:
contador _nombre_usuario $dinero
Operadores
Los operadores sirven para unir identificadores y literales para formar expresiones, que son el resultado de una operación. Los de Java son muy parecidos a los de C y C++.
Java dispone de los operadores aritméticos clásicos y algún que otro más:
| Descripción | Símbolo | Expresión de ejemplo | Resultado del ejemplo |
|---|---|---|---|
| Multiplicación | * | 2*4 | 8 |
| Resto de una división entera | % | 5%2 | 1 |
| Suma | + | 2+2 | 4 |
| Resta | - | 7-2 | 5 |
| Incremento | ++ | 2++ | 3 |
| Decremento | -- | --2 | 1 |
| Menos unario | - | -(2+4) | -6 |
Los operadores de incremento y decremento merecen una explicación auxiliar. Se pueden colocar tanto antes como después de la expresión que deseemos modificar pero sólo devuelven el valor modificado si están delante. Me explico.
a = 1; b = ++a;
En este primer caso, a valdrá 2 y b 2 también. Sin embargo:
a = 1; b = a++;
Ahora, a sigue valiendo 2, pero b es ahora 1. Es decir, estos operadores modifican siempre a su operando, pero si se colocan detrás del mismo se ejecutan después de todas las demás operaciones.
Normalmente los lenguajes tienen un único operador de asignación, que en Java es el símbolo =. Pero en este lenguaje, dicho operador se puede combinar con operadores aritméticos para dar los siguientes de modo que se realice una operación antes de asignar. Así, por ejemplo
a /= bes equivalente a
a = a / b
Existen esos operadores combinados para la suma (+=), resta (-=), división (/=), multiplicación (*=) y resto (%=).
Los operadores de comparación toman dos cantidades numéricas y las comparan, devolviendo un valor lógico que será true si la comparación fue exitosa y false en caso contrario. Podemos usar los siguientes:
| Descripción | Símbolo | Expresión de ejemplo | Resultado del ejemplo |
|---|---|---|---|
| Igualdad | == | 2==2 | true |
| Desigualdad | != | 2!==2 | false |
| Menor que | < | 2<2 | false |
| Mayor que | > | 3>2 | true |
| Menor o igual que | <= | 2<=2 | true |
| Mayor o igual que | >= | 1>=2 | false |
Los operadores lógicos permiten evaluar expresiones lógicas complejas:
| Descripción | Símbolo | Expresión de ejemplo | Resultado del ejemplo |
|---|---|---|---|
| Negación | ! | !(2==2) | false |
| Y lógico | && | (2 == 2) && (2 >= 0) | true |
| O lógico | || | (2 == 2) || (2 != 2) | true |
Existen otros operadores La concatenación de cadenas, por ejemplo, se realiza con el símbolo +. El operador condicional tiene esta estructura:
condicion ? valor1 : valor2
Si la condición se cumple devuelve el primer valor y, en caso contrario, el segundo. El siguiente ejemplo asignaría a la variable a un 2:
int a = 2 > 3 ? 1 : 2
Como podéis ver no resulta muy legible. Huid de este operador como de la peste. Evitad la tentación. Procurad no usarlo. Yo he tenido que descifrar código escrito por mí un par de meses antes que tenía esta clase de operadores, a veces incluso anidados. Todavía tengo escalofríos al recordarlo.
Separadores
Existen otros caracteres con significado especial en Java. Son los separadores:
| Separador | Descripción |
|---|---|
| () | Contienen listas de parámetros, tanto en la definición de un método como en la llamada al mismo. También se utilizan para modificar la precedencia en una expresión, contener expresiones para control de flujo y realizar conversiones de tipo. |
| {} | Se utilizan para definir bloques de código, definir ámbitos y contener los valores iniciales de los vectores. |
| [] | Se utiliza tanto para declarar vectores o matrices como para referenciar valores dentro de los mismos. |
| ; | Separa sentencias. |
| , | Separa identificadores consecutivos en la declaración de variables y en las listas de parámetros. También se utiliza para encadenar sentencias dentro de una estructura for. |
| . | Separa un nombre de propiedad o método de una variable de referencia. También separa nombre de paquete de los de un subpaquete o una clase. |
















































