Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/05/2015, 14:45
BanNsS1
 
Fecha de Ingreso: junio-2009
Mensajes: 101
Antigüedad: 14 años, 11 meses
Puntos: 13
Respuesta: convertir objeto en primitivo

un int solo puede tomar valores enteros de hasta 32 bits.

Si tu objeto sólo tiene una variable estática entera, sí, puedes transformarlo:

Código Java:
Ver original
  1. public class Poligono {
  2.     private final int num_lados;
  3.    
  4.     public Poligono(int num_lados){
  5.         this.num_lados = num_lados;
  6.     }
  7.    
  8.     public int getNumLados(){
  9.         return this.num_lados;
  10.     }
  11.    
  12.    
  13. }

Código Java:
Ver original
  1. [...]
  2. public void run(){
  3.     Poligono obj_cuadrado = new Poligono(4);
  4.    
  5.     int prim_cuadrado = obj_cuadrado.getNumLados();
  6.  
  7. }
  8. [...]

Supongamos que la variable del objeto no fuera un int y lo quisieras pasar a int.

LONG A INT: Aquí tendrías que hacer un CAST (mutilación ya que LONG es de 64bits e INT es de 32):
Código Java:
Ver original
  1. int prim_cuadrado = (int) obj_cuadrado.getNumLados();

BYTE O SHORT A INT: Como byte y short son ambos SIGNED (como INT) y son de menor longitud que INT (8 y 16 respectivamente), simplemente se establece el numero en los bits más a la derecha y se extiende el signo en el resto de bits. Puedes hacerla de forma normal.

CHAR A INT: Ésta es algo más complicada de entender. Char es UNSIGNED pero Int es SIGNED. Java establece los números en complemento a 2. El primer numero indica el signo.
Pero, si no tiene signo y el CHAR fuera 255 (11111111), extendería ese 1 situando el valor a (2^16)-1? No, en este caso Java es inteligente y simplemente lo rellena de ceros.
Puedes hacerla tambien de forma normal.

Última edición por BanNsS1; 06/05/2015 a las 14:57