viernes, 8 de agosto de 2014

Variables primitivas en Java

A pesar de que Java es un lenguaje orientado a objetos, existen también unos tipos de datos que no son objetos; se conocen como variables primitivas. Éstas variables almacenan datos puntuales, como por ejemplo números, a diferencia de los objetos que almacenan datos complejos. Estas variables se almacenan en la memoria Stack.

Los 8 tipos de datos primitivos que Java nos ofrece son:


                       
                       
               
           
            
Un momento, ¿Dónde está el String? En java,  String es una clase especial, no hace parte de los datos primitivos. La manera en que se declara en inicializa una variable primitiva es:

[modificador de acceso]   [static] [final]  tipo_de_dato  nombre_de_la_variable = valor;

No es indispensable escribir el modificador de acceso; cuando se omite, se toma como default (package), de otro modo puede ser: public, protected o private.

El modificador static tampoco es obligatorio ponerlo; lo mismo sucede con final.
Nótese como se inician en minúscula, dado que no son objetos. Sin embargo existe una manera de tratarlos como tales, pero por lo pronto los veremos como un grupo separado de los objetos.


byte

Las variables de tipo byte no se suelen usar para realizar cálculos numéricos dada su limitada capacidad de almacenamiento. A pesar de que su uso en reemplazo del int puede devengar en un ahorro de memoria, los ordenadores actuales traen consigo cantidades grandes de memoria y no se ven afectadas por el uso de variables de tipo int.

byte b1 = 2; 
byte b2 = -0;          // Java lo toma = 0
byte b3 = '\n';        // Valor Unicode (UTF-16) del salto de línea (10)
byte b4 = 022;         // Número en octal, (18 en decimal)
byte b5 = 0xF;         // Número en hexadecimal ( 15 en decimal)


byte b6 = 999;         // Error de compilación, 999 excede el dominio de byte

Nótese como las variables de tipo byte pueden almacenar algo más que simple números.


short

Si nos fijamos en la tabla al inicio del post, notaremos como las variables short tienen una capacidad de almacenamiento mayor que los byte, sin embargo para gran parte de las aplicaciones en el mercado esta capacidad se queda corta, por lo que es más usual emplear los int.

short s1 = 999; 
short s2 = -0;          // Java lo toma = 0
short s3 = '\n';        // Valor Unicode (UTF-16) del salto de línea (10)
short s4 = 0b1001101;   // Número en binario (77 en decimal)
short s5 = 0xF;         // Número en hexadecimal ( 15 en decimal)


short s6 = 32768;       // Error de compilación,se excedió el dominio de short



int

Es el tipo de dato más común cuando de manejar números enteros se trata, la capacidad de almacenamiento es suficiente para casi todas las situaciones.

int i1 = 930489; 
int i2 = -0;          // Java lo toma = 0
int i3 = '\n';        // Valor Unicode (UTF-16) del salto de línea (10)
int i4 = 022;         // Número en octal, (18 en decimal)
int i5 = 0xF;         // Número en hexadecimal ( 15 en decimal)

/*El underscore en medio de dos digitos no genera error, sirve de guía visual 
para el progamador cuando son números muy largos. Al momento de imprimir no aparece*/
int i6 = 326_832;       


long

Cuando en java escribimos un número entero, por ejemplo 354, éste será tomado por defecto como un int a no ser que explícitamente le digamos de que tipo. Las variables tipo long sólo se recomiendan usarlas cuando se trabaje con números realmente grandes.




/**Java por defecto toma el 34 como un int, pero automaticamente hace algo
denominado  promoción y lo trata como un long **/
long m1 = 34;               
                            
/**Lo ideal es colocar la L, al final del número para indicar que 
se trata de un long. También se puede la "l" minúscula pero
no se recomienda por su parecido con un 1**/
long m2 = 34L;              


/**Error de compilación, el numero que le asignamos sobrepasa el alcance del int,
entonces se hace necesario colocar L al final para que de antemano trate 
el numero como long**/
long m3 = 2147_483_648;     


float y double

Si deseamos trabajar con números decimales, Java nos ofrece estos dos tipos de datos primitivos. Por defecto los decimales son tomados como double, es decir, el número 10.43 será tratado como un double, si queremos que lo trate como un float debemos escribirlo de este modo 10.43f.
Se recomienda usar double sólo cuando los números sean realmente grandes e importe la precisión en los decimales, por ejemplo en aplicaciones matemáticas, etc.


/**Java por defecto toma el 324 como un int, pero automaticamente hace algo
denominado  promoción y lo trata como un float **/
float f1 = 324;               
                            
/**Lo ideal es colocar la f, al final del número para indicar que 
se trata de un float.**/
float f2 = 324f;              


/**Error de compilación, al escribir 23.41 Java cree que es un double, en
este caso no lo puede tratar automaticamente como float, por lo que se 
hace necesario escribir la f al final**/
float f3 = 23.41;

/**Java por defecto toma el 665 como un int, pero automaticamente hace algo
denominado  promoción y lo trata como un double **/
double d1 = 665;

double d2 = 19.8;     // Ningún error de compilación
double d3 = 32.22;    // Ningún error de compilación

/** A pesar de que se le dice explícitamente que lo trate como float
Java hace la promoción y lo trata como double*/
double d4 = 57.3f;   
     


boolean

Los datos de tipo boolean sólo pueden contener dos valores, true o false, sin embargo esto no significa que explicitamente se deba escribir alguno de esos valores.


/** OK **/
boolean b1 = true;

/** dado que 3>2 es verdad entonces b2 vale true**/
boolean b2 = 3>2;

 

char

Para finalizar el post, hablaremos un poco de las variables tipo char. En primer lugar, y dado que la capacidad de almacenamiento de éstas es de 2 bytes, es posible darle valores numéricos enteros que se encuentren en el rango de [0,65536). Cuando se le asigna un número entero comprendido en ese rango a una variable, dicho valor corresponde a un caracter Unicode (UTF-16), por lo cual si se imprime la variable se verá en pantalla el símbolo.

/**  **/
char c1 = 169;    // ©
char c2 = 0xA3;   // £
char c3 = '썐';   // Debe ir entre comillas sencillas cuando se escribe el caracter

char c4 = 'sd';   // Error de compilación, sd conforman varios caracteres y no uno.
char c5 = "d";    // Error de compilación, se debe usar comillas sencillas ''

 

No hay comentarios:

Publicar un comentario