Está en la página 1de 31

Tipos de Datos en Java

Ingeniería de sistemas
CAPACIDAD y CLASIFICACION
A todo dato (constante, variable o expresión) le corresponde un tipo específico en Java. Como se
ha indicado anteriormente un tipo de dato determina los valores que pueden asignarse a un dato, el
formato de representación correspondiente y las operaciones que pueden realizarse con dicho
dato.
En Java casi todo es un objeto. Existen algunas excepciones como, por ejemplo, los tipos
primitivos, tales como int, char, etc., que no se consideran objetos y se tratan de forma
especial. Java tiene un conjunto de tipos primitivos para representar datos enteros (cuatro tipos
diferentes), para datos numéricos reales en coma flotante (dos tipos diferentes), para caracteres y
para datos lógicos o booleanos. Cada uno de ellos tiene idéntico tamaño y comportamiento en
todas las versiones de Java y para cualquier tipo de ordenador. Esto implica que no hay directivas
de compilación condicionales y asegura la portabilidad de los programas a diferencia de lo que
ocurre, por ejemplo, con el lenguaje de programación C.
 Por otro lado, a partir de estos tipos primitivos de dato pueden construirse otros tipos de datos
compuestos, arrays, clases e interfaces. En la siguiente tabla se muestran los tipos de dato primitivos de Java
con el intervalo de representación de valores que puede tomar y el tamaño en memoria correspondiente.
Tipos de Datos en Java
1. Variable: Es un espacio de memoria reservado para almacenar un valor, dicho valor va cambiando durante el
flujo de un programa.
2. Constante: Es similar a una variable, sin embargo la constante no asignará un valor al inicio de un programa y
este no cambiará durante el flujo de un programa.

 Nota: El espacio de memoria reservado dependerá del tipo de variable, estos tipos y su peso (espacio que
ocupan) depende del lenguaje en el que se declaren.
Datos Primitivos.
 Son aquellos tipos de datos que pueden utilizarse directamente en un programa sin necesidad de utilizar POO.
pueden ser divididos en dos grupos:

1. Boléanos.

2. Numéricos.
Datos No Primitivos (Objetos).
 Incluyen todos los tipos de datos que pueden ser instanciados a partir de las clases.

 Los objetos, a diferencia de los tipos primitivos, representan un conjunto de datos como una única unidad
que además posee estados y comportamientos.

Declaración de una variable. 

 Tipo de dato identificador = [valor][, identificador] [=valor]… ;

Ejemplos:

int contador = 1;

int contador = 1, suma = 0, promedio = 0;


Datos numéricos primitivos.
 
byte:
 Almacena datos de tipo entero de tamaño 8 bits. intervalo de valores entre el -128 y + 127.
Ejemplo:
byte a = 1+1*2;

short:
 Tiene una capacidad de 16 bits y permite almacenar un valor entero entre -32768 y +32767 (al igual que el
entero en C).
Ejemplo:
short a = 0, b=0;
Datos numéricos primitivos.
int:
 El tipo de dato entero tiene una capacidad de 32 bits y permite almacenar un valor entero entre -2147483648
y +2147483647.
Ejemplo: int a = 0;
int b= 0;

long:
 Tiene una capacidad de 64 bits y permite almacenar un valor entero entre -9.223.372.036.854.775.808 y
+9.223.372.036.854.775.809.
Ejemplo: long a = 100;
Datos numéricos primitivos.
float:
 Tiene una capacidad de 32 bits y permite almacenar un valor real en coma flotante (decimales) entre -3,4*10 -
38
hasta 3,4*1038 . Los valores expresados en float deben ir acompañados de una letra f minúscula al final.

Ejemplo: float a = 100f;


double:
 Tiene una capacidad de 64 bits y permite almacenar un valor real entre -1,7*10 -308 y +1,7*10308. Es el tipo de
dato que asume Java al escribir un real, por ello no va acompañado de ningún carácter como en el caso del
float.

Ejemplo: double a = 100;


boolean:
 El tipo de dato booleano es utilizado para conocer el resultado de una evaluación booleana, los dos posibles
valores son true (verdadero) y false (falso).
 Si su valor de inicio no es especificado, el valor por defecto es false.
Ejemplo: boolean a = true;
char:
 Tipo de datos que permite almacenar un caracter, sin embargo el valor que en realidad almacena es un entero
equivalente entre los valores del 0 al 127 de la tabla de caracteres ASCII. La forma de declarar un char es la
siguiente:
Ejemplo: char letra1 = ‘a’; char letra2= 97;
Datos no numéricos no primitivos.

String:

 Es en realidad una clase, que almacena como atributo un arreglo de caracteres. No es un tipo de dato
primitivo, su uso es muy habitual en los programas y adicionalmente se puede utilizar de la misma forma en
la que se declaran los tipos primitivos.

Ejemplo:
String palabra1 = “iceberg”;
Representación de sentencias de instrucciones.

• Operación de entrada.
• Operación de salida.
• Operación de asignación.
• Operadores aritméticos: son
aquellos que permiten
realizar operaciones
matemáticas y son:
Conversión entre tipos.
 En Java existen dos tipos de conversiones, la implícita y explicita.

 La implícita es aquella que no necesita de alguna intervención por parte del programador para que se lleve a
cabo, siendo Java el encargado de realizarla.
 El ejemplo más común es la operación aritmética de dos tipos de datos distintos, ¿en una variable de qué tipo
debo almacenar el resultado entre la suma entre un float y un double?
Conversión entre tipos.
 Java siempre dará como resultado el tipo más grande, con ello se asegura de que no exista perdida de
precisión en el resultado.

 La conversión implícita es aplicada en la dirección de izquierda a derecha entre los datos presentados en el
siguiente diagrama, lo que significa que un byte, puede almacenarse en una variable de tipo short o char o
cualquiera de las 3 puede almacenarse en un int.
Conversión entre tipos.
 La conversión explícita o también conocida como cast consiste en forzar la conversión entre un tipo de dato
a cualquier otro (excepto desde booleanos a enteros o reales), la sintaxis para realizar una conversión
explicita es la siguiente:

 (Tipo destino) expresión o variable


A=(int)promedio;
 En el siguiente ejemplo, se convierte una expresión que da como resultado un float (debido a que es más
grande que un short y un long) en un entero, dando como resultado el valor de 3.
Conversión entre tipos.
 Muchas veces se piensa que el resultado es 4, debido a que la suma de las tres variables da en realidad 3.8f
sin embargo convertir este resultado a un entero no implica una aproximación, sino que sólo tomar la parte
entera del valor resultante (también conocido como truncar datos)
Vida y ámbito de una variable
 Las variables cuando son declaradas, tienen lo que se conoce como un ámbito, el cual

define las fronteras dentro de las cuales las variables pueden ser utilizadas.

 Tradicionalmente la programación estructurada tiene dos niveles de visibilidad

distintos: las variables locales y globales, sin embargo en la programación orientada a

objetos el ámbito de una variable dentro de una clase es algo más complejo.

 Las variables siempre deben ir dentro de una estructura que los contenga, para cada

estructura existe un inicio y cierre de bloque que la delimita.


 Como ejemplo la siguiente imagen muestra una clase con su respectivo inicio y cierre de bloque.

Ejemplo: public class Persona{ }

 La clase Persona posee además un comportamiento llamado correr y descansar, los cuales también tienen
limitado su bloque. Podemos decir entonces que la clase Persona contiene dentro un comportamiento llamado
correr y descansar.

Ejemplo:

 public class Persona{


 public void correr(){}
 public void descansar(){ } }
 En este caso, la variable cansancio es una variable de instancia debido a que está definida dentro de la clase,
pero fuera de sus comportamientos, por ende los métodos descansar y correr (que también son parte de la
clase) tienen visibilidad sobre cansancio, aumentando en este caso su valor al correr y disminuyéndola al
descansar.
 public class Persona{
 private int cansancio=0;
 public void correr(){
cansancio = cansancio + 1;
}
 public void descansar(){
cansancio = cansancio – 1;}
}
 El ámbito de una variable siempre dependerá de del lugar donde se produzca su declaración, por ejemplo, ya
vimos que si declaramos la variable dentro de los bloques que limitan la clase persona, pero fuera de correr o
descansar, la variable se denomina una variable de instancia y está disponible para todos los métodos que la
clase contenga.

 En el siguiente ejemplo la variable cansancio es ahora una variable declarada dentro del comportamiento
correr, esto se denomina variable local del método.

 Para este caso la visibilidad de dicha variable son los límites donde fue declarada, vale decir el inicio y
bloque de correr, el siguiente ejemplo causa un error debido a que descansar no tiene una visibilidad sobre
la variable cansancio.
Vida y ámbito de una variable

 public class Persona{


 public void correr(){
 int cansancio=0;
 cansancio = cansancio + 1;
}
 public void descansar(){

cansancio = cansancio – 1; => ERROR!!!


}
IMPORTANTE.

 Las variables de instancia son capaces de mantener el valor durante toda la vida de un objeto, sin embargo las
declaradas dentro de un comportamiento son creadas, utilizadas y eliminadas al finalizar la ejecución del
comportamiento que la contiene.
 También es posible crear límites dentro de los comportamientos correr, si bien la técnica que se presenta en el
siguiente no es muy común, es reconocida por el lenguaje Java.
 public class Persona{
 public void correr(){
{
int a;
}
int a;
Vida y ámbito de una variable

En el segmento de código anterior se muestran dos casos a considerar. En el interior del método correr existe una
delimitación dentro que contiene la declaración de una variable entera cuyo identificador es “a”, sin embargo al
terminar el límite donde fue declarada la variable ha vuelto a ser declarada, a primera vista da la idea de que correr
tiene dos variables llamadas “a”, pero sabemos que eso es imposible. Recordemos que el identificador de una
variable debe ser único en un mismo ámbito, lo que en realidad sucede es que la variable que se declara primero
tiene una vida útil desde que se declara hasta el cierre de bloque en el que fue declarada, por ende al ser declarada
la segunda variable llamada “a”, la primera ya ha sido eliminada.
 En descansar en cambio, se produce un error debido a que se declara primero una variable entera dentro de
los límites del comportamiento descansar, lo que provoca que también esté disponible para el ámbito que
existe en el interior del método, por lo tanto, en el ámbito interior, no es posible declarar la variable entera
con el identificador “a”, debido a que ya existe en él.
 Los operadores aritméticos son aquellos que permiten realizar operaciones matemáticas y son:
Operadores Aritméticos.
 El siguiente ejemplo muestra una operatoria
aritmética que incluye una conversión explicita
cuyo resultado es 4:

 long resultado = ( long ) ( (8%3) * 2.1);


 Operadores unarios y de auto asignación

 Este tipo de operadores son una forma reducida de


utilizar los operadores aritméticos tradicionales.
Operadores unarios y de auto asignación
 Debes prestar especial atención cuando uses los operadores -- y ++ dentro de una expresión aritmética,
debido a que el orden en el que se utilizan cambia el resultado de la operación. -- y ++ pueden ser utilizados
como sufijos o como prefijos, lo que implica la jerarquía con la que se ejecuta, por ejemplo, en este caso ++
está antes de la variable “a” lo que implica que previo a cualquier operación que vaya ejecutarse sobre él la
prioridad es incrementarlo en 1, siendo el resultado para este caso igual a 6 dado que a es 1 antes de ejecutar
la suma.
Operadores Lógicos
Relacionales
 Se usan para formar expresiones booleanas, es decir expresiones que al ser evaluadas producen un valor
booleano: verdadero o falso. Se utilizan para establecer una relación entre dos.
Relacionales (continuación)
 Cuando la comparación se hace con datos alfanuméricos, opera de acuerdo a las siguientes reglas:
• Se compara uno a uno de izquierda a derecha.
• Si son de diferente longitud pero exactamente iguales hasta el último carácter del más corto, entonces el más
corto es el menor.
• Sólo son iguales dos datos alfanuméricos si son iguales su contenido y su longitud.
• Las letras minúsculas tienen mayor valor que las mayúsculas. (tabla ascii)
Booleanos:
 Combinan sus operandos de acuerdo al álgebra de Boole para producir un nuevo valor que se convierte en el
valor de la expresión.

||
 OR u O: es un operador binario, afecta a dos operadores. La expresión que forma es verdadera cuando al
menos uno de sus operandos es verdadero. Es un operador de disyunción (suma lógica). Ejemplo:
estudiamos o vamos al estadio
&&
 AND o Y. También es un operador binario. La expresión formada es cierta cuando ambos operadores son
ciertos al mismo tiempo. Es el operador lógico de conjunción (producto lógico) Ejemplo: si es verano y hace
calor vamos a la playa.

!
 NOT o NO. Es un operador unario, afecta a un solo operando. Cambia el estado lógico de la expresión
(negación); si es verdadera la transforma en falsa y al revés. Ejemplo: no es verano.
El orden de prioridad de estos operadores es: !, && y ||.
Ingeniería de
sistemas

También podría gustarte