Tipos de datos Java

REPRESENTACIÓN INTERNA DE LOS DATOS

En el mundo real los datos que manejamos se representan mediante letras, números, símbolos, imágenes, sonidos, etc.
Esto se conoce como representación externa de los datos.
Pero si queremos introducirlos en un ordenador, todos estos elementos se deben transformar ó codificar para obtener así su representación interna.
Un ordenador está compuesto fundamentalmente por circuitos electrónicos digitales. Los datos circulan por estos circuitos en forma de impulsos eléctricos.
De forma muy simplificada podemos decir que por un circuito pasa o no pasa corriente y esto lo podemos representar con dos dígitos: 0 y 1.
Todos los datos e información que contiene un ordenador, están representados de forma interna mediante secuencias de ceros y unos.

Un sistema de representación que utiliza solamente dos símbolos ( 0 , 1 ) se llama sistema binario.
Por tanto, los datos tal y como los expresamos de forma natural se deben codificar de forma interna en binario para que puedan ser tratados por el ordenador.
El sistema binario utiliza solamente dos dígitos ( 0 y 1 ) llamados bits.
La palabra bit procede de la unión de las palabras binary digit.
Un bit es la unidad mínima de representación de información.
Utilizando 1 bit podremos solamente representar dos valores posibles: 0, 1.
Utilizando 2 bits podemos representar 4 valores: 00, 01, 10, 11.
Utilizando 3 bits podemos representar 8 valores:
000, 001, 010, 011, 100, 101, 110, 111.
Utilizando 4 bits podemos representar 16 valores:
0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111.
En general, utilizando N bits podremos representar 2N valores.
Ocho bits forman un byte.
El byte es la unidad básica de medida de la información.
Un byte es la cantidad más pequeña de información que el ordenador puede manejar.  
Con un byte se pueden representar 28 = 256 caracteres.
En el interior del ordenador los datos se transmiten y almacenan en grupos de bytes llamados palabras.
La longitud de palabra depende de cada tipo de ordenador: 8, 16, 32, 64.

TIPOS DE DATOS EN JAVA

Un dato siempre lleva asociado un tipo de dato, que determina el conjunto de valores que puede tomar.
En Java toda la información que maneja un programa está representada por dos tipos principales de datos:
  • Datos de tipo básico o primitivo.
  • Referencias a objetos.
Los tipos de datos básicos o primitivos no son objetos y se pueden utilizar directamente en un programa sin necesidad de crear objetos de este tipo. La biblioteca Java proporciona clases asociadas a estos tipos que proporcionan métodos que facilitan su manejo. 
Los tipos de datos primitivos que soporta Java son:
Tipo de dato
Representación
Tamaño (Bytes)
Rango de Valores
Valor por defecto
Clase Asociada
byte
Numérico Entero con signo
1
-128 a 127
0
Byte
short
Numérico Entero con signo
2
-32768 a 32767
0
Short
int
Numérico Entero con signo
4
-2147483648 a 2147483647
0
Integer
long
Numérico Entero con signo
8
-9223372036854775808 a 9223372036854775807
0
Long
float
Numérico en Coma flotante de precisión simple Norma IEEE 754
4
± 1.40239846x10-45 a
± 3.40282347x1038
0.0
Float
double
Numérico en Coma flotante de precisión doble Norma IEEE 754
8
± 4.9406564584124654x10-324 a
± 1.7976931348623157x10308
0.0
Double
char
Carácter Unicode
2
\u0000 a \uFFFF
\u0000
Character
boolean
Dato lógico
-
true ó false
false
Boolean
void
-
-
-
-
Void

DATOS NUMÉRICOS ENTEROS
En Java los representan los tipos: byte, short, int, long.
El tipo de dato numérico entero es un subconjunto finito de los números enteros del mundo real. Pueden ser positivos o negativos.
Ejemplo de declaración de variables enteras:
int a;
byte n1, n2;
short x;
DATOS NUMÉRICOS REALES
En Java los representan los tipos: float, double.
El tipo de dato numérico real es un subconjunto finito de los números reales. Siempre llevan un punto decimal y también pueden ser positivos o negativos. Los números reales tienen una parte entera y una parte decimal.
Por ejemplo: 0.08   -54.0001
Ejemplo de declaración de variables reales:
float peso;
double longitud;
float altura = 2.5F;
double area = 1.7E4; // equivale a 1.7 * 104
double z = .123; //si la parte entera es 0 se puede omitir
DATOS DE TIPO CARÁCTER
En Java se representa con el tipo char.
Un dato de tipo carácter se utiliza para representar un carácter dentro del rango \u0000 a \uFFFF (números desde 0 hasta 65535) en Unicode.
En realidad un dato de tipo char contiene un número entero dentro del rango anterior que representa un carácter.
En Java se utiliza el código Unicode para la representación de caracteres. Este código actualmente representa los caracteres de la mayoría de idiomas escritos en todo el mundo.
Los 127 primeros caracteres de Unicode corresponden al código ASCII.
El Código ASCII (American Standard Code for Information Interchange o Código Estándar Americano para el Intercambio de Información) asigna valores numéricos a las letras, números, signos de puntuación y algunos otros caracteres especiales.
ASCII incluye 256 códigos divididos en dos conjuntos, estándar y extendido, de 128 cada uno. El conjunto ASCII básico, o estándar, utiliza 7 bits para cada código, lo que da como resultado 128 códigos de caracteres desde 0 hasta 127.
El conjunto ASCII extendido utiliza 8 bits para cada código, dando como resultado 128 códigos adicionales, numerados desde el 128 hasta el 255.
En el conjunto de caracteres ASCII básico, los primeros 32 valores están asignados a los códigos de control de comunicaciones y de impresora (caracteres no imprimibles) empleados para controlar la forma en que la información es transferida desde una computadora a otra o desde una computadora a una impresora. En este grupo están los códigos correspondientes a la barra espaciadora (SP por space), la tecla ENTER de retorno de carro a un nuevo renglón (CR por carry return), etc. También existen caracteres de control usados en teleprocesamiento, como ser ACK (Acknowledge - aviso de mensaje recibido), BEL (bell - aviso por señal sonora), ETX (end of text – fin de texto), STX (start of text – comienzo de texto), etc.
Los 96 códigos restantes del código básico corresponden a los caracteres imprimibles y se asignan a los signos de puntuación corrientes, a los dígitos del 0 al 9 y a las letras mayúsculas y minúsculas del alfabeto latino.
Los códigos correspondientes al ASCII extendido, del 128 al 255, se asignan a aquellos caracteres que no pertenecen al alfabeto anglosajón, por ejemplo, las vocales con tilde, la ñ, y en general todos los caracteres especiales que utilizan los distintos lenguajes.

Debido a lo limitado de su tamaño, el código ASCII no es suficiente para representar caracteres de alfabetos como el Japonés, Chino o árabe. La solución a este problema ha sido crear un código más grande con el que poder representar cualquier carácter de cualquier idioma: el código Unicode.
El código UNICODE proporciona una única representación numérica para cada símbolo, independientemente del ordenador, el programa o el lenguaje de programación que se use.
La codificación Unicode se ha transformado en un estándar adoptado por las principales empresas de hardware y software. Java utiliza la codificación Unicode.
La descripción completa del estándar y las tablas de caracteres están disponibles en la página web oficial de Unicode http://www.unicode.org/. La referencia completa se publica, además, en forma de libro impreso cada vez que se libera una nueva versión principal. La versión digital de este libro está disponible de forma gratuita.
Ejemplo de declaración de variables de tipo carácter:
char car;
char letra1 = 'z';
char letra = '\u0061'; //código unicode del carácter ‘a’
DATOS DE TIPO LÓGICO
Se representan con el tipo boolean.
Los datos de este tipo sólo pueden contener dos valores: true (verdadero) ó false (falso).
Ejemplo de declaración de variables lógicas:
boolean primero;
boolean par = false;
Los tipos de datos lógicos son también conocidos como booleanos en honor del matemático inglés George Bool, que desarrolló la teoría conocida como álgebra de bool que fue la base para la representación de los circuitos lógicos.


37 comentarios:

  1. Y el tipo Void? que significa??

    ResponderEliminar
    Respuestas
    1. void no es realmente un tipo de dato primitivo, de hecho no podemos declarar variables de tipo void, pero debemos utilizarlo por ejemplo para indicar que un método no devuelve nada. En java se debe escribir siempre el tipo de dato que devuelve un método. Si el método no devuelve nada escribimos que el tipo devuelto es void.

      Eliminar
    2. Puesto a que void literalmente en ingles quiere decir "Vacio", por esto se usa para indicar que no retorna nada o que el tipo de dato que retorna es "vacio".

      Eliminar
    3. LA VERDAD ES QUE NO ENTIENDO NADA:)

      Eliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. muy buen aporte ... de pronto sabes como representar un dato que contenga números y letras , me pusieron a pedir la placa de algún carro, pero hasta ahora no he podido, gracias

    ResponderEliminar
  4. usa String,
    String matricula= "123-ABC";
    String acepta cualquier cadena de texto, a-z, A-Z,0-0, entre simbolos como llaves, corchetes, pero te recomiendo que lo uses para letras y numeros

    ResponderEliminar
  5. No seria que con 1 byte se puede representar 256 valores? ya que con 1 byte se representa un caracter,
    no 256 caracteres.

    ResponderEliminar
    Respuestas
    1. estoy de acuerdo con tigo @corpsemaiden, solo que el tipo de datos byte es de tipos entero y tiene un rango en memoria de -128 a 127 valor numerico que es en total el minimo y maxico valor que tu puedes ingresar

      Eliminar
  6. Es el bit la unidad mínima de representación de información o el byte?

    ResponderEliminar
    Respuestas
    1. David: Un byte son 8 bits.

      Eliminar
    2. Javier Santiago Reimón Rizkallal27 de diciembre de 2015, 22:17

      La unidad mínima de información es el bit. Pero lo mínimo que la memoria de un computador puede manejar es 1 byte

      Espero haber aclarado la duda

      Eliminar
    3. Javier Santiago Reimón Rizkallal27 de diciembre de 2015, 22:35

      La unidad mínima de información es 1 bit. Sin embargo, los microprocesadores de los computadores actuales trabajan con la memoria en segmentos de 1 byte (direccionamiento de memoria). Ahora comprenderás por qué las variables de tipo boolean ocupan 1 byte, y no 1 bit.

      Espero haberles aclarado la duda

      Eliminar
  7. Talves no tenga nada que ver pero, como hago para que un valor con el identificador "Nombre" al mecionarse en System.out.printiln("Hola soy " nombre) muestre en consola:

    Hola soy Joel

    seria: final char nombre = Joel;?

    ResponderEliminar
    Respuestas
    1. Hola Joel!

      Respondiendo tu pregunta el nombre Joel es una cadena de caracteres, por tal motivo el tipo debe ser String.
      Ejemplo:
      String nombre = "Joel";
      System.out.println("Hola soy " +nombre);

      Saludos!

      Eliminar
    2. Hola ampliando la pregunta de Joel montañez.. kisiera saber si me podrías orientar en como hacer que el prgrama me pida escribir un nombre cualkiera y luego imprima en pantalla la misma frase pero con el nombre que le puse.. por ejemplo: Hola soy Martín.. pork supongo k el nombre Joel.. es constante.. ... no sé si me dejé entender.. gracias por la respuesta.....

      Eliminar
    3. // ----> java
      import java.util.Scanner;
      public class Ver
      {
      public void retorno()
      {
      Scanner sc = new Scanner(System.in);
      String var = "";
      System.out.print("ingrese su nombre: ");
      var = sc.next();
      System.out.print("Bienbevido Sr: " + var);
      }
      }

      Eliminar
    4. muy largo lo haces el código para colocar un nombre!!!

      Eliminar
  8. como puedo crear una aplicacion en java que acepte numeros reales hasta poner la palabra "Fin". y que me mande un mensaje de aprobacion o rechazo del número ingresado ??

    ResponderEliminar
  9. Hola como puedo crear una máscara de ceros y uno para una secuencia de números de tal forma que se asigne un 0 para los valores positivos y el 1 para los negativos.
    Ejemplo: La secuencia: 1, -3, -5, 8, 9, -6, -43, -8 tendría la siguiente máscara: 01100111.

    ResponderEliminar
  10. hola me puedes ayudar .... tengo un campo de tipo bytea en postgres y en netbeans a este campo lo declare de tipo image... y tengo un metodo llamado obtenerfacultades...me sale un error de imcopatibilidad de tipos ..

    ResponderEliminar
  11. hola necesito hacer lo siguiente:
    se posee una matriz de 4x3 y se desea ingresar números pares del 1-20 (utilizar un ciclo y función mod)

    ResponderEliminar
  12. Un post genial, cortito, al grano y muy bien explicado. Gracias!

    ResponderEliminar
  13. Cuales son los dato numerico de Java?

    ResponderEliminar
  14. gracias, bastante claro y sobre todo fácil de aprender

    ResponderEliminar
  15. Vean : https://www.youtube.com/watch?v=Zz7YZtpz2Ek

    ResponderEliminar
  16. Saludos, ¿si no es molestia de pronto me podría ayudar con la siguiente consulta?, en Java hay algún dato entero sin signo de 8 bits que tenga el rango desde 0 a 255, como en C# es el byte.

    Tenga buen día y de antemano le agradezco por la ayuda brindada.

    ResponderEliminar
  17. Por que al sumar 2 tipos de variables enteras no da exacto? ejemplo 2.44 + 5.33 = 7.7699999999999999

    ResponderEliminar