Datos y variables
Mi primer programa de Java
¿Qué son datos?
¿Qué son variables?
Variables en Java
Mi primer programa de Java
Vamos a escribir nuestro primer programa en Java
Recuerda que el código fuente siempre se encuentra en un archivo con extensión .java
En nuestro ejemplo, vamos a guardar el programa en un archivo llamado HolaMundo.java
Componentes de un programa
class HolaMundo {
// comentario, no hace parte del programa
public static void main(String[] args) {
// aquí se escriben las instrucciones
} // fin de main
} // fin de HolaMundo
El primer programa
class HolaMundo {
// comentario, no hace parte del programa
public static void main(String[] args) {
// aquí se escriben las instrucciones
System.out.println(¡Hola Mundo!);
} // fin de main
} // fin de HolaMundo
¿Qué son datos?
Los datos representan información que queremos recordar, comparar, o manipular
Pueden ser números, textos, imágenes o sonidos
Un dato puede estar compuesto de varios otros datos
Ejemplo de un dato compuesto:
Apellido: Jonsson
Teléfono: 935422602
Foto: [imagen]
Datos en la computadora
Recuerda que los datos se guardan en la memoria de la computadora en forma de bytes
Cada dato ocupa un cierto espacio en la memoria
Para manipular datos, la CPU tiene que saber dónde recuperarlos de la memoria
¿Qué son variables?
Una variable es un nombre o identificador asociado con un dato
Ejemplos: apellido, telefono, foto
Para cada variable, el programa reserva un espacio suficiente para guardar el dato en la memoria RAM
Para recuperar el dato asociado con una variable, la CPU tiene que buscar en el espacio reservado
Variable indica que se puede cambiar el dato asociado con un identificador
No obstante, la ubicación en la memoria nunca cambia
Variables y la memoria
(Gp:) telefono
RAM
dirección en memoria
contenido
Variables en Java
En Java, se necesita una variable para cada dato que se quiera guardar en la memoria
El programador escoge el identificador de cada variable
Java es strongly typed (basado en tipos): para cada variable, debe definirse el tipo del dato asociado:
número entero
texto
imagen
etc.
Variables en Java
Identificadores
Tipos de datos
Declaración
Inicialización y asignación
Conversión de tipos
Identificadores
No pueden coincidir con una palabra reservada
Distinción entre mayúsculas y minúsculas
Secuencia de letras, dígitos, _ (subrayado) y $
No se puede poner acentos
Siempre empiezan con una letra
Ejemplos:
Correcto: apellido, aula219, dos_veces, cantidad$250
Incorrecto: class, número, re-100, 80s
Normas para identificadores
Los programadores de Java se han acordado de normas para identificadores
Ayuda leer un programa escrito por otra persona
Normas adoptadas:
Los archivos .java siempre empiezan con una mayúscula
Los identificadores de variables siempre empiezan con una minúscula
Si el identificador está compuesto de más que una palabra, cada palabra subsiguiente empieza con mayúscula (Ej: HolaMundo.java, unaVariableLarga)
Los identificadores deben describir de forma no ambigua el dato asociado
Palabras reservadas
class Empieza un programa en Java
public Aparece en el método main
static Aparece en el método main
void Aparece en el método main
Tipos de datos básicos
Enteros: int, byte, short, long
Reales: float, double
Caracteres: char
Boolean: boolean valor true o false
Tipos enteros
Tipos reales
Declaración
Antes de utilizar una variable, siempre hay que declararla
Cuando declaramos una variable, indicamos el tipo de su dato asociado y su identificador
Como resultado, el programa reserva un espacio suficiente para guardar el dato en la memoria RAM
Todavía no hemos indicado que dato queremos guardar
Declaración
La declaración de una variable siempre sigue el modelo
;
Se puede declarar varias variables a la vez:
, [
] ;
Ejemplos:
boolean estaEstudiando;
int numeroDeAlumnos;
char myChar1, myChar2, myChar3;
int indice1, indice2;
Inicialización
Para asociar un dato con una variable, hay que inicializar la variable
La inicialización se hace mientras una operación que se llama asignación
Sólo se puede inicializar una variable con un dato del tipo correcto (sino el programa no compila)
Como resultado, el dato queda guardado en el espacio respectivo
Asignación
La asignación de una variable sigue el modelo
= ;
puede ser reemplazado con
un valor básico (literal)
otra variable
el resultado de una operación más compleja
¡El resultado de tiene que ser del mismo tipo que la variable!
¡El carácter = no significa igualdad!
Asignación
La asignación se puede combinar con la declaración:
= ;
Ejemplos:
boolean estaEstudiando = true;
int numeroDeAlumnos;
numeroDeAlumnos = 31;
int indice1 = 12;
int indice2 = indice1;
Asignación
Siempre se puede cambiar el dato asociado con una variable
Para cambiar el dato asociado, hay que asignar otro valor a la variable
Ejemplo:
int numeroDeAlumnos;
numeroDeAlumnos = 31;
numeroDeAlumnos = 26;
Problema
¿Cómo intercambiar los valores de 2 variables?
Entrada: valor1 es igual a 10 y valor2 a 20
Salida: valor1 es igual a 20 y valor2 a 10
Para la solución, ver Intercambio.java
Literales
Algunos valores básicos se pueden expresar directamente en Java
Las palabras que describen estos valores se llaman literales
Hay varios literales en Java:
Enteros: 10
Reales: 18.54
Caracteres: d
Cadenas de caracteres: Hola
Boolean: true y false
Literales enteros
Un número entero se escribe normalmente sólo:
short aShort = 12;
int anInt = 51;
Excepción: un entero del tipo long fuera del rango del tipo int necesita una L al final:
long aLong = 562;
long badLong = 5124723163;
long goodLong = 5124723163L;
Literales de punto flotante
Un número de punto flotante literal es compatible con el tipo double:
double goodDouble = 12.7;
Un número de punto flotante literal seguido de una F es compatible con el tipo float:
float goodFloat = 12.7F;
float badFloat = 12.7;
Literales de punto flotante
Se puede utilizar exponentes
Por ejemplo, 12 700 es igual a 1.27*104 y a 12.7*103
En un literal de punto flotante, e3 significa *103
Ejemplos:
float goodFloat = 12.7e3F;
// se imprime 12700.0
double goodDouble = 73e-4;
// se imprime 0.0073
El literal 0.14 se puede escribir también .14
Precisión y aproximación
Cuando asignamos un valor a una variable de tipo float (o double) un literal de punto flotante con más de 7 dígitos (o 15), su representación en la variable es una aproximación.
Con menos de 7 (o 15) dígitos, su representación en la variable es precisa.
Caracteres
Carácter almacenado en 2 bytes = 16 bits
En teoría, permite representar 216 = 65,536 caracteres distintos
Tabla Unicode recoge más de 30 000 caracteres distintos procedentes de lenguas escritas distintas (Ej: griego, árabe)
Los primeros 28 = 256 corresponden a los de la tabla ASCII
Declaración e inicialización:
char letra = A;
char respuesta = Y;
Caracteres literales especiales
Boolean
Variable con valor lógico
Acepta dos literales posibles: true y false
Ejemplo:
boolean ojosNegros = true;
Almacenado en 1 bit de memoria
Cadenas de caracteres: String
El tipo String (? string) no es básico
String no es una palabra reservada
Declaración e inicialización:
String saludo = Hola Jefe;
El literal cadena es un conjunto de caracteres
Dentro de una cadena se puede utilizar caracteres especiales:
HolanJefe: Hola
Jefe
Conversión de tipos
Para enteros, se puede cambiar el tipo de un dato
La conversión de tipos se puede hacer solo en este sentido:
byte ? short ? int ? long
No se pierde información
1 byte ? 2 bytes ? 4 bytes ? 8 bytes
Conversión de tipos
// Inicializa una variable con un entero
int goodInt = 79124;
// Convierte el entero al tipo long
long goodLong = goodInt;
// ¡Si se convierte al tipo short
// se pierde información!
short badShort = goodInt;
Palabras reservadas
class inicio de programa
public, static, void método main
byte, short, int, long enteros
float, double reales
char caracteres
boolean tipo Boolean
true, false literales Boolean