Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
Java
• Objetivo inicial: un lenguaje de programación para
dispositivos de consumo
• Requerimientos: pequeño, rápido, confiable y
portable
• En 1994 se produce la explosión del Web, y Sun
advierte que Java es ideal para aplicaciones Internet:
– Independiente de la plataforma
– Pequeño
– Seguro
2
El Lenguaje Java
• Independiente de la plataforma
• Seguro
• Simple
• Robusto
• Orientado a Objetos
• Distribuido
• Multi-threaded
• Ref:
http://www.oracle.com/technetwork/java/javase/documentation/index.h
tml
3
El Modelo Java
• Al compilar un programa Java, se genera un
código de máquina intermedio definido por
Sun, que recibe el nombre de bytecode
4
El Modelo Java
• El código bytecode es portable entre
diferentes plataformas
5
Tipos de Archivos Java
• Todo archivo define una clase o una interfaz
• Clase:
– Define e implementa un tipo de objeto
– Variables (representación)
– Procedimientos (funciones)
• estáticos (especial: main)
• y dinámicos (se ejecutan sobre un objeto)
• Interfaz
– Define la firma de un procedimiento
6
Un archivo básico para hacer un
programa que corra
public class MiClase {
static public void main(String[] args) {
Aqui van las instrucciones que se ejecutarán cuando se “eche a
correr” la clase
}
}
8
Ejemplo 2
import java.util.*; //para usa Scanner
public class ChequeoEdad {
static public void main(String[] args) {
scanner s = new scanner(System.in);
System.out.println(″Cual es tu nombre ? ″);
String nomb = s.nectLine();
System.out.print(″Qué año nasciste ? ″);
int an = s.nextInt();
int mls = System.currentTimeMillis();
int ah = (int)(mls/1000/3600/24/365.25 +1970);
System.out.print(nomb+″ tiene cerca de “);
System.out.print((an-ah)+” años “);
}
}
9
Características del Lenguaje
• Case-sensitive: diferencias entre mayúsculas y
minúsculas
• Todas las sentencias terminan con un punto-
coma (;)
• Los espacios blancos (incluyendo tabs y fines
de línea) se ignoran, excepto al interior de
strings
10
Comentarios
// comentario Caracteres desde //
hasta el fin de línea
son ignorados
/* comentario */ Caracteres entre /* y
*/ son ignorados
/** comentario */ Caracteres entre /**
y */ son ignorados e
incluidos en la
documentación javadoc
11
Javadoc
12
Identificadores
• Nombre dado a una variable, clase, o método
• Comienza con una letra Unicode (incluyendo _
y $), a la que pueden seguir letras y dígitos
• Puede tener cualquier tamaño
• Ejemplos
– apellido
–$
–
13
Tipos, Valores y Variables
• En Java existen 2 categorías de tipos:
– Primitivos: boolean, char, byte, short, int, long, float, double
– Referencias: objetos, interfaces, arreglos
• Una variable es un espacio de memoria que puede
almacenar:
Tipo de la variable Puede almacenar
Primitivo Un valor del tipo que se declaró
Clase El valor null, o una referencia a una instancia de
la clase o de alguna subclase de la clase
Interfaz El valor null, o una referencia a una instancia de
alguna clase que implemente la interfaz
Arreglo El valor null, o una referencia a un arreglo de
elementos del tipo del arreglo
14
Tipos de Datos Primitivos
Tipo Valores
15
Variables
• Una variable es un espacio de almacenamiento de
datos, con un nombre y un tipo de datos asociado
16
Valores Iniciales
• Variables de instancia y de clase
– tipos primitivos numéricos 0
– char '\u0000'
– boolean false
– referencias null
• Variables locales
– Deben ser inicializadas explícitamente antes de ser
usadas; de lo contrario se produce un error de
compilación
17
Constantes
• Una vez inicializadas, no pueden ser modificadas
• Se utiliza la palabra reservada final para definir una
constante
• Típicamente las constantes se definen como static,
para no instanciarlas con cada objeto
• Ejemplo
class Circulo {
static final double PI = 3.1416;
}
18
Conversión de Tipos
• Java es fuertemente tipeado
– Chequea compatibilidad de tipos en tiempo de
compilación
– Permite hacer cast entre tipos
– Provee operadores para determinar el tipo de un
objeto en tiempo de ejecución
19
Conversion Implícita
• Cualquier valor numérico puede ser asignado
a una variable numérica que seoporte un
rango de valores más amplio
byte short int long float double
más chico más grande
• Ejemplo
int i = 1000;
double d = i;
20
Cast Explícito
• Cuando una conversión implícita no es
posible, un cast explicita la conversión a
realizar
• Sólo se permiten casts que tienen sentido
21
Cast de Tipos Primitivos
• Puede perderse precisión
double d = 20.5;
long l = (long) d; 20
System.out.println(l);
• Pueden perderse dígitos
long l = 1000000;
short s;
s = (short) l; 16960
System.out.println(s);
22
Bloque
• Cualquier número de sentencias agrupadas
entre un par de llaves { }
• Puede ser usado en cualquier lugar donde se
acepta una sentencia simple
• El bloque define el ámbito (scope) de las
variables
• El bloque provee contornos para el control de
flujo del procesamiento
23
Ambito de Variables
public class MiClase {
int a;
static int b;
public void miMetodo( ) {
int c;
if (condicion){ {
int d;
. . .
}
} d fuera de ámbito
} c fuera de ámbito
} a y b fuera de ámbito
24
Operador de Asignación
• Se usa el símbolo = para asignar un valor
• Ejemplo
sueldo = 1000000;
validado = true;
• La asignación puede ocurrir en la declaración
String nombre = "Paula";
25
Operadores Aritméticos
+ Suma
- Resta
* Multiplicación
/ División
% Resto
26
ejemplos
public class Nombre_Clase {
public static void main (String args[]) {
//bloque de sentencias;
}
}
27
ejemplos
public class Mi_Clase_1 {
public static void main(String args[])
{
for(int i = 0; i <= 12; i++)
{ System.out.print("12 * "+ i + " = " + 12 * i +
"\n");
}
}
}
28
Métodos Estáticos
• Se identifican con el selector static
• Devuelven o no un resultado de un cierto
tipo
• Reciben un número determinado de
parámetros de tipo determinado
• Métodos de igual nombre pero con distinto
número o tipo de parámetros son métodos
distintos !
29
Métodos en la misma clase
public class MiClase {
}
30
Métodos en otra clase
public class Sumas { //En archivo Sumas.java
public int suma(int x, int y ) {
return x+y;
}
static public int suma(int x, int y, int z) {
return x+y+z
}
}
public class MiClase { //En archivo MiClase.java
static public void main(String[] args) {
System.out.println(Sumas.suma(5,4)+” “+
Sumas.suma(2,3,4));
}
}
31
Parámetros pasdos por valor
public static int fact(int x) {
resultado = 1;
while (x > 1) {
resultado *= x;
x--;
}
return resultado;
}
public static void main(String[] args) {
Scanner c = new Scanner(System.in);
System.out.print(“ingrese un numero:”);
int numero = c.nextInt();
int res = fact(numero);
System.out.println(“El factorial de “+numero+” es “+res);
//numero no se modifica porque se le pasa una copia
}
Operadores Abreviados
var op= expression
es equivalente a:
var = var op (expression)
• Ejemplo
a *= b + 1;
es equivalente a:
a = a * (b + 1);
33
Incremento y Decremento
• i++ es equivalente a i = i + 1
i-- es equivalente a i = i - 1
• Ejemplo
int x = 10;
System.out.println( x++ ); // x=11, print 10
System.out.println( ++x ); // x=12, print 12
System.out.println( x ); // print 12
34
Sentencias de Control de Flujo
• if / else
• switch
• for
• while
• do / while
35
if
if ( result == 0 ) {
System.out.println("No encontrado!");
}
36
if / else
if (rol.equals("administrador")) {
// acceso a administración;
} else {
// no tiene acceso a administración
}
37
Operadores Relacionales
> Mayor
>= Mayor o igual
< Menor
<= Menor o igual
== Igual
!= Distinto
38
Operadores Lógicos
&& and
|| or
! not
• Ejemplo
boolean fin =
eof ||
(str != null && str.equals(patron));
39
if / else if / else
public static diasVac(int años) {
if ( años < 0 || años > 100)
vacaciones = -1;
if ( años < 5 ) {
vacaciones = 10;
} else if ( años < 10 ) {
vacaciones = 15;
} else {
vacaciones = 20;
}
return vacaciones;
}
40
Operador "?"
• Expresión condicional:
– condición ? expresión 1 : expresión 2
• El valor de la expresión es expresión 1 si la condición
es verdadera, y expresión 2 de lo contrario
• Ejemplo
montoNeto = hayImpuesto ? p * 1.05 : p;
es equivalente a:
if (hayImpuesto) {
montoNeto = p * 1.05;
} else {
montoNeto = p;
}
41
Más ejemplos:
static public int factorial(int x){
return x==0 ? 1 : x*factorial(x-1);
}
es equivalente a:
static public int factorial(int x){
if(x==0) return 1; else return x*factorial(x-1);
}
static public int digitos(int x){
return x<10 ? 1 : 1+digitos(x/10);
}
es equivalente a:
43
break
• break causa el fin del ciclo en el que se
encuentra
while ( condición ) {
sentencias…
if (condición de salida) {
break;
}
más sentencias…
}
44
continue
• continue causa el fin de la iteración actual y
el paso a la siguiente
while ( condición ) {
sentencias…
if (condición siguiente iteración) {
continue;
}
más sentencias…
}
(ver ejemplos instrucciones especiales)
45
Programa que calcule el promedio de
una cantidad indeterminada de números:
Scanner s = new Scanner(System.in);
double suma=0; int n=0;
double numero=s.nextDouble();
while( numero != 0 )
{
suma=suma+numero;
n=n+1;
System.out.println(“promedio=”+suma/n);
numero=s.nextDouble();
}
46
Refinamiento : La asignación como
expresión
Scanner s = new Scanner(System.in);
double suma, numero; int n;
suma = n = 0;
while((numero=s.nextDouble())!=0)
System.out.println(“promedio=” +
(suma=suma+numero)/(n=n+1));
}
//otra posibilidad
System.out.println(“promedio=”+
(suma+=numero)/(n+=1));
47
switch
• Selección múltiple switch (<expresión>)
• switch <expresión> debe {
evaluar un int case <expresión>:
• case <expresión> debe ser ...
un literal o un campo static break;
final case <expresión>:
• break abandona el bloque ...
del switch (de otra manera break;
los siguientes cases son
ejecutados sin ser default:
evaluados) ...
}
• El bloque default es opcional
48
Ejemplo de switch
public static void main(String[] args) {
switch (args.length) {
case 0:
FileEditor e = new FileEditor();
break;
case 1:
FileEditor e = new FileEditor(args[0]);
break;
default:
// mensaje de error y fin
}
}
49
Función que entregue el Nº de días de un mes
54
Ejemplo de for
for ( x=0; x<10; x++ ) {
// ejecuta el bloque mientras x < 10
}
55
Ejemplo de for
static public boolean primo(int x) {
if(x%2==0) return x==2;
for(int i=3; i<=(int)Math.sqrt(x); i+=2)
if(x%i==0) return false;
return true;
}
57
Ejemplo
search:
for (...) {
for (…) {
if (...) {
break search;
}
}
}
58