Ejemplos de código - Operadores

A continuación dejo unos ejemplos de código con explicaciones. Estos ejemplos surgieron a partir de la realización de los ejercicios del capítulo 4 (Operators) del libro "Sun Certified Programmer for Java 6 Study Guide".
Para ver el post con el resumen de dicho capítulo haz click aquí.
Cada ejemplo tiene un link para visualizar el código original desde el proyecto (SVN) google.

EJEMPLO 1 (Ver código original)

01. public class Feline {
02. public static void main(String[] args) {
03. Long x = 42L;
04. Long y = 44L;
05. System.out.print(" " + 7 + 2 + " ");
06. System.out.print(foo() + x + 5 + " ");
07. System.out.print(x + y + foo());
08. }
09. static String foo() { return "foo"; }
10. }
/*
SALIDA:
72 foo425 86foo
*/

Las concatenaciones se ejecutan de izquierda a derecha. Se pueden realizar concatenaciones entre diferentes tipos de operandos, es decir, se pueden concatenar tipos primitivos con objetos o viceversa (una concatenación de un objeto se traduce en el llamado al método toString(), para ver una explicación más detallada de la concatenación de objetos ver el ejemplo ConcatenacionObejtos.java).
En resumen, si el primer operando de una concatenación es un String se tomarán todos los siguientes como cadenas (línea 5 y 6). En caso contrario, se realizarán todas las operaciones de adición hasta que aparezca la primer cadena de caracteres, la cuál provocará que se tome todos los demás valores como cadenas (línea 7).

EJEMPLO 2 (Ver código original)

01. public class SpecialOps {
02. public static void main(String[] args) {
03. String s = "";
04. Boolean b1 = true;
05. Boolean b2 = false;
06. if((b2 = false) | (21%5) > 2) s += "x";
07. if(b1 || (b2 = true)) s += "y";
08. if(b2 == true) s += "z";
09. System.out.println(s);
10. }
11. }
/*
SALIDA:
y
*/

En la línea 6 la primera expresión es una asignación (b2 = false). El resultado de cualquier expresión de asignación es el valor de la variable después de la asignación. La sustitución del operador == por = funciona solo con las variables booleanas (debido a que el bloque if solo puede comprobar expresiones booleanas).

En el caso de una variable de tipo int, por ejemplo:
int x = 0;
if (x = 2) {}
El código anterior daría un error de compilación, ya que el resultado de la asignación sería el valor 2. Un valor entero no puede ser utilizado donde se necesita un valor booleano.

0 comentarios:



Publicar un comentario en la entrada

Este blog dejo de ser mantenido el día 12/02/2010. Para cualquier consulta o comentario realizarlo a través del sitio http://onj2ee.blogspot.com/