Introducción a Java
MÁQUINA VIRTUAL JAVA
Todo programa escrito en un lenguaje de programación debe pasar a través de programas
especializados que convierten dicho código a lenguaje de máquina. Estos programas son llamados
compiladores o intérpretes, según el lenguaje de programación sea interpretado o compilado.
Código Fuente Código Máquina
class PrintLineas 0101110110110101010111
{ public static void main(final 0001111101010010101000
String arg[]) 0111010010111111000001
{ int n,a,b; 0101010101101101010101
do{ 0100000101110100100101
n=[Link]("entero 0001010111010010010111
entre 10 y 20"); 1010100101010000111010
}while((n<10)||(n>20)); Compilador 0101111110000010101010
for(a=1;a<=n;a++) 1011011010101010100000
{ 1011111101010010101000
for(b=1;b<=a;b++) 0111010010111111000001
{[Link](a+" "); 0101010101101101010101
} 0100000101111110101001
[Link](); 0101000011101001011111
} 1000001010101010110110
} 1010101010000010111111
} 010100101010000111
Este esquema genera programas que una vez traducidos a código de máquina, no es posible
ejecutar el programa en diferentes sistemas operativos.
Java rompe este esquema al introducir a Máquina Virtual de Java. Mediante este concepto, Java se
hizo independiente del hardware y del sistema operativo, puesto que el programa no se ejecuta en la
máquina real, sino que se ejecuta en la “Máquina Virtual de Java”, con su propio hardware y sistema
operativo, por tanto el código obtenido no es un código ejecutable de la forma tradicional, sino que se
obtiene un programa llamado “bytecode” que es sólo entendible por la “Máquina Virtual de Java”
quien se encarga de interactuar con el sistema operativo de la máquina y ejecutar el programa.
Código Fuente Bytecode Código Máquina
A FE BA BE 00 00
class PrintLineas 0101110110110101010111
{ public static void main(final 00 37 00 43 0A 00 0001111101010010101000
String arg[]) 09 00 1C 08 00 1D 0111010010111111000001
{ int n,a,b; 0A 00 1E 00 1F 09 0101010101101101010101
do{ 0100000101110100100101
00 20 00 21 12 00
n=[Link]("entero Compilador JVM 0001010111010010010111
entre 10 y 20"); 00 00 25 0A 00 26 1010100101010000111010
}while((n<10)||(n>20)); 00 27 0A 00 26 00 0101111110000010101010
for(a=1;a<=n;a++) 1011011010101010100000
{ 28 07 00 29 07 00 1011111101010010101000
for(b=1;b<=a;b++) 2A 01 00 06 3C 69 0111010010111111000001
{[Link](a+" "); 6E 69 74 3E 01 00 0101010101101101010101
} 0100000101111110101001
[Link]();
03 28 29 56 0101000011101001011111
} 1000001010101010110110
} 1010101010000010111111
} 010100101010000111
Conceptos Básicos del Lenguaje Java
Nombre o Identificadores
Es una secuencia de caracteres, comenzando por una letra y conteniendo letras y números.
Las letras Java incluyen los caracteres ASCII A-Z y a-z.
Los dígitos Java incluyen los dígitos ASCII 0-9.
Los caracteres ASCII $ y _ son también considerados letras Java.
Existe diferencia entre mayúsculas y minúsculas.
No hay un límite en el número de caracteres que pueden tener los identificadores.
Comienza con una letra, el carácter ( _ ) o el carácter ( $ ). Puede incluir, pero no comenzar por un número.
No puede incluir el carácter espacio en blanco.
Distingue entre letras mayúsculas y minúsculas.
No se pueden utilizar las palabras reservadas como identificadores
Conceptos Básicos del Lenguaje Java
Palabras Reservadas
Son palabras que tiene un significado gramatical especial para ese lenguaje y no puede ser utilizada como un
identificador o nombre.
abstract default if private this boolean do
implements protected throwbreak double import public throws
byte else instanceof return transient case extends
int short try catch final interface static
void char finally long volatile class float
native super while const for new switch
continue goto package synchronized
Y otras más que irá conociendo a lo largo de su aprendizaje del lenguaje.
Conceptos Básicos del Lenguaje Java
Tipo de Datos Primitivos
Números Enteros
Tipo Descripción Tamaño/Formato
byte Entero byte 1 byte, 8-bits
short Entero corto 2 bytes, 16-bits
int Entero 4 bytes, 32-bits
long Entero largo 8 bytes, 64-bits
Conceptos Básicos del Lenguaje Java
Tipo de Datos Primitivos
Números Reales
Tipo Descripción Tamaño/Formato
float Punto flotante 4bytes, 32-bits
double Punto flotante doble precisión 8bytes, 16-bits
Otros tipos
Tipo Descripción Tamaño/Formato
char Un solo carácter 16-bits caracteres Unicode
boolean Un valor booleano (lógico) true o false
Conceptos Básicos del Lenguaje Java
Variable
Es un espacio de memoria que guarda un determinado valor (o dato). Es la composición entre un
identificador o nombre y un tipo de dato.
Tipo Nombre o Identificador
int x;
int y, z;
long dato1, dato2, dato3=1; //se está inicializando la variable dato3 con el valor 1
Variable Referencial
Los arreglos, las clases y las interfaces son del tipo referencia. El valor de una variable del tipo referencia es
una dirección de un conjunto de valores representados por una variable.
Ej. String cad; //referencia a un objeto de la clase String
Punto p; //referencia a un objeto de la clase Punto
int [ ] varArreglo; //referencia a un arreglo de enteros
Conceptos Básicos del Lenguaje Java
Comentarios
Los comentarios, son líneas de código que permiten aportar algún grado de información documental, que no
son consideradas por el compilador en el momento de ejecutarse la aplicación
/* Este es un ejemplo de
un comentario de varias
líneas. */
a = b+c; /* Esta es una suma*/
a = c+b; /* mismo resultado */
a = b-c; /* Esta es una resta*/
a = c-b; /*distinto resultado*/
// Este es un comentario de una sola línea desde que inicia hasta
//el final de la línea, por cada línea se necesita //
a = b+c; // Esta es una suma,a = c+b; no ejecuta por el comentario
Conceptos Básicos del Lenguaje Java
Operadores Aritméticos
Operador Descripción Ejemplo
+ Suma a+b
- Resta a-b
* Multiplicación a*b
/ División a/b
% Módulo a%b
Conceptos Básicos del Lenguaje Java
Operadores de Asignación
Operador Descripción Ejemplo
= Asignación a=b
+= Suma y asignación a += b (a = a + b)
-= Resta y asignación a -= b (a = a - b)
*= Multiplicación y asignación a *= b (a = a * b)
/= División y asignación a /= b (a = a / b)
%= Módulo y asignación a %= b (a = a % b)
Conceptos Básicos del Lenguaje Java
Operadores Aritméticos Incrementales/Decrementales
Operador Significado Ejemplo
a ++ (postincremento)
++ Incremento
++ a (preincremento)
a -- (postdecremento)
-- Decremento
-- a (predecremento)
Conceptos Básicos del Lenguaje Java
Operadores de Relación
Operador Descripción Ejemplo
== Igualdad a == b
!= Distinto a != b
< Menor que a< b
<= Menor o igual que a <= b
> Mayor que a>b
>= Mayor o igual que a >= b
Conceptos Básicos del Lenguaje Java
Operadores Lógicos o Booleanos
Ejemplo de Resultado
Operador Descripción
expresión del ejemplo
! false true
! Negación - NOT (unario) ! (5==5) false
true | false true
| Suma lógica - OR (binario) (5==5) | (5<4) true
true ^ false true
^ Suma lógica exclusiva - XOR (binario) (5 == 5) ^ (5 < 4) true
true & false false
& Producto lógico - AND (binario) (5 == 5) & (5 < 4) false
Suma lógica con cortocircuito: si el primer operador es true, true || false true
|| entonces salta el segundo y el resultado es true, caso contrario (5 == 5) || (5 < 4) true
depende del valor del segundo operador.
Producto lógico con cortocircuito: si el primer operador es false, false &&false false
&& entonces salta el segundo y el resultado es false, caso contrario (5 == 5) && (5 < 4) false
depende del valor del segundo operador.
Conceptos Básicos del Lenguaje Java
Operadores de Bit
Ejemplo de Resultado
Operador Descripción
expresión del ejemplo
~ Negación o complemento binario (unario) ~12 -13
| Suma lógica binaria - OR (binario) 12 | 10 8
^ Suma lógica exclusiva - XOR (binario) 12 ^ 10 6
& Producto lógico binario - AND (binario) 12 & 10 14
Desplaza a izquierda los bits del primer operador tantas veces como 7 << 2 28
<< indica el segundo, por la derecha siempre se completa con cero. -7 << 2 -28
>> Desplaza a derecha los bits del primer operador tantas veces como 7 >> 2 1
indica el segundo, por la izquierda entra siempre el mismo bit más -7 >> 2 -2
significativo anterior
Conceptos Básicos del Lenguaje Java
Operadores Especiales
Operador Descripción Ejemplo
(tipo)expr Cast a = (int) b
+ Concatenación de cadenas a = “hola” + “gente”
a = 4;
?: Operador condicional b = a > a ? a * 7 : a + 8;
b vale 12
Conceptos Básicos del Lenguaje Java
Separadores
Separador Descripción
Permite modificar la prioridad de una expresión, contener expresiones para el control de flujo y
( )
realizar conversiones de tipo.
{ } Permite definir bloques de código y ámbitos y contener valores iniciales de las variables array.
Permite declarar variables de tipo array (unidimensionales, multidimensionales) y referencia a
[ ]
sus elementos.
; Permite separar sentencias
Permite separar identificadores consecutivos en la declaración de variables y en las listas de
,
parámetros. También se emplea para encadenar sentencias dentro de un bucle for.
Permite separar el nombre de un atributo o método de su instancia de referencia. También
.
separa el identificador de un paquete de de los subpaquetes y clases.
Conceptos Básicos del Lenguaje Java
Sentencias
Una sentencia es una orden que se le da al programa para realizar una tarea específica, esta puede
ser: mostrar un mensaje en la pantalla, declarar una variable (para reservar espacio en memoria),
inicializarla, llamar a una función, etc.
Las sentencias acaban con ; este carácter separa una sentencia de la siguiente. Normalmente, las
sentencias se ponen unas debajo de otras, aunque sentencias cortas pueden colocarse en una misma
línea.
He aquí algunos ejemplos de sentencias
int i=1;
import [Link].*;
[Link]("El primer programa");
[Link](10, 20);
Conceptos Básicos del Lenguaje Java
Expresiones
Una expresión es todo aquello que se puede poner a la derecha del operador asignación =.
Por ejemplo:
x=123;
y=(x+100)/4;
area=[Link](2.5);
Rectangulo r=new Rectangulo(10, 10, 200, 300);
La primera expresión asigna un valor a la variable x.
La segunda, realiza una operación.
La tercera, es una llamada a una función miembro calcularArea desde un objeto circulo de una clase
determinada.
La cuarta, reserva espacio en memoria para un objeto de la clase Rectangulo mediante la llamada a
una función especial denominada constructor.
Conceptos Básicos del Lenguaje Java
Valores Constantes
Cuando se declara una variable de tipo final, se ha de inicializar y cualquier intento de modificarla en el
curso de la ejecución del programa da lugar a un error en tiempo de compilación.
Normalmente, las constantes de un programa se suelen poner en letras mayúsculas, para distinguirlas
de las que no son constantes.
He aquí ejemplos de declaración de constantes.
final double PI=3.141592653589793;
final int MAX_DATOS=150;
Conceptos Básicos del Lenguaje Java
Estructuras de control
Sentencia if-else
if (condición)
{ sentencia;
}
La condición es una expresión booleana. La sentencia se ejecuta solamente si la expresión booleana
es verdadera.
if (condición)
{ sentencia1;
}
else
{ sentencia2;
}
La sentencia1 se ejecuta solamente si la expresión booleana es verdadera, caso contrario sentencia2.
Conceptos Básicos del Lenguaje Java
Estructuras de control
Sentencia switch
switch( expresión ) {
case constante1: sentencia1;
…
break;
…
case constanteN: sentenciaN;
…
break;
default: sentencia;
…
break;
}
La sentencia switch se encarga de estructurar una selección múltiple. El valor de la expresión y de las
constantes tiene que ser de tipo char, byte, short o int.
Conceptos Básicos del Lenguaje Java
Estructuras de control, bucles (ciclos repetitivos)
Las sentencias de bucle (ciclos) nos van a permitir ejecutar un bloque de sentencias tantas veces
como queramos, o tantas veces como se cumpla una condición. Las sentencias de bucle en Java son:
while, do-while y for.
La sentencia while (ciclo condicional)
Tenemos un bucle que se ejecuta mientras se cumple la condición, pero puede que no se llegue a
ejecutar nunca, si no se cumple la condición la primera vez.
while (expresión)
{
bloque_sentencias;
}
Conceptos Básicos del Lenguaje Java
Estructuras de control, bucles (ciclos repetitivos)
La sentencia do-while (ciclo condicional)
Lo que vamos a conseguir es que el bloque de sentencias se ejecute, al menos, una vez.
do {
bloque_sentencias;
} while (expresión);
Conceptos Básicos del Lenguaje Java
Estructuras de control, bucles (ciclos repetitivos)
La sentencia for (ciclo no condicional)
Nos permite escribir toda la estructura del bucle de una forma más acotada. Y es empleada
principalmente cuando se conoce a priori, el número de veces que se repetirá el ciclo.
for (sentencias_inicio ; expresión ; incremento ó decremento)
{
bloque_sentencias;
}
Una sentencia for (ciclo no condicionado), puede ser llevado a un ciclo condicionado (while, do-while).
Por el contrario, un ciclo condicionado, no siempre puede ser llevado a un ciclo no condicionado (for).
Conceptos Básicos del Lenguaje Java
Sentencias de ramificación
Las sentencias de ramificación son aquellas que nos permiten romper con la ejecución lineal de un
programa.
El programa se va ejecutando de forma lineal, sentencia a sentencia. Si queremos romper esta
linealidad tenemos las sentencias de ramificación.
Las sentencias de ramificación en Java son: break y continue.
break Cuando utilicemos el break dentro de uno de estos bucles lo que se conseguirá es
salirse de la ejecución del bucle hasta el siguiente bloque de sentencias.
continue A ejecutar una La sentencia continue dejaremos de ejecutar las sentencias que
quedan para acabar el bloque dentro de un bucle para volver a evaluar una expresión.
Enlace de Interés:
[Link]
Clases y Objetos
Una clase es un modelo o prototipo definido por el usuario a partir del cual se
crean los objetos. Representa el conjunto de propiedades o métodos que son
comunes a todos los objetos de un tipo. En general, las declaraciones de
clase pueden incluir estos componentes, en orden:
● Modificadores:
● Nombre de clase: el nombre debe comenzar con una letra (en
mayúscula por convención).
● Superclase (si corresponde):
● Cuerpo: El cuerpo de la clase rodeado de llaves: { }.
Clases y Objetos
Un objeto es una unidad básica (Instancia) de Programación Orientada a
Objetos y representa las entidades de la vida real. Un programa típico de
Java crea muchos objetos, que como usted sabe, interactúan al invocar
métodos. Un objeto consiste en:
● Estado: está representado por atributos de un objeto. También
refleja las propiedades de un objeto.
● Comportamiento: se representa mediante métodos de un objeto.
También refleja la respuesta de un objeto con otros objetos.
● Identidad: le da un nombre único a un objeto y permite que un
objeto interactúe con otros objetos.
cl
a
s
e
Objeto
Objeto
Clases y Objetos Un programa puede
Estructura básica de un programa en Java construirse empleando
varias clases.
public class Nombre_Clase
En el caso más simple se
{ /**
utilizará una única clase.
* Código de la clase
*/
Esta clase contiene el
public static void main (String[ ] args) programa, rutina o
{ método principal: main( )
// Código de la aplicación función principal y en éste se incluyen las
} sentencias del programa
} principal.
Clases y Objetos
Ejemplo de un programa en Java
class Ejemplo_Java
{
public static void main (String arg[ ])
{
[Link]("Bienvenido a la Clase");
}
}
Clases y Objetos
[Link] ( representa la salida estándar)
En Java hay algunos objetos que existen por defecto en cualquier entorno de desarrollo.
[Link] es uno de estos objetos.
El objeto [Link] es del tipo [Link] y, por ello, dispone de métodos para
escribir con formato en el flujo de salida, usualmente el monitor.
Sus métodos más interesantes son: print y println
● print: Método sobrecargado que puede recoger cualquier tipo de datos básico,
cadena u objeto, y mostrarlo de el monitor
● println: Idéntico al anterior, salvo que imprime un salto de línea al final.
[Link](argumentos);
[Link](argumentos);
Clases y Objetos
Lectura de datos por teclado
La clase Scanner de la librería [Link] es utilizada para obtener datos de entrada del
usuario a través del teclado. Esta clase reemplazó el uso de la clase DataInputStream.
Para facilitar el entendimiento de la materia, su aprendizaje y su práctica, se ha construido
la clase Lee. Dicha clase contiene métodos estáticos que nos facilita el ingreso de
información por teclado, haciendo uso internamente de la clase Scanner, y de esta manera,
evitar la definición de objetos de tipo Scanner.
Para el uso de la clase Lee, es necesario tener el archivo [Link], en el directorio de
trabajo o proyecto, a fin de facilitar el uso de los método del mismo.
El nombre de los métodos de dicha clase son intuitivos, a fin de facilitar su uso.
Clases y Objetos
Métodos de la clase Lee
String leeString( )
Cada uno de estos métodos está
byte leeByte( ) sobrecargado a fin de poder recibir un
mensaje que será desplegado al momento de
int leeInt( ) la captura.
Ej:
long leeLong( )
valor=[Link]();
float leeFloat( )
opc=[Link](“Ingrese opción entre 1 y 5”);
double leeDouble( )
boolean leeBoolean( )
char leeChar()