Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. • Entrada de datos • Procesamientos de datos • Salida de resultados Los datos se pueden ingresar desde: un programa, desde un teclado, o desde un archivo, etc. Datos Representación formal de hechos, conceptos o instrucciones adecuadas para su comunicación, interpretación y procesamiento por seres humanos o medios automáticos. Tipos de datos Los diferentes objetos de información con los que un programa Java trabaja se conocen colectivamente como datos. Un dato puede ser un simple carácter, tal como 'B', un valor entero tal como 35 o un número real tal como 145.83. Una operación de suma no tiene sentido con caracteres, sólo con números. Por consiguiente, si el compilador detecta una operación de suma de dos caracteres, normalmente producirá un error. Incluso entre tipos numéricos, la operación de suma se almacena de modo distinto. Esto se debe a que números enteros y reales se almacenan de modo diferentes. A menos que el programa conozca el tipo de todos, si es un valor entero o real, no puede ejecutar correctamente la operación de suma. Clasificación de los tipos de datos en Java En Java existen dos categorías de tipos de datos: • Tipos primitivos • Tipos referenciados Tipos de datos primitivos Se llaman tipos primitivos de datos en Java a aquellos datos sencillos que contienen los tipos de información más habituales. Java dispone de ocho tipos primitivos de datos: 6 tipos para guardar valores numéricos, cuatro tipos para enteros (byte, short, int y long) y dos para valores reales de punto flotante (float y double), un tipo para almacenar valores true y false (boolean); un tipo para almacenar caracteres (char). Tipos de datos enteros Tipo byte short int long Tamaño 1 byte (8 bits) 2 bytes (16 bits) 4 bytes (32 bits) 8 bytes (64 bits) Nombre byte entero corto entero entero largo Tipos de datos en coma flotante Los tipos de datos de coma (punto) flotante representan números reales que contienen una coma (un punto) decimal, tal como 3.1141, o números muy grandes, tales como 1.85 x 1015. Tipo float double Tamaño 4 bytes (32 bits) 8 bytes (64 bits) Nombre real simple precisión real doble precisión El tipo int modela el conjunto de los números enteros desde, aproximadamente – 2.000 millones hasta 2.000 millones y requiere 32 bits de memoria. El tipo long que modela el conjunto de los números enteros desde, aproximadamente –8 trillones hasta 8 trillones y requiere 64 bits de memoria. Java ofrece dos tipos de enteros más, short y byte: éstos representan rangos de enteros todavía menores. Un short modela el conjunto de enteros de –32768 a 32767 y requiere 16 bits de memoria. Un byte modela el conjunto de enteros entre –128 y 127 y requiere 8 bits de memoria. El tipo de datos float modela números de coma flotante de aproximadamente siete dígitos de precisión, mientras que double representa 15 dígitos de precisión. El rango de ambos excede por mucho el de los int que sólo representan enteros entre –2.000 millones y 2.000 millones (aproximadamente). El valor mayor que un float puede tener es: 340282350000000000000000000000000000000 O 3,4028235 x 1038 ¿Cómo de grande es esto? Mayor que el número de átomos del océano Pacífico. El valor más pequeño (en magnitud) que puede representar un float es: 0,0000000000000000000000000000000000000000000014012985 O 1,4012985 x 10 -45 O, como se escribiría en Java: 1.4012985E-45f Un float y un int ocupan la misma cantidad de memoria. Entonces, ¿cómo puede un float representar números desde. -340282350000000000000000000000000000000 a 340282350000000000000000000000000000000? Cuando los int sólo pueden representar números desde –2147483648 hasta 2147483648? Es simple: los float no pueden representar todos los números de ese amplio rango, sino sólo aquellos con siete u ocho dígitos de precisión. Tipos de datos en coma flotante. Tipo float double Rango de valores 3.4 x 10-38 … 3.4 x 1038 1.7 x 10-308 … 1.7 x 10 308 Precisión 7 dígitos 15 dígitos Tipos de datos caracteres (char) Un carácter es cualquier elemento de un conjunto de caracteres predefinidos o alfabeto. Java fue diseñado con el objeto de poder ser utilizado en cualquier país, con independencia del tipo de alfabeto. Para poder reconocer cualquier tipo de carácter, los elementos de este tipo utilizan 16 bits, dos bytes, en vez de los ocho bits que utilizan la mayoría de los lenguajes de programación. De esta forma Java puede representar el estándar Unicode, que recoge más de 30.000 caracteres distintos procedentes de las distintas lenguas escritas. http://www.unicode.org/ Tipos de datos boolean Los compiladores de Java incorporan el tipo de dato boolean cuyo valores son «verdadero» (tue) y «falso» (false). Las expresiones lógicas devuelven valores de este tipo. Tipos de datos referenciados Es un tipo de dato característico de Java. Son referencias de una información más compleja, ejemplo: arrays u objetos de una determinada clase o interfaces. Ejemplo: en Java no existen datos primitivos que permitan almacenar una cadena de caracteres, por lo que hay que recurrir a un objeto que desempeñe esa labor. Variable No es más que un nombre simbólico que identifica una dirección en memoria. El nombre de la posición (un identificador) se llama nombre de variable; el valor almacenado en la posición se llama valor de la variable. Las variables son objetos de un programa cuyo valor puede cambiar durante la ejecución del programa. (Hay variables que son fijas cuyos valores no se modifican, las constantes, que vamos a ver mas adelante). Declaración o definición de variables La forma más simple de una declaración de variable en Java es poner primero el tipo de dato y a continuación el nombre de la variable. Si se desea dar un valor inicial a la variable, éste se pone a continuación. El formato de la declaración es: <tipo de dato> <nombre de variables> = <valor inicial> Ejemplos: //Declaración de una variable entera e de tipo int e inicializamos e inicializa //Declaración de una variable real r de tipo double e inicializamos //Declaración e inicialización de variables de tipos float Los números reales, coma flotante, Java las considera por defecto de tipo double. Se considerada de tipo float cuando se añade el sufijo f. //Declaración e inicialización de una variable de tipo char //Declaración e inicialización de una variable tipo boolean //Declaración de una variable referenciada Con esta sentencia declaramos un variable que permite referenciar a un objeto de la clase “String”. En la mayoría de los casos los objetos hay que construirlos con el modificador new para poder utilizarlos, esto no ocurre con los objetos de la clase String que se construye automáticamente en el momento de definirlo. Todas las variables deben ser definidas antes de ser utilizadas. Convenciones Es muy recomendable establecer un estilo de identificador, así por ejemplo, podemos identificar las variables primitivas y referenciadas con minúscula. En el caso de palabras compuestas se puede tomar el criterio de poner el primer carácter de la segunda palabra en mayúscula, ejemplos de estos identificadores serian: miCasa, volumenEsfera El uso de nombres muy largos no es recomendable ya que resultarían difíciles de teclear y además se utiliza más memoria para almacenar el nombre. Los nombres de las variables deben indicar qué datos almacenan, de manera que resulte más fácil de leer el programa. Nota: Java es un lenguaje muy sensible a mayúscula/minúscula. Ejemplo: no es lo mismo para Java Int que int.