Java Conceptos
Java Conceptos
2
Aspectos generales
Java es... Neutro en arquitectura
Lenguaje alto nivel Porttil
Simple Seguro
Orientado objetos
Distribuido
Interpretado
Robusto
3
Las metas tecnolgicas de Java
Permitir ejecutar aplicaciones multi hilos
Cargar clases dinmicamente, en el momento
que son requeridas
Soportar dinmicamente cambios en
programas mientras la API se ejecuta
Ofrecer una mejor seguridad
4
Las metas principales de Java
La JVM (Java Virtual Machine)
Recolector automtico de memoria (Garbage
collector)
Seguridad del cdigo
5
Arquitectura
Java no se compila
Se convierte a un pseudocdigo
Un intrprete lo ejecuta en el CPU
mi_prog.java
Intrprete
mi_prog.class
Compilador
6
La mquina virtual Java
Prove las especificaciones de la plataforma de
hardware
Lee el bytecode compilado que es independiente de
la plataforma
Puede ser implementada como software hardware
Puede ser implementada como herramienta de
desarrollo de Java como un navegador Web
7
La mquina virtual de Java
Prove definiciones para:
Juego de instrucciones (CPU)
Juego de registros
El formato de los archivos de clases
El colector automtico de memoria
Espacio de memoria
8
Colector automtico de memoria
La memoria que no es usada la libera
En otros lenguajes esto es responsabilidad del
programador
Aspectos
Revisa y libera memoria no usada
Es automtico
9
Entorno de desarrollo JDK
Herramienta bsica JDK
(Java Developers Kit)
El compilador: javac.exe
El depurador: jdb.exe
El intrprete: java.exe y javaw.exe
El visualizador: appletviewer.exe
El generador de documentacin: javadoc.exe
Un desensamblador de clases: javap.exe
10
El ambiente de ejecucin
Conocido como el JRE
(Java Runtime Environment)
Realiza las siguiente tareas sobre el cdigo:
Carga
Verifica
Executa
11
El cargador de clases
Carga las clases necesarias para la ejecucin del
programa
Distingue por nombre clases del sistema local de
archivos de aquellas de la red
Ofrece seguridad evitando caballos de Troya
Previene el acceso a areas restringidas de cdigo
Solo asigna memoria una vez que todas las clases han sido
cargadas en el sistema
12
El verificador del bytecode
Asegura que el cdigo
Sea coherente con la especificacin JVM
No viola la integridad del sistema
No causa desbordamientos de pilas
Que todos los tipos de parmetros son correctos
Que no hay conversion ilegal de datos
13
Elementos Bsicos
de Java
Palabra reservada class (minusculas)
14
Practica Hola Mundo!
1. Se guardara el archivo con el mismo nombre de la clase principal, cuidando la inicial con mayscula y
extensin .java
Hola.java
2. Digita el cdigo
class Hola {
public static void main (String argumentos [ ] ){
System.out.println(Hola, mundo! );
} \\fin mtodo
} \\fin clase
3. Se compila: javac Hola.java
Nos genera el archivo Hola.class (Que contiene el cdigo bytecode)
Hola, mundo!
15
Explicacin Hola Mundo!
Declaracin del mtodo main():
public: Indica que el mtodo es pblico, puede ser llamado desde otras clases.
(Todo mtodo main() debe ser pblico para poder ejecutarse desde el intrprete de
Java (JVM)
static: Indica que la clase no necesita ser instanciada para poder utilizar el mtodo
al que califica, indica que el mtodo es el mismo para todas las instancias que se
pudieran crear.
El mtodo main debe aceptar siempre, como parmetro, un vector de string, que
contendr los posibles argumentos que se le pasen al programa en la lnea de
comandos, en este caso no se utiliza.
16
Gramtica de Java
17
Variables
Variable
Es el trmino de programacin en lenguaje Java
para definir atributos
Esta compuesta por:
Tipo
Identificador nico
18
Identificadores
Son nombres asignados a clases, variables,
mtodos.
El primer caracter vlido debe ser :
Una letra mayscula (A-Z)
Una letra minscula (a-z)
El caracter subndice (_)
El caracter dolar ($)
19
Identificadores
El segundo caracter valido debe ser:
Cualquier caracter de la lista anterior
Caracteres numricos (0-9)
Cuando el identificador tiene varias palabras cada
subpalabra inicia con mayscula
Palabras reservadas Java no deben ser usadas
El lenguaje Java es sensitivo en caracteres
maysculas/minsculas
20
Por convencin:
Las clases deben comenzar con una letra Mayscula
21
Ambito de las variables
Variables locales
Existen solo en el metodo() en que se definieron
public void primerMetodo(){
int i =4, j=5;
}//fin metodo
Variables globales
Todos los mtodos de la clase las conocen y se definen al
inicio de la clase
public class AmbitoVariables{
private int i =1;
}//fin clase
22
Tipos primitivos Java y tipos de
referencia
23
Tipos primitivos Java
Tipos primitivos son 8:
Lgicos - boolean
Texto - char
Enteros byte, short, int, long
Flotantes double, float
24
Lgicos - boolean
El tipo boolean tiene dos literales:
true
false
Ejemplo:
boolean hecho=true;
Declara la variable hecho como un tipo boolean y
le asigna el valor de true
25
Texto- char y String
char
Representa un caracter Unicdigo de 16 bits
Debe tener su literal encerrada en comillas ()
Usa la siguiente notacin:
a La letra a
\t Un tabulador insertado
26
Texto- char y String
String
No es un tipo primitivo, es una clase
Tiene sus literales encerradas entre comillas ()
El perro esta contento con su hueso
Puede ser usado como a continuacin:
String saluda = Buenos das !!! \n;
String mensajeError = Registro no encontrado \n;
27
Enteros- byte, short, int, long
Usa tres formas Decimal, octagecimal
hexadecimal
2 forma decimal del entero 2
O77 la O indica un valor octagecimal
0xBAAC el 0x indica un valor hexadecimal
28
Enteros- byte, short, int, long
Los tipos enteros tienen los rangos:
29
Punto flotante- float, double
Se utilizan cuando se calculan funciones
que requieren precisin fraccionaria
Raz cuadrada
Trigonomtricas
float f2 = 3.14f;
Seno y el coseno
double pi = 3.14159365358979323846;
double 64 1.7e-308..1.7e+308
float 32 3.4e-038..3.4e+038
30
Punto flotante- float, double
Por defaulf es double (64 bits)
La literal de punto flotante (32 bits) incluye el punto decimal o
alguno de los siguientes:
E e (para adicionar un valor exponente)
F f (flotante) (32 bits)
D d (double) (64 bits)
3.14 Un simple valor de punto flotante
6.02E23 Un valor grande de punto flotante
2.718F Un simple valor float
123.4E+306D Un double muy grande con D
redundate
31
Tipos por referencia en Java
Dspues de los tipos primitivos el resto son
tipos por referencia
Una variable por referencia tiene un
manejador asociado a un objeto.
32
Tipos por referencia en Java
Ejemplo
MiFecha.java
public class MiFecha{
private int dia = 1;
private int mes = 1;
private int ao =2002;
public MiFecha(int dia, int mes, int ao){}
}//MiFecha
PruebaMiFecha.java
public class PruebaMiFecha{
public static void main(String[] args){
MiFecha hoy= new MiFecha(22,9,1971);
}//main
}//PruebaMiFecha
33
Construccin e inicializacin de
instancias de objetos
Mediante la palabra new XXX() se asigna un lugar en
:
Asignacin de un espacio de memoria y se inicializan sus
variables (ej.- 0, false, null..)
La asignacin explicita de atributos
Un constructor se ejecuta
La asignacion de una variable referencia el objeto en
memoria
Ejemplo:
MiFecha miFecha = new MyFecha(22,09,1971);
34
Asignacin de memoria
Una declaracin asigna espacio solo para una
referencia:
MiFecha miAniversario;
miAniversario ????
da 0
mes 0
ao 0
35
Inicializacin explcita de atributos
Inicializar atributos
MiFecha miAniversario = new MiFecha(22,09,1971);
miAniversario ????
da 1
mes 1
ao 2002
Los valores por default son tomados de la
declaracin de atributos en la clase
36
Ejecucin del constructor
Ejecuta el constructor correspondiente
MiFecha miAniversario = new MiFecha(22,09,1971);
miAniversario ????
da 22
mes 09
ao 1971
Si el constructor es sobrecargado, el primer
constructor llama al otro.
37
Asignacin de una variable
miAniversario 0x01abcdef
da 22
mes 09
ao 1971
38
Asignando tipos de referencia
int x =9;
int y =x;
MiFecha s =new MiFecha(22,9,1971)
MiFecha t = s;
t= new MiFecha(22,12,1970);
39
Pasaje por valor
El lenguaje Java solo pasa argumentos por
valor.
Cuando una instancia de objeto es pasada
como argumento a mtodo, el valor del
argumento es referenciado al objeto.
Los contenidos del objeto pueden ser
cambiados en el mtodo pero el objeto
referenciado nunca cambia.
40
Ejemplo
PruebaPasaje.java
public class PruebaPasaje{
//intenta cambiarlo
//Mtodos para cambiar los valores actuales cambiaInt(val);
public static void cambiaInt(int valor){ //cual es el valor actual?
valor = 55; System.out.println("El valor int es: " +val);
}//cambiaInt(..
//asignar la fecha
public static void cambiaRefObjeto(MiFecha ref){ fecha = new MiFecha(22,7,1964);
ref = new MiFecha(1,1,2000); //intenta cambiarla
}//cambiaRefObjeto(.. cambiaRefObjeto(fecha);
//cual es el valor actual?
public static void cambiaAtribObjeto(MiFecha ref){ fecha.print();
ref.setDa(4);
}//cambiaAtribObjeto(.. //Ahora cambio de atributo de da
//via la referencia del objeto
public static void main(String args[]){ cambiaAtribObjeto(fecha);
MiFecha fecha; //cual es el valor acutal?
int val; fecha.print();
}//main
//Asignar el int }/*class PruebaPasaje */
val = 11;
41
Resultado programa?
Java PruebaPasaje
El valor Int es: 11
MiFecha: 22-7-1964
MiFecha: 4-7-1964
42
La referencia this
Es una palabra reservada que sirve para:
Referenciar un atributo local y miembros de
mtodos dentro de un mtodo o constructor local.
Ayuda a distinguir entre un a variable local de un
mtodo constructor con respecto a una variable de
instancia de clase.
Pasar el objeto actual como un parmetro a otro
mtodo constructor.
43
Convenciones de codificacin de
programas en Java
Paquetes
package mundo.pais;
Clases
class Francia
Interfaces
interface Comida
Mtodos
ofreceDesayuno()
44
Convenciones de codificacin de
programas en Java
Variables
bebida
Constantes
LECHE_CON_CHOCOLATE
MEDIDA_TAZA
45
Convenciones de codificacin de
programas en Java
Estructuras de control:
if ( condicin) { Requieren
llaves {}
haz algo/*comentario*/
} else {
haz otra cosa //comentarios
}
Solo una
instruc- Usar identacin para
cin x cdigo claro
linea
46
Variables y contexto
Variables locales:
Definidas en un mtodo y llamadas: locales,
automticas, temporales, de pila.
Variables creadas cuando el mtodo se ejecuta y
destruidas al salir del mtodo.
Deben inicializarse antes de ser usadas para evitar
errores de compilacin.
47
Ejemplo de contexto en variables
EjemploContexto.java
public class EjemploContexto{
private int i=1;
PruebaContextos.java
public void primerMetodo(){
int i=4, j=5;
public class PruebaContextos{
this.i = i+j;
public static void main(String[] args){
segundoMetodo(7);
EjemploContexto contexto =
}//primerMetodo()
new EjemploContexto();
contexto.primerMetodo();
public void segundoMetodo(int i){
}//main
int j=8;
}/*class PruebaContextos*/
this.i=i+j;
}//segundoMetodo()
}/*class EjemploContexto*/
48
Inicializacin de variables
Variable Valor
byte 0
short 0
int 0
long 0L
float 0.0F
double 0.0D
char \u0000
boolean false
Todo tipo referencia null
49
Operadores
Los operadores realizan algunas funciones en uno o dos operandos.
3 + 4
Operador
Los operadores que requieren un operador se llaman operadores unarios. Por
ejemplo, ++ es un operador unario que incrementa el valor su operando en
uno.
Los operadores que requieren dos operandos se llaman operadores
binarios. El operador = es un operador binario que asigna un valor del
operando derecho al operando izquierdo.
50
Operadores
La notacin de sufijo significa que el operador aparece despus de
su operando:
operando operador
a++;
Operadores Aritmticos
Operadores relacionales
Operadores de Desplazamiento
51
Operadores Aritmticos
Operador Uso Descripcin
53
Operadores Relacionales y Condicionales
Los valores relacionales comparan dos valores y determinan la
relacin entre ellos. Por ejemplo, != devuelve true si los dos
operandos son distintos.
54
Operadores condicionales
Operador Uso Devuelve true si
! ! op op es falso
Operadores de Desplazamiento
Los operadores de desplazamiento permiten realizar una manipualcin
de los bits de los datos.
55
Operadores
Operador Uso Equivale a
56
Operadores
Separador . [] () ; ,
57
Operadores lgicos
Los de corto-circuito booleanos son:
&& - AND || - OR
Ejemplo de uso :
MiFecha f;
if ((f != null) && (f.dia > 31)) {
// hacer algo con f..}
58
Concatenacin de Strings con +
El operador +
Realiza concatenaciones de Strings
Produce un nuevo String
String grado = Dr.;
String nombre = Victor + +Larios;
String ttulo = grado + + nombre;
Uno de los argumentos debe ser un objeto String
Los Strings no objeto son convertidos automticamente
59
Cast
Si la informacin de tipo por referencia es perdida
en una asignacin, el programador debe confirmar
la asignacin con un cast de tipo
Asignar un long y un int requiere un cast explcito:
La sintaxis de la instruccin
if (expresin booleana) {
enunciado bloque;
}
if (expresin booleana) {
enunciado bloque;
} else if (expresin booleana) {
enunciado bloque;
} else {
enunciado bloque;
}
62
Instrucciones de flujo if..else
public class ControlFlujo{
public static void main(String arg[]){
//Asigacion de variable
byte caliEstudi= 100;
//Flujo de control if
if( caliEstudi >= 60)
System.out.println("Aprobado " + caliEstudi);
}//main
}//class
63
Instrucciones de flujo if..else
//Flujo de control if
if( caliEstudi >= 60){
System.out.println("Aprobado " + caliEstudi);
}else{
System.out.println("Reprobado!! " + caliEstudi); }//else
64
Instrucciones de flujo
if..else anidado
//if else anidado
if(caliEstudi >= 90)
System.out.println("A " + caliEstudi);
else
if(caliEstudi >= 80)
System.out.println("B " + caliEstudi);
else
if(caliEstudi >= 70)
System.out.println("C " + caliEstudi); else
if(caliEstudi >= 60)
System.out.println("D " + caliEstudi); else
System.out.println("F Reprobado!! " + caliEstudi);
65
Instrucciones de flujo
67
Instrucciones de flujo swich
public class SwitchTemporada{
public static void main(String arg[]){
int mes=4; case 6:
case 7:
String estacion;
case 8:
switch(mes){
estacion = "Verano";
case 12: break;
case 1: case 9:
case 2: case 10:
estacion = "Invierno"; case 11:
break; estacion = "Otoo";
case 3: break;
case 4: default:
case 5: estacion = "Mes desconocido";
estacion ="Primavera"; }//fin switch
break; System.out.println("Abril esta en " + estacion + ".");
}//main
}//class
68
Instrucciones de lazo
El lazo for
Ejemplo:
for (int i = 0; i < 10; i++){
System.out.println(Ya terminaste?);
}
System.out.println(Terminado!);
69
Programa que lea N nmeros, calcule y escriba
la suma de los pares y el producto de los
impares.
70
Hacer un diagrama de flujo y pseudocdigo
de la suma y el promedio de los N nmeros
pares empezando de un valor inicial M, tanto
N como M deben ser ingresado por teclado?
71