Download Descarga

Document related concepts
no text concepts found
Transcript
INTRODUCCIÓN AL
LENGUAJE JAVA
M.C Alejandro Castellanos Lopez
1
1
¿Qué es Java?
• Es un lenguaje de programación orientado a
objetos.
• Creado en 1991 por Sun Microsystems (James
Gosling) para dispositivos electrónicos:
calculadoras, microondas y la televisión
• El lenguaje en sí mismo toma mucha de su
sintaxis de C y C++, pero tiene un modelo de
objetos más simple y elimina herramientas de
bajo nivel.
• Es independiente de la plataforma
• Posee un sistema de administración de memoria
automático.
M.C Alejandro Castellanos Lopez
2
Un poco de historia
• Java se creó originalmente como una
herramienta de programación para un
proyecto set-top-box conocido como
*7.
• Fue realizado por un equipo de 13 personas,
dirigidas por James Gosling.
M.C Alejandro Castellanos Lopez
3
Java Development Kit (JDK)
• El JDK consiste de lo siguiente:
– El Java development tools, incluyendo el
compilador, debugger y el intérprete Java.
– Las Java class libraries organizadas como una
colección de paquetes.
– Un número importante de programas de
demostración.
– Varias herramientas de soporte y componentes,
incluyendo el código fuente de las clases en la
biblioteca.
• URL: java.sun.com/javase/downloads
M.C Alejandro Castellanos Lopez
4
Ambientes de desarrollo Java (IDEs)
• Un IDE (del inglés Integrated Development
Enviroment). Es un ambiente que integra un
conjunto de herramientas (editor con prestaciones
especiales, compilador, administración de proyectos,
debugger,etc) que permiten realizar todo el proceso
de desarrollo dentro del mismo.
• Si bien es posible escribir nuestros programas java
en cualquier editor de texto y compilarlos desde una
consola con javac, es mas cómodo y recomendable
trabajar desde un IDE.
M.C Alejandro Castellanos Lopez
5
¿Porqué Java?
• El lenguaje se denominó inicialmente “Oak”. Luego pasó
a denominarse “Green” tras descubrir que Oak era ya
una marca comercial registrada.
• El término “JAVA” fue acuñado en una cafetería
frecuentada por algunos de los miembros del equipo.
• No está claro si es un acrónimo o no, algunas hipotesis
indican que podría tratarse de las iniciales de sus
creadores: James Gosling, Arthur Van Hoff, y Andy
Bechtolsheim. Otras abogan por “Just Another Vague
Acronym”.
• La hipótesis que más fuerza tiene es la que Java debe su
nombre a un tipo de café disponible en la cafetería.
M.C Alejandro Castellanos Lopez
6
Características de Java
Características de Java I
• Lenguaje de fácil uso orientado a objetos
• Lenguaje compilado e interpretado
• Facilita un entorno interpretado:
– Velocidad de desarrollo
– Portabilidad del código
• Ejecución multitareas
• Cambios dinámicos en tiempo de ejecución
• Seguridad del código.
M.C Alejandro Castellanos Lopez
8
La máquina Virtual Java - JVM (I)
• Es una máquina hipotética que emula por software una
máquina real. Es definida por una especificación.
– Conjunto de instrucciones de máquina
(C.O.) + Operandos
– Pila
– Memoria
– ...
• El compilador genera bytecodes (instrucciones de código
maquina para la JVM)
• El interprete tarduce y ejecuta los bytecodes para cada
máquina específica.
M.C Alejandro Castellanos Lopez
9
La máquina Virtual Java (II)
Código fuente
Compilador Java
Byte-codes
Macintosh JVM
Win32 JVM
UNIX JVM
Código máquina
Macintosh
Código máquina
Win32
Código máquina
UNIX
M.C Alejandro Castellanos Lopez
10
.java, .class, JVM???
• En Java el código fuente se escribe en un archivo de
texto plano con extensión .java.
• Luego, el código es compilado a archivos .class. Un
archivo .class no contiene código nativo a un tipo de
procesador, en cambio contiene bytecodes.
• Finalmente, la aplicación es interpretada por la
maquina virtual de Java, transformando los
bytecodes en código nativo en tiempo de ejecución.
M.C Alejandro Castellanos Lopez
11
Bytecode
• El bytecode es lenguaje nativo de cualquier implementación
de la maquina virtual de Java. De esta forma se logra que un
programa Java corra en cualquier plataforma que disponga
de una JVM.
M.C Alejandro Castellanos Lopez
12
Compilador e intérprete de Java (I)
• El compilador analiza la sintaxis del código fuente (con
extensión .java). Si no hay errores, genera bytecodes
> javac <Nombre>.java
• El intérprete es la Máquina Virtual de Java que ejecuta
los bytecodes (*.class) creados por el compilador.
> java <Nombre> (sin extensión)
> java <Nombre> arg1 arg2 …
M.C Alejandro Castellanos Lopez
13
Compilador e intérprete de Java (II)
Codigo fuente
HelloWorld.java
compilar
javac HelloWorld.java
HelloWorld.class
java HelloWorld
ejcutar
bytecode
M.C Alejandro Castellanos Lopez
14
Caracteristicas del lenguaje
•
•
•
•
•
•
•
•
Sensible a mayúsculas/misnúsculas
Comentarios
Lenguaje de formato libre
Identificadores
Palabras reservadas
Variables y constantes
Convenciones de nomenclatura
Tiene reglas sobre los tipos de datos
M.C Alejandro Castellanos Lopez
15
Comentarios
// comentario
Los caracteres desde // hasta el final de la línea
son ignorados.
/* comentario */
Los caracteres entre /* y */ son ignorados
/** comentario */
Los caracteres entre /** y */son ignorados y se
incluyen en la generación autómatica de la
documentación.
M.C Alejandro Castellanos Lopez
16
Lenguaje de formato libre
• La disposición de los elementos dentro del código es libre
• Instrucciones: línea simple de código terminada en ;
• Bloque de código: Conjunto de sentencias agrupadas entre
llaves.
{
X = x + 1;
Y = y + 1;
}
• Java permite espacios en blanco entre elementos del código
X1 = y
* delta;
X2 = (y-1) * delta;
M.C Alejandro Castellanos Lopez
17
Palabras Reservadas
• Palabras con un significado especial para el compilador
• Ejemplos:
–
–
–
–
–
–
–
–
Nombres de tipos básicos: boolean, char, double, int, …
Indicadores de controls: do, if, else, for, while, …
Class, interface, extends, implements
package, import
this, super
Modificadores de acceso: public, private, protected
Constantes: true, false, null
Etc…
M.C Alejandro Castellanos Lopez
18
Variables y Constantes
• Variable: Zona de memoria cuyos valores van a
cambiar durante la ejecucuión.
• Declaración:
– <tipo> <variable>;
– <tipo> <var1>, <var2>, ..., <varn>;
– <tipo> <var1> = <valor>;
M.C Alejandro Castellanos Lopez
19
Variables y Constantes
• Ejemplos de declaración de variables:
–
–
–
–
int x,y,z;
int x = 9;
boolean terminar = false;
Cliente c1 = new Cliente();
• Constantes: Zona de memoria cuyos valores no
cambian
• Declaración:
– final <tipo> <variable> = <valor>;
• Ejemplo: final double PI = 3.14159;
M.C Alejandro Castellanos Lopez
20
Asignaciones
• Se utiliza el operador de asignación =
– <tipo> <variable> = <valor>;
– <tipo> <variable>;
<otras instrucciones>...
<variable> = <valor>;
• La parte izquierda siempre debe ser una variable
• La parte derecha puede ser un literal, una
variable, una expresión, una función o una
combinación de todos.
– int x = 4; //Declaracion con asignación
– x = 9;
//Se asume que x está definida
M.C Alejandro Castellanos Lopez
21
Un programa Simple
public class ProgramaSimple
{
public static void main(String[] args)
{
System.out.println("Este es” + ”un programa simple");
System.exit(0);
}
}
M.C Alejandro Castellanos Lopez
22
Java en detalle
Inicialización de Variables
• El lenguaje Java es fuertemente tipado, lo que significa
que todas las variables deben ser declaradas antes de
utilizarse.
int unaVariable = 1;
M.C Alejandro Castellanos Lopez
23
Tipos de Datos y Operadores
Tipos de Datos
• Java define dos tipos de datos
– Tipos primitivos
– Tipos referencia
• Los tipos primitivos son ocho agrupados en
cuatro categorías:
–
–
–
–
Lógico: boolean
Texto: char
Entero:byte, short, int, long
Real: float, double
• Los tipos referencia son apuntadores a objetos.
M.C Alejandro Castellanos Lopez
25
Java en detalle
Tipos Primitivos
M.C Alejandro Castellanos Lopez
26
Java en detalle
Tipos Primitivos (II)
M.C Alejandro Castellanos Lopez
27
Tipos de datos Referencia
• Un tipo referencia guarda un apuntador a la dirección
donde se ubica el objeto (32 bits).
• Sólo puede almacenar objetos de su propio tipo.
• Ejemplo:
Cuadrado cuad1, cuad2;
Circulo circ1;
cuad1 = new Cuadrado();
circ1 = cuad1;
// Error de compliación
cuad2 = cuad1’;
// Ok
• Todas las clases son de tipo referencia.
• El valor que toma por defecto una variable de tipo
referencia es null.
M.C Alejandro Castellanos Lopez
28
La clase String
• Java provee soporte especial para las cadenas de
caracteres a través de la clase java.lang.String
• No es un tipo primitivo.
• Sin embargo, mediante sobrecarga de operadores
pueden realizarse operaciones como:
String unString = “Juan” + “ ” + “Perez”;
• Java también provee un amplio conjunto de
operaciones para manipular las instancias de esta
clase.
M.C Alejandro Castellanos Lopez
29
Cadenas de Caracteres
• La clase String permite manejar cadenas de caracteres.
• El literal string debe ir entre comillas dobles “”.
• Se puede crear una cadena de caracteres de dos formas:
– String nombre = new String(“Pepe”);
– String nombre = “Pepe”;
• Para concatenar dos cadenas se usa el operador +.
• No se guarda el carácter fin de cadena.
M.C Alejandro Castellanos Lopez
30
Conversiones de tipos
• La conversión de tipos (casting) debe realizarse entre
tipos de la misma naturaleza: numéricos o referencia.
• Al convertir un tipo a un tamaño más pequeño se puede
perder la información del los bits de mayor peso.
• No hay conversión automatica con el tipo boolean!
• La sintaxis es: (<tipo>) <expresion>
• Ejemplo: int i = (int) 1.345;
M.C Alejandro Castellanos Lopez
31
Operadores: precedencia y
funcionalidad
M.C Alejandro Castellanos Lopez
32
Operadores: precedencia y
funcionalidad (II)
M.C Alejandro Castellanos Lopez
33
Ejemplo con operadores arimeticos
int i=2+3; // i vale 5
i=i+1; //i vale 6
i=6*2; //i vale 12
i=2+5*2%8; //i vale4
M.C Alejandro Castellanos Lopez
34
Ejemplo con operadores posfix y
unarios
int i=5; // i vale 5
System.out.println(i); //Imprime:5
System.out.println(++i); //Imprime:6
System.out.println(i++); //Imprime:6
System.out.println(i); //Imprime:7
M.C Alejandro Castellanos Lopez
35
Ejemplos de paquetes Java
• java.io
– El paquete de entrada/salida contiene las clases de acceso a archivos:
FileInputStream y FileOutputStream, etc.
• java.lang
– Incluye las clases del lenguaje Java propiamente dicho: Object,
Thread, Exception, System, Integer, Float, Math, String, etc.
• java.util
– Miscelánea de clases útiles para muchas cosas en programación.
– Incluyen, Date (fecha), Dictionary (diccionario), Random (números
aleatorios) y Stack (pila FIFO).
M.C Alejandro Castellanos Lopez
36
java.lang
• Tipos primitivos encapsulados en clases:
–
–
–
–
–
–
–
–
–
Boolean
Byte
Character
Double
Float
Integer
Long
Short
Void
M.C Alejandro Castellanos Lopez
37
java.lang
• Ejemplo: Integer (interfaz pública):
– public final class Integer extends Number
– Variables:
• MAX_VALUE (valor mayor de “int”)
• MIN_VALUE (valor mínimo de “int”)
– Constructores:
• Integer(int)
• Integer(String)
– Métodos:
• Conversión a otros tipos: doubleValue(), floatValue(), intValue(),
parseInt(String), toString(), valueOf(String)
• Obtención de valor como un “int”: intValue()
M.C Alejandro Castellanos Lopez
38
java.lang
• Constructores:
– String(byte[])
– String(char[])
– String(String)
• Ejemplos:
char[]
String
String
String
chars = {’a’,’b’,’c’};
s = new String(chars);
s1 = “Hello”;
s2 = new String(s1);
M.C Alejandro Castellanos Lopez
39
java.lang
• Métodos de manipulación de strings:
– length() , concat(String), indexOf(String),
lastIndexOf(String) , toUpperCase(), ...
• Métodos de conversión desde otros tipos:
– valueOf(double), valueOf(int), ...
• Operador “+” en strings está sobrecargado:
– 3+”abc”+3.4
M.C Alejandro Castellanos Lopez
40
java.lang
• Clase Math
• Constantes:
– E, PI
• Métodos:
– abs(double), acos(double), asin(double), atan,
cos, exp, log, max(double, double),
pow(double, double), round (float)
M.C Alejandro Castellanos Lopez
41
Otros paquetes
• Package java.util
– Clases: Vector, Date, HashMap, StringTokenizer…
• Package java.text
– Clases: DateFormat, DecimalFormat… (sirven para
variantes de formato).
• Package java.math
– Clases: BigDecimal, BigInteger… (arbitraria precisión y
capacidad).
M.C Alejandro Castellanos Lopez
42
M.C Alejandro Castellanos Lopez
43
M.C Alejandro Castellanos Lopez
44
A=5
B=3
C=7
D=2
M.C Alejandro Castellanos Lopez
45
Desarrollar un programa en Java para convertir
M.C Alejandro Castellanos Lopez
46
¿Preguntas?
M.C Alejandro Castellanos Lopez
47