Los tipos de datos nos permiten representar los diferentes datos que son necesarios a la hora de implementar un programa. Por ejemplo, si escribimos un programa sencillo que sume,reste,multiplique y divida (una calculadora basica) sera necesario emplear tipos de datos numericos que pueden ser : enteros o flotantes. Los tipos de datos en Java son los siguientes: TIPOS DE DATOS ENTEROS 1) byte El tipo de dato byte puede representar datos enteros que se encuentren en el rango de -128 a +127. El tamaño de un dato de tipo byte es de 8 bits. 2) short El tipo de dato short puede representar datos enteros que se encuentren en el rango de -32768 y +32767. El tamaño de un dato de tipo short es de 16 bits. 3) int El tipo de dato int puede representar datos enteros que se encuentren en el rango de -2147483648 y +2147483647. El tamaño de un dato de tipo int es de 32 bits. 4) long El tipo de dato int puede representar datos enteros que se encuentren en el rango de -9223372036854775808 y +9223372036854775807. El tamaño de un dato de tipo int es de 64 bits. Para indicar de manera explicita que el dato es un long , se agrega una L o l al final del valor de la variable. TIPOS DE DATOS FLOTANTES 1) float El tipo de dato float puede representar datos en coma flotante que se encuentren en el rango de 1.40239846e–45f y 3.40282347e+38f. El tamaño de un dato de tipo short es de 32 bits. Para indicar de manera explicita que el dato es un float , se agrega una F o f al final del valor de la variable. 2) double El tipo de dato double puede representar datos en coma flotante que se encuentren en el rango de 4.94065645841246544e–324d y 1.7976931348623157e+308d. El tamaño de un dato de tipo short es de 64 bits. Para indicar de manera explicita que el dato es un double , se agrega una D o d al final del valor de la variable.
TIPO DE DATO BOOLEAN El tipo de dato boolean puede representar dos valores logicos : true(verdadero) o false(falso). TIPO DE DATO CHAR El tipo de dato char se usa para representar caracteres(codigo Unicode). Un caracter es representado internamente por un entero.
Clases envolventes Las clases envolventes tienen dos principales funciones en java:
Proveen un mecanismo para envolver (wrap) valores primitivos en un objeto, de esta manera los datos primitivos pueden tener actividades o comportamientos que son reservados solo para los objetos (como ser agregados a una colección o ser retornados de un método como simple Object). Proveen útiles funciones para realizar conversiones: a cadena, cambiar de base numérica(octal, hexadecimal), u otros tipos primitivos. Existe para cada tipo primitivo una clase envolvente, nombrada igual que su dato primitivo pero su nombre empieza con mayuzcula. Tabla de primitivos, envolventes y sus constructores:
Primitive - Wrapper - Constructors boolean - Boolean - boolean or String byte - Byte - byte or String char - Character - char double - Double - double or String float - Float - float, double, or String int - Integer - int or String long - Long - long or String short - Short - short or String Para realizar conversiones podemos utilizar algunos métodos:
xxxValue()
parseXxx()
valueOf()
toString()
xxxValue() Cuando se necesita el valor númerico de un envolvente a un primitivo podemos utilizar cualquiera de los muchos métodos xxxValue().
Ejemplo: Integer var = new Integer(42); byte b = var.byteValue(); short s = var.shortValue(); double d = var.doubleValue(); parseXxx() y valueOf() Ambos parseXxx() y valueOf() toman un String como argumento y arrojan NumberFormatException si la cadena no esta formada propiamente, y pueden convertir objetos String a diferentes bases numéricas (radix). La principal diferencia de estos métodos es:
parseXxx() - regresa el primitivo nombrado.
valueOf() - regresa un nuevo objeto wrapped del tipo del que fue invocado.
Ejemplo: double d4 = Double.parseDouble("3.14"); long L2 = Long.parseLong("101010", 2); // El resultado es 42 Long L3 = Long.valueOf("101010", 2); // // El resultado es 42 toString() la clase Object la clase principal de java contiene el método toString(). La idea de este método es obtener una representación significativa de un objeto dado. Este método nos regresa una cadena con el valor del primitivo envuelto en el objeto. Ejemplo: Double d = new Double("3.14"); System.out.println("d = "+ d.toString() ); //El resuktado es: d = 3.1
IDENTIFICADORES JAVA Los identificadores son los nombres que el programador asigna a variables, constantes, clases, métodos, paquetes, etc. de un programa. Características de un identificador Java: Están formados por letras y dígitos. No pueden empezar por un dígito. No pueden contener ninguno de los caracteres especiales vistos en una entrada anterior. No puede ser una palabra reservada de Java. Las palabras reservadas en Java son todas las que aparecen en el punto siguiente.
Ejemplo de identificadores válidos: Edad nombre _Precio $cantidad PrecioVentaPublico Ejemplo de identificadores no válidos: 4num z# “Edad” Java diferencia mayúsculas y minúsculas, por lo tanto, nombre y Nombre son identificadores diferentes.
Declaración e inicialización de variables Java es un lenguaje fuertemente tipificado, es decir, toda variable debe tener un tipo de dato asociado. Esto ayuda a saber el tipo de dato almacenado dentro de la variable o el tipo de dato que necesita ser almacenado dentro de la variable. Las variables se declaran usando esta forma de instrucción: tipo nombre-var; Donde tipo es el tipo de datos de la variable y nombre-var es el nombre de la variable. Puede declarar una variable de cualquier tipo válido. Cuando crea una variable, está creando una instancia de su tipo. Por lo tanto, las capacidades de una variable están determinadas por su tipo. Por ejemplo, una variable de tipo boolean no puede utilizarse para almacenar valores de punto flotante. Más aún, el tipo de una variable no puede cambiar durante su existencia. Una variable int no puede convertirse en un char, por ejemplo. Todas las variables en Java deben declararse antes de ser utilizadas. Esto es necesario porque el compilador debe saber qué tipo de datos contiene una variable antes de poder compilar apropiadamente cualquier instrucción que emplee la variable. También le permite a Java realizar una revisión estricta del tipo.
Inicialización de una variable En general, debe proporcionar a una variable un valor antes de usarla. Una manera de hacerlo es mediante una instrucción de asignación, como ya lo ha visto. Otra manera consiste en proporcionarle un valor inicial cuando se declara. Para ello, coloque un signo de igual después del nombre de la variable y luego incluya el valor asignado. Aquí se muestra la forma general de inicialización: tipo var = valor; En este caso, valor es el valor que se le da a var cuando se crea. El valor debe ser compatible con el tipo especificado. He aquí algunos ejemplos:
int cuenta = 10; // proporciona a cuenta un valor inicial de 10 char ch = 'X'; // inicializa ch con la letra X float f = 1.2F; // f se inicializa con 1.2 Cuando se declaran dos o más variables del mismo tipo empleado una lista separada por comas puede dar a una o más de estas variables un valor inicial. Por ejemplo: int a, b = 8, c = 19, d; // b y c tienen inicializaciones En este caso, sólo b y c están inicializadas. Inicialización Aunque en los ejemplos anteriores sólo se han usado constantes como inicializadores, Java permite que las variables se inicialicen dinámicamente empelando cualquier expresión válida en el momento en que se declara la variable. Por ejemplo, he aquí un programa corto que calcula el volumen de un cilindro dados el radio de su base y su altura. // Demuestra la inicialización dinámica. class InicDin{ public static void main(String args[]) { double radio = 4, altura = 5; // inicializa dinámicamente el volumen double volumen = 3.1416 * radio * radio * altura: System.out.println(“El volumen es “ + volumen); } } En este caso, están declaradas tres variables locales (radio, altura y volumen). Las primeras dos (radio y altura) están inicializadas. Sin embargo, volumen está inicializada dinámicamente al volumen del cilindro. La clave aquí es que la expresión de inicialización puede ser cualquier elemento válido en el tiempo de la inicialización, incluidas llamadas a métodos, así como otras variables o literales. OPERADORES LÓGICOS PRINCIPALES EN JAVA En Java disponemos de los operadores lógicos habituales en lenguajes de programación como son “es igual”, “es distinto”, menor, menor o igual, mayor, mayor o igual, and (y), or (o) y not
(no). La sintaxis se basa en símbolos como veremos a continuación y cabe destacar que hay que prestar atención a no confundir == con = porque implican distintas cosas.
OPERADOR
DESCRIPCIÓN
==
Es igual
!=
Es distinto
<, <=, >, >=
Menor, menor o igual, mayor, mayor o igual
&&
Operador and (y)
||
Operador or (o)
!
Operador not (no)
Operadores lógicos principales en Java
El operador || se obtiene en la mayoría de los teclados pulsando ALT GR + 1, es decir, la tecla ALT GR y el número 1 simultáneamente. Los operadores && y || se llaman operadores en cortocircuito porque si no se cumple la condición de un término no se evalúa el resto de la operación. Por ejemplo: (a == b && c != d && h >= k) tiene tres evaluaciones: la primera comprueba si la variable a es igual a b. Si no se
cumple esta condición, el resultado de la expresión es falso y no se evalúan las otras dos condiciones posteriores. En un caso como ( a < b || c != d || h <= k) se evalúa si a es menor que b. Si se cumple esta condición el resultado de la expresión es verdadero y no se evalúan las otras dos condiciones posteriores. El operador ! recomendamos no usarlo hasta que se tenga una cierta destreza en programación. Una expresión como (!esVisible) devuelve false si (esVisible == true), o true si (esVisible == false). En general existen expresiones equivalentes que permiten evitar el uso de este operador cuando se desea.
ORDEN DE PRIORIDAD, PRELACIÓN O PRECEDENCIA Los operadores lógicos y matemáticos tienen un orden de prioridad o precedencia. Este es un esquema general que indica el orden en que deben evaluarse en la mayoría de los lenguajes de programación:
Una expresión como A+B == 8 && A-B == 1 siendo A = 3 y B = 5 supondrá que se evalúa primero A+B que vale 8, luego se evalúa A-B que vale -2. Luego se evalúa si se cumple que la primera operación es cierta y luego si la segunda también es cierta, resultando que no, por lo que la expresión es falsa.
Arreglos: Los arreglos se pueden definir como objetos en los que podemos guardar mas de una variable, es decir, al tener un unico arreglo, este puede guardar multiples variables de acuerdo a su tamaño o capacidad, es importante recordar que las variables guardadas deben ser del mismo tipo, por ejemplo: Si tenemos un arreglo de tipo Numerico que puede almacenar 10 variables, solo podra almacenar 10 numeros diferentes, no otras variables como caracteres o Strings.
Existen 2 tipos de arreglos, los unidimensionales, y los multidimensionales(generalmente 2 dimensiones y se les denomina matrices), en esta lección veremos como declarar y utilizar los arreglos unidimensionales, estos son mas sencillos y faciles de comprender, y pueden servirnos para muchas aplicaciones.
Declaración: La estructura de declaración de un arreglo es la siguiente: tipo_dedato [] nombre_variable; //tambien puede declararse “tipo_dedato nombre_variable[];” ejemplos: view source
1
String array[]; //donde array es un arreglo que guardara variables tipo Strings
2 double array2[]; //donde array2 es un arreglo que guardara variabels tipo doublé
mayoría de programas escritos en Java cuentan en su código fuente con diferentes estructuras que permiten gestionar el flujo de datos de la manera más adecuada. Por ello, si queremos empezar a desarrollar nuestros primeros proyectos en este popular lenguaje de programación, es necesario conocer el funcionamiento básico de los siguientes elementos: if, switch, while, for, do while y catch.
IF El condicional IF nos permite evaluar una expresión escrita entre paréntesis, y dependiendo de su resultado ( true o false ), ejecutar un código diferente. En el siguiente ejemplo comparamos los valores de dos variables, a y b, si son iguales imprimimos el texto “Verdadero” en pantalla, en caso contrario, mostramos el valor “Falso”. if ( expresión ) { sentencia verdadera } else { sentencia falsa }
if (a==b) { System.out.println ( "Verdadero"); }else{ System.out.println ( "Falso"); }
SWITCH Cuando la evaluación de una expresión ofrece varios casos es apropiado usar el controlador switch para simplificar el programa. A continuación vemos un ejemplo donde la variable edad puede contener los valores: 20,30,40,50. switch(edad){ case 20: System.out.println("Tienes 20 años"); break; case 30: System.out.println("Tienes 30 años"); break; case 40: System.out.println("Tienes 40 años"); break; case 50:
System.out.println("Tienes 50 años"); break; }
FOR El bucle for permite repetir la ejecución de un trozo de código un número determinado de veces, es decir, su funcionamiento es similar al de un contador. Entre paréntesis se escriben una serie de condiciones, mientras entre llaves se encuentra el conjunto de sentencias a realizar. for ( inicio; final; incremento ) { sentencia }
for (int i=0; i<20; i++){ System.out.println("Valor de i: " +i); }
WHILE A diferencia del bucle anterior, while sólo necesita de una condición para ejecutar la sentencia encerrada entre llaves. El ciclo se romperá cuando dicha condición sea falsa. while ( condición ) { sentencia }
while (i < 20){
System.out.println ("Valor de i: " + i); i++; }
DO WHILE En el bucle do while escribimos la sentencia antes que la condición, es decir, primero ejecutamos la sentencia y después comprobamos la condición. do { sentencia } while ( condición );
do{ System.out.println("Valor de i: " +i); }while(i<10);
TRY CATCH Con la estructura try catch podemos capturar los posibles errores que ocasionan ciertas situaciones en un proyecto Java. De este modo, si no es posible ejecutar el código escrito dentro del bloque try, el programa alertará del tipo de error y su origen. try { código } catch ( Tipo de error ) { código }