You are on page 1of 8

LENGUAJE DE PROGRAMACION: JAVA

VARIABLES Y TIPOS DE DATOS EN JAVA


Antes de empezar con el tema de variables y tipo de datos en Java me gustaría hablar
sobre los tipos de datos y es que todos los lenguajes de programación implementan el uso
de tipos de datos, bueno, al menos todos los lenguajes que son fuertemente tipados, como
Java, tal vez en otro tutorial hablaremos de eso pero bueno en esencia y sin entrar mucho
en detalle los lenguajes fuertemente tipados obligan a que se declare el tipo de dato antes
de utilizar la variable (por ejemplo Java), mientras que los lenguajes no tipados o
dinámicos permite declarar y utilizar variables sin definir el tipo (por ejemplo PHP).
Continuando con el tema, los tipos de datos en Java definen el valor y rango de valores
que puede tomar una variable durante toda la duración de un programa, una variable es
un espacio en memoria, y a veces eso es un poco complicado de entender, pues bien una
variable lo que guarda es la dirección de memoria donde está el dato, más no el dato en
sí, una variable permite almacenar y recuperar de memoria por lo general números y
cadenas para utilizarlos en los programas que creamos, como lo hace? a partir de la
dirección de memoria donde se encuentra el dato a recuperar, una variable tiene nombre,
tipo y tamaño de almacenamiento (en bytes) en memoria.
En java tenemos algunos tipos de variables, no importa si ahora no entiendes esto, solo
recuerdalo de seguro lo entiendes cuando publiquemos sobre Programación Orientada a
Objetos:
 De Clase: Las variables de clase son aquellas que pertenecen a la clase y van
precedidas del modificador static, importante aclarar que lo que se almacene en
estas variables será compartido entre los objetos para esa clase.
 De Instancia: Este tipo de variables pertenecen al objeto que se crea y sus valores
corresponden al objeto, los valores no son compartidos son únicos para cada
instancia del objeto.
 Variables locales: Estas variables están definidas dentro de un método, se crean
cuando se utiliza el método y se destruyen cuando se ha ejecutado el código para
ese método.
Continuando con los tipos de datos en Java tenemos dos grandes grupos los Primitivos y
los Objeto o Referencia, de forma general los primitivos hacen referencia aquellos tipos
de datos que no son objetos.
Antes de hablar sobre los tipos de datos debemos saber diferenciar entre que es un objeto
y una clase:
Hemos realizado una primera incursión en Java pero para proseguir se nos hace
indispensable hablar de conceptos fundamentales de la programación orientada a
objetos: objetos y clases. Estos términos parecen resultarnos familiares.
En la vida diaria podemos pensar en objetos como una manzana o un libro y podemos
distinguir clases de cosas: por ejemplo clases de plantas. Sin embargo, en programación
el término objeto y el término clase no guardan una correlación exacta con el significado
de estas palabras en la vida diaria. Podemos buscar ciertas similitudes e incluso hacer
analogías didácticas. Pero no trates de buscar siempre equivalencias entre objetos y clases

1
en programación con objetos y clases de la vida diaria porque esa correspondencia exacta
no existe y te llevará a confusión. Al escribir un programa en un lenguaje orientado a
objetos tratamos de modelar un problema del mundo real pensando en objetos que forman
parte del problema y que se relacionan entre sí. Daremos ahora una primera definición de
objeto y clase, que tendremos que ir matizando conforme avancemos en el curso.

 Objeto: entidad existente en la memoria del ordenador que tiene unas propiedades
(atributos o datos sobre sí mismo almacenados por el objeto) y unas operaciones
disponibles específicas (métodos).

 Clase: abstracción que define un tipo de objeto especificando qué propiedades


(atributos) y operaciones disponibles va a tener.

Estas definiciones son quizás poco clarificadoras. Con un ejemplo vamos a entenderlo
mejor. En primer lugar, pensemos en un programa que trata de gestionar datos sobre los
vehículos de transporte público de una ciudad.

Una vez teniendo en claro que es un objeto y que es una clase procederemos a explicar
los Tipos de Datos.

LOS TIPOS DE DATOS PRIMITIVOS


En este grupo están todos los tipos de datos que no son objetos y que a su vez no se
derivan de una clase, además permiten almacenar un solo valor, sean enteros, reales o
caracteres, por ejemplo, una cadena: “Pedro” esta no entraría en este tipo de datos ya que
las cadenas pertenecen a la clase String. A continuación, te indico los tipos de datos
primitivos en Java:

2
TIPOS ENTEROS
Los tipos de datos enteros se dividen en cuatro grupos de acuerdo al rango de valores que
pueden almacenar es así que tenemos:
 byte: byte es el valor más pequeño en el que se puede almacenar una variable de
tipo entero, el rango que almacena va desde -128 hasta 127, es decir si deseamos
almacenar un valor como 200 el compilador dará error, el valor por defecto si no
se inicializa es de 0.
 short: También denominado entero corto, almacena un valor entero, pero en un
rango superior a byte, el rango de valores que puede almacenar va desde -32768
hasta 32767, su valor de inicialización por defecto es 0.
 int: int es el valor más utilizado por los programadores para almacenar valores
enteros su rango va desde -2147486648 hasta 2147486647, su valor de
inicialización por defecto es 0.
 long: long es utilizado cuando queremos almacenar valores enteros
extremadamente grandes, su rango va desde -9223372036854775808 hasta
9223372036854775807, su valor de inicialización por defecto es 0.
TIPOS REAL
Los tipos de datos real son aquellos que no se pueden representarse como un entero,
aquellos cálculos en los cuales necesitamos números como por ejemplo 0.50, 2.75, es
necesario usar ya sea float o double. En este tipo de datos encontramos:
 float: Este tipo es utilizado cuando necesitamos almacenar valores decimales,
float permite almacenar valores decimales, su valor de inicialización por defecto
es 0.0F. En una declaración de variable la F, no es imprescindible solo indica al
programador que esa variable almacena tipos de datos float.
 double: Permite almacenar valores decimales pero con doble precisión, su valor
de inicialización por defecto es 0.0D. En una declaración de variable la D, no es
imprescindible solo indica al programador que esa variable almacena tipos de
datos double.

TIPOS BOOLEANOS
Los tipos de datos boolean representan valores true (verdadero) false (falso) y son útiles
en nuestros programas, por defecto se inicializan con false.
TIPOS CHAR
Almacena caracteres por ejemplo ‘A’, su valor por defecto es 0, bueno y porque si es
caracter almacena un valor numérico, esto se da porque en realidad almacena su carácter
unicode, ejemplo cuando almacenamos ‘A’ lo que en realidad se almacena es su caracter
ASCII que es 65.

3
TIPOS DE DATOS OBJETO O REFERENCIA
En este grupo está la clase String que almacena datos alfanuméricos (texto, números,
caracteres especiales), también están los objetos creados por el usuario, Clases envoltorio
(Wrapper), arreglos y clases que están en el API de Java.

POR ÚLTIMO, CÓMO UTILIZAR VARIABLES EN JAVA.


Para declarar e inicializar variables en Java utilizamos la siguiente estructura:
tipo_dato nombre_variable=valor_asignado;
Donde:
tipo_dato: puede ser cualquier tipo mencionado anteriormente.
nombre_variable: es el nombre que se le da a la variable.
valor_asignado: es el valor numérico, texto, caracteres etc. que se le asigna a la variable,

Aquí podemos observar un resumen de los tipos de datos utilizados en JAVA.

4
POLIMORFISMO EN JAVA.
El Polimorfismo es uno de los 4 pilares de la programación orientada a objetos (POO)
junto con la Abstracción, Encapsulación (de la cual hablaremos más
adelante) y Herencia. Para entender que es el polimorfismo es muy importante que
tengas bastante claro el concepto de la Herencia.
Para empezar con esta entrada, se ha de decir que el término "Polimorfismo" es una
palabra de origen griego que significa "muchas formas". Este término se utiliza en la
POO para "referirse a la propiedad por la que es posible enviar mensajes
sintácticamente iguales a objetos de tipos distintos". Como esta definición quizás sea
algo difícil de entender, vamos a explicarla con el ejemplo que pusimos en la entrada de
la herencia en la que queríamos simular el comportamiento que tendrían los diferentes
integrantes de la selección española de fútbol; tanto los Futbolistas como el cuerpo técnico
(Entrenadores, Masajistas, etc…). Para este ejemplo nos vamos a basar en el siguiente
diagrama de clases:

CLASIFICACIÓN.
Se puede clasificar el polimorfismo en dos grandes clases:
 Polimorfismo dinámico (o polimorfismo paramétrico) es aquél en el que el
código no incluye ningún tipo de especificación sobre el tipo de datos sobre el que
se trabaja. Así, puede ser utilizado a todo tipo de datos compatible.
 Polimorfismo estático (o polimorfismo ad hoc) es aquél en el que los tipos a los
que se aplica el polimorfismo deben ser explícitos y declarados uno por uno antes
de poder ser utilizados.

5
El polimorfismo dinámico unido a la herencia es lo que en ocasiones se conoce
como programación genérica.
También se clasifica en herencia por redefinición de métodos abstractos y por método
sobrecargado. El segundo hace referencia al mismo método con diferentes parámetros.
Otra clasificación agrupa los polimorfismo en dos tipos: Ad-Hoc que incluye a su vez
sobrecarga de operadores y coerción, Universal (inclusión o controlado por la herencia,
paramétrico o genericidad).

Como hemos visto el polimorfismo es un concepto un poco más avanzado que la herencia
y puede ser muy util a la hora de jerarquizar y querer dar un patrón de comportamiento
común a una serie de objetos que heredan de la misma clase. En esta entrada no hemos
visto todo lo referente al polimorfismo ya que nos quedaría ver un concepto un poco más
avanzado en Java (y en otros lenguajes también) como son las "Interface" (clases
abstractas puras) de las cuales hablaremos en otra entrada para terminar de ver lo que es
el polimorfismo.

ENCAPSULAMIENTO EN JAVA.
Imaginemos que se crea una clase, una docena de programadores tienen acceso a dicha
clase y la utilizan a discreción, posteriormente dicha clase comienza a comportarse de
una manera inesperada debido a que los valores que algunas variables han tomado no
fueron anticipados y todo comienza a desmoronarse. Para corregir el problema se crea
una versión más nueva de dicha clase y listo.
Bueno, a esto le llamamos flexibilidad y capacidad de mantenimiento, ambas son
características y beneficios de la Programación Orientada a Objetos (POO) pero para que
una clase pueda cumplir dichas funciones los programadores debemos de hacer algo.
Imaginemos que creamos una clase con variables de instancia públicas a las cuales
podemos acceder sin problemas desde fuera de la misma clase...

6
Analizando el código anterior podemos darnos cuenta de que las variables enteras tipo y
clase son públicas y pueden ser accedidas directamente a través de una instancia de la
clase MiClase, esto compila sin ningún problema, digamos que es 'legal', sin embargo,
¿qué pasa si ingresamos un valor que no se supone debe de tener una variable (en este
caso el -5 que le asignamos a tipo)?, simplemente no hay nada que nos detenga para
hacerlo. La única manera de proteger el código es escribiendo un método que nos permita
regular los valores que cada variable puede tener y escondiendo las variables para que no
se pueda acceder a ellas de manera directa, esto es el principio básico de
encapsulamiento.

Si se desea flexibilidad, buen mantenimiento y extensibilidad, nuestro diseño en el código


debe de incluir encapsulamiento, para ello debemos de hacer lo siguiente:
Mantener las variables de instancia protegidas (puede ser con un modificador de acceso,
p.ej., private).
Hacer métodos de acceso públicos para forzar al acceso a las variables por medio de
dichos métodos en lugar de acceder directamente.
Utilizar las convenciones de código para los nombres de los métodos, p. ej., set y get.
El ejemplo anterior modificado para un buen encapsulamiento quedaría así:

7
Si nos fijamos un poquito, en el método setTipo() no existen validaciones para prevenir
que un valor no válido sea asignado a la variable, sin embargo, el proveer de un método
de este tipo desde el diseño inicial de la aplicación nos permite posteriormente modificar
el comportamiento de la misma sin afectar los métodos utilizados, tal vez en un futuro se
desee que dicha variable solamente pueda tener uno entre un rango de valores y se podrán
aplicar posteriormente los cambios sin que haya repercusiones negativas.

Ahora que tenemos una pequeña “BASE” sobre que es un objeto, que tipo de datos
maneja el lenguaje de programación en JAVA, que es el polimorfismo y la encapsulación
podremos ya poder programar en el lenguaje de programación más conocido que es
JAVA.

-GRACIAS-

You might also like