Podriamos decir que existen dos tipos de asignaciones, las normales, de toda la vida (A=4;) y las asignaciones de objetos (instancias de una clase). Entonces la cosa cambia… Si hago A=B y ambos son objetos, lo que hago es asignar las referencias de A y B. Por lo que a partir de ahora ambas referencias (tanto A como B) apuntan al mismo objeto. Por lo que…. Exacto, a partir de ahora cada vez que cambie el valor de A cambio el valor de B. Osea, es como si le digera al programa. Ehh, que tienes dos objetos iguales, tira uno y quedate con el otro, síguele llamando A o B como te de la gana, pero pa'que tener dos iguales? Ten uno con dos nombres.
// Asignacion.java
// Ejemplo de asignacion y como funciona
class Numero{
int i;
}
public class Asignacion {
private static void escribe(String a){
System.out.println(a);
}
public static void main(String args[]){
Numero n1 = new Numero();
Numero n2 = new Numero();
n1.i = 9;
n2.i = 18;
escribe("1: n1 = " + n1.i + " n2.i = " + n2.i);
n1.i=32;
escribe("2: n1 = " + n1.i + " n2.i = " + n2.i);
n1 = n2; // aqui igualo los dos objetos
escribe("3: n1 = " + n1.i + " n2.i = " + n2.i);
// a partir de aqui cualquier cambio será visible para n1 y n2
n1.i=88;
escribe("4:n1 = " + n1.i + " n2.i = " + n2.i);
}
}
Y a por los operadores… Como que soy un poco gandul y considero que ya sabes lo que hacen y no quiero poner ejemplo por ejemplo los voy a poner todos seguidos en un mismo ejemplo. Que como que no eres tonto y no tienen ningún misterio ya vale. Por supuesto hay mas, pero por el momento ya tienes suficiente
//Operadores.java
// Ejemplo de operadores en java
public class Operadores{
private static void escribe(String a){
System.out.println(a);
}
static void autoincremento(){
escribe("autoincremento:");
int i =1;
escribe("1. i= " + i);
i++;
escribe("2. i++= " + i);
++i;
escribe("3. ++i= " + i);
i--;
escribe("1. i--= " + i);
--i;
escribe("1. --i= " + i);
escribe("1. -i= " + -i);
}
static void relacionales(){
int x= 2;
int z=4;
escribe("autoincremento:");
escribe("numero x = "+x+" numero z = "+z);
escribe("1. numero x = numero z (x==z)?" + (x==z)); // fijate como hay que hacerlo
Integer a = new Integer(12); // para concatenar una cadena con un boleano
Integer b = new Integer(12); // si no se quejara...
escribe("1. objeto a ( " + a + ")= objeto b ("+b+")(a==b)?" + (a==b));
escribe("1. objeto a ( " + a + ")equals objeto b ("+b+")(a.equals(b))?" + (a.equals(b)) );
}
static void logicos(){
int x= 2;
int z=4;
boolean a = true;
boolean b = false;
escribe("Lógicos:");
escribe("numero x = "+x+" numero z = "+z);
escribe("1. numero x = numero z (x==z)?" + (x==z));
escribe("2. numero x menor que numero z (xz)?" + (x==z));
escribe("4. numero x o numero z (x||z) ==> da error un numero no es un boleano");
escribe("5. BOLEANO a(true) o BOLEANO b(false) (a||b) "+(a||b));
escribe("7.BOLEANO a(true) y BOLEANO b(false) (a&&b) "+(a&&b));
}
static void conversiones(){
int x= 2;
long l = (long)x;
escribe("las conversiones primitivas se hacen asi:");
escribe("int x = 2;\n long l = (long)x;\n long l2= (long)2;");
escribe("Pero las clases ya son harina de otro costal.");
escribe("El caso String ya lo hablaremos mas adelante.");
}
public static void main(String args[]){
autoincremento();
escribe("-----------------");
relacionales();
escribe("-----------------");
logicos();
escribe("-----------------");
conversiones();
}
}