0% encontró este documento útil (0 votos)
101 vistas136 páginas

Curso Básico de Java J2SE

El documento describe el lenguaje de programación Java. Java fue desarrollado por primera vez en 1991 por Sun Microsystems. Java es un lenguaje orientado a objetos multiplataforma que se ejecuta en una máquina virtual de Java (JVM). Las características clave de Java incluyen su enfoque en la programación orientada a objetos, su naturaleza multiplataforma y su capacidad de recogida de basura automática.

Cargado por

Quirino Quirino
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
101 vistas136 páginas

Curso Básico de Java J2SE

El documento describe el lenguaje de programación Java. Java fue desarrollado por primera vez en 1991 por Sun Microsystems. Java es un lenguaje orientado a objetos multiplataforma que se ejecuta en una máquina virtual de Java (JVM). Las características clave de Java incluyen su enfoque en la programación orientada a objetos, su naturaleza multiplataforma y su capacidad de recogida de basura automática.

Cargado por

Quirino Quirino
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

Curso de Java J2SE

Instructor: ISC. Yasmin Melo Jacinto


Antecedentes
 Sun Microsystems

 1991: se desarrollo la
primera versión del lenguaje

 Lenguaje utilizado por la


comunidad mundial de
desarrolladores
Ir al sitio
Características de Java
 Lenguaje Orientado
a objetos  Aplicaciones
◦ Encapsulamiento multiplataforma
◦ Herencia
◦ Polimorfismo
◦ Etc.
 Ejecución segura de
aplicaciones

 Librerías (API)  Amplio soporte de


fabricantes software
Máquina virtual de JAVA (JVM)
 Es un entorno de ejecución para aplicaciones java.

 Finalidad: adaptar los programas Java compilados a las


características del sistema operativo donde se va ejecutar.

Código fuente

Proceso de compilación y Byte codes


ejecución de aplicaciones
Java
VM VM VM
(Windows) Linux OTRO

Otro S.O
Garbage collector
 Aplicación que forma parte de la JVM
 Objetivo: liberar de la memoria los objetos no
referenciados.
variables
Objeto 1

Disponible para
recolección
Objeto 2

Objeto 3

Memoria
Ediciones de JAVA
 Java 2 Estándar Edition (J2SE)
◦ Paquetes de uso general
◦ Paquetes para la creación de entornos gráficos
◦ Applets.

 Java 2 Enterprise Edition (J2EE)


◦ Paquetes y tecnologías para la creación de aplicaciones Empresariales
multicapa

 Java 2 Micro Edition (J2ME)


◦ Paquetes y especificaciones para crear aplicaciones Java ejecutables en
dispositivos electrónicos (agendas electrónicas, PDA, teléfonos móviles)
Primeros pasos de Java
1. Ejecutar Java Development Kit (KIT): conjunto
de herramientas básico para el desarrollo de
aplicaciones con Java estándar.

◦ La implementación de la máquina virtual para el


sistema operativo indicado.

◦ Herramientas de compilación y ejecución de


programas.

◦ Paquetes de clases del J2SE ([Link] contiene las


clases)
Configurar las variables de entorno

1. Inicio

2. Equipo / clic derecho /propiedades/ configuración


avanzada del sistema

3. Variables de entorno /Nueva


1. Nombre : CLASPATH
2. Valor: ;
3. Nombre: PATH
4. Valor: C:\Program Files\Java\jdk1.6.0_22\bin
Reglas de declaración de archivos de código
fuente
 Solo puede existir una clase publica por cada
archivo de código fuente (archivo .java)
 El nombre del archivo .java debe ser
exactamente igual al nombre de la clase
declarada como public

 Ejemplo:
 public class Dog { } el nombre del
 archivo debe ser [Link]
Reglas de declaración de archivos de código
fuente

 Si la clase es parte de un paquete, entonces, la


sentencia package debe ir en la primera línea
antes de cualquier declaración de las sentencias
import

 Si hay sentencias import, estas deben estar


declaradas entre la sentencia package y la
primera declaración de una clase, si no hay
sentencias package, las sentencias import van en
la primera línea
Reglas de declaración de archivos de código
fuente
 Las sentencias import y package aplican para
todas las clases contenidas en un solo archivo de
código fuente.

 Un archivo de código fuente puede tener mas de


una clase no publica.

 Archivos de código fuente que no contienen


ninguna clase publica pueden tener un nombre
diferente al de cualquier clase contenida en el
archivo
Práctica 1.- Primer programa
 Objetivo: conocer el procedimiento general para
crear, compilar y ejecutar programas con Java
estándar.

public class Saludo{

public static void main(String [] args)


{
[Link](“Bienvenido al curso de Java”);
}
}
 Guardar en un archivo de texto como
[Link] (nombre igual al de la clase)

 COMPILACIÓN

 EJECUCIÓN
Repaso
Conceptos básicos de
Java
Aspectos sintácticos generales
 Sensible a mayúsculas /  Comentarios de un a
minúsculas línea va precedido por
“//”
 Las sentencias finalizan ◦ Ejemplo:
con “;” ◦ //comentario 1 línea
 Multilínea se delimitan
 Los bloques de por “/*” y “*/”
instrucción se delimitan ◦ Ejemplo
con llaves ({…}) ◦ /*comentario de varias
líneas*/
CamelCase
 Es la práctica de escribir frases o palabras compuestas eliminando
los espacios y poniendo en mayúscula la primera letra de cada
palabra.

 El nombre se debe a que las mayúsculas a lo largo de una palabra en


CamelCase se asemejan a las jorobas de un camello.

 El nombre CamelCase se podría traducir como


Mayúsculas/Minúsculas Camello.

 UpperCamelCase: cuando la primera letra de cada una de las


palabras es mayúscula. Ejemplo: EjemploDeUpperCamelCase.

 lowerCamelCase: igual que la anterior con la excepción de que la


primera letra es minúscula. Ejemplo: ejemploDeLowerCamelCase.
Casos donde usar el camelCase

 Clases  Variables
 Interfaces  Métodos

UpperCamelCase lowerCamelCase
Objeto
 Es un conjunto de variables y de los métodos relacionados con esas
variables

 Ejemplo:

Nombre
Edad
Variables
Vacunas
(información):

Comer
Métodos Correr
(funciones): Caminar
Ladrar
Actualizar vacunas
Invocar métodos
 Para poder invocar a los métodos de un objeto desde
fuera del mismo es necesario disponer de la referencia
al objeto.

 Normalmente se guarda en una variable que a través del


operador “.” permite hacer la llamada a los métodos del
objeto.

 referencia.metodo1();
 referencia.metodo2(argumento1,argumento2,…)

 [Link]();
 [Link](“subir”,2);
Argumentos
 Algunos métodos necesitan que les
proporcione una serie de datos (argumentos
de llamada) para poder realizar su función.

 Deben ser suministrados en la llamada al


método, situándolos entre paréntesis y
separados por “,”, a continuación del nombre
del método.

◦ ajustarVolumen(“subir”,2);
Clase
 Es un proyecto, o prototipo, que define las variables
y los métodos comunes a un cierto tipo de objetos.

 Clase: Perro

Firulais Sansón Pelusa


3 años 4 años 2 años
2 vacunas 5 vacunas 3 vacunas

Comer: 3 veces al día Comer: 2 veces al día Comer: 1 vez al día


Sintaxis de una clase en java
<modifiers> class <class_name>
{
[<attribute_declarations>]
[<constructor_declarations>]
[<method_declarations>]
}
Ejemplo:
public class Vehicle {

private double maxLoad;

public void setMaxLoad(double value)


{
maxLoad = value;
}
}
Instancias
 Una vez definida la clase, los programadores
podrán crear objetos de la misma (instancias)
para poder hacer uso de sus métodos.

 Las instancias u objetos de una clase se crean


con el operador new, el cual crea la instancia,
la almacena en memoria y devuelve una
referencia a la misma, que normalmente se
guarda en una variable para posteriormente,
invocar a los métodos del objeto.
Creando un objeto
 NombreClase v=new NombreClase();
 v.metodo1();

 Perro p1=new Perro();


 [Link](3,6,9);

 Televisor v=new Televisor();


 [Link]();
Métodos
 Definen el comportamiento de los objetos de una
clase.

 Pueden hacer uso de campos o atributos para


almacenar información sobre el objeto.

 Ejemplo: la clase Television debe tener un campo


volumen donde almacenar el volumen actual del
televisor, en donde el método ajustarVolumen()
podrá usar este campo para mantener actualizado
en cada momento el volumen del televisor
Métodos de una clase
<modifiers> <return_type> <name>
([<argument_list>]) {
[<statements>]
}
public class Dog {
private int weight;

public int getWeight() {


return weight;
}

public void setWeight(int newWeight) {


weight = newWeight;
}
}
Llamada y declaración de un método
 Llamada al método:
 [Link](argumento1,argumento2)

 Declaración del método


◦ .
◦ .
◦ tipo metodo(tipo parametro1,tipo parametro2){
 ..
◦ }
◦ ..
Atributos de una clase
 <modifiers> <type> <name>;

public class Foo {


private int x;
private float y = 10000.0F;
private String name = "Bates Motel";
}

 Modificador suele ser private para impedir que puedan ser


utilizados directamente desde el exterior, forzando a que
el acceso a los mismos se haga siempre a través de los
métodos de la clase(encapsulamiento en POO).

 Type: representa un tipo válido en java, puede ser tipo de


dato primitivo o de tipo objeto
Definición de una clase con métodos
y atributos.
 <En java, los métodos de una clase se implementan mediante funciones y los
campos mediante variables.

[public] class NombreClase{

[private] tipo campo1;


//otros campos
[public] tipo método (tipo param1,tipo param2,…)
{
//código método
[return valor;]

}
//otros métodos

}
Ejemplo
public class Televisor
{
private int volumen;
public void ajustarVolumen(String modo, int valor)
{
if([Link](“subir”))
volumen+=valor;
else
volumen-=valor;
Televisor t=new Televisor();
}
[Link](“bajar”,1);

}
Controlar el acceso de los miembros
de una clase
 Uno de los beneficios de las clases es que
pueden proteger sus variables y métodos
miembros frente al acceso de otros objetos.
 Private
 Public
 Protected
private
 El nivel de acceso más restringido es private.

 Un miembro privado es accesible sólo para la clase en la que


está definido.

 Se utiliza este acceso para declarar miembros que sólo deben


ser utilizados por la clase

 Para declarar un miembro privado se utiliza la palabra clave


private en su declaración.
class Alpha {
private int soyPrivado;
private void metodoPrivado()
{
[Link]("metodoPrivado");
}
}
protected
 Permite a la propia clase, las subclases (con la excepción a la que nos
referimos anteriormente), y todas las clases dentro del mismo paquete
que accedan a los miembros.

 Este nivel de acceso se utiliza cuando es apropiado para una subclase de


la clase tener acceso a los miembros, pero no las clases no relacionadas.

 Los miembros protegidos son como secretos familiares - no importa que


toda la familia lo sepa, incluso algunos amigos allegados pero no se
quiere que los extraños lo sepan.

 Para declarar un miembro protegido, se utiliza la palabra clave protected


class Alpha {
protected int estoyProtegido;
protected void metodoProtegido()
{
[Link]("metodoProtegido");
}
}
public
 El especificador de acceso más sencillo es 'public'.
 Todas las clases, en todos los paquetes tienen acceso a
los miembros públicos de la clase.
 Los miembros públicos se declaran sólo si su acceso no
produce resultados indeseados si un extraño los utiliza.
 Aquí no hay secretos familiares; no importa que lo sepa
todo el mundo.
 Para declarar un miembro público se utiliza la palabra
clave
class Alpha {
public int soyPublico;
public void metodoPublico() {
[Link]("metodoPublico");
}
}
Métodos y campos estáticos
 No todos los métodos y campos de una clase
tienen por que estar asociados a un objeto
particular de la misma.

 Suponiendo que la clase Televisor podrá tener


un método obtenerPrecio(), cuya ejecución
generaría el mismo resultado para cualquier
objeto .

◦ [Link]()
◦ [Link]();
Métodos y campos estáticos

 [public] class NombreClase


 {

◦ Static tipo campo1;

Static tipo metodo1(parametros)


{
//codigo método
} Los campos estáticos
deben llevar un
modificador de acceso que
 } permita su uso desde el
exterior (public, protected
o ninguno)
Restricciones de los métodos
estáticos
 No puede hacer referencia a elementos
estáticos de su misma clase.
 No puede hacer uso de super y this.
Método main()
 Toda aplicación java está compuesta por al
menos una clase.
 Alguna de las clases debe estar declarada con

el modificador de acceso public.

Formato:

Public static void main(String[] args)


{
//código del método
}
Características del método main()
 Método público

 Método estático
Public static void main(String[] args)
 No puede devolver {
ningún resultado (void) //código del método
}
 Declarar un array de
cadenas de caracteres
en la lista de
parámetros o un
número de argumentos.
Ejemplo
 public class Saludo{

 public static void


main(String [] args)
 {

[Link](“Bienv
enido al curso de Java”+
args[0]);
 }
 }
Secuencias de escape
Secuencia de escape significado
\b Retroceso
\n Salto de línea
\t Tabulación horizontal
\\ Barra invertida
\’ Comilla simple
\” Comilla doble
Práctica: mostrar en pantalla lo siguiente (en una sola impresión):

Hoy veremos las “secuencias de Escape”


Y continuaremos en la ‘tarde’
Tipos de datos primitivos
 Java soporta 8 datos primitivos

Tipo básico Tamaño


byte 8 bits
short 16 bits
int 32 bits
long 64 bits
char 16 bits
float 32 bits
double 64 bits
boolean -
String Clase
Tipos de datos primitivos se pueden organizar
en cuatro grupos:
 Números enteros: byte, short, int y long.

 Carácter: El tipo char (un carácter codificado


en el sistema unicode)

 Numérico decimal: float y double

 Lógicos: boolean (true o false)


Wrappers
 La finalidad de tener clases “wrapper” es
poder envolver a un tipo de dato primitivo en
actividades que solo están disponibles para
objetos.
Creando objetos Wrappers
 Todas las clases wrapper por lo regular tienen dos constructores
como lo vimos en la tabla anterior (a excepción de la clase
Character), uno toma un tipo de datos primitivo y el otro una
cadena que representa el valor.

 Integer i1 = new Integer(42);


 Integer i2 = new Integer("42");

 Float f1 = new Float(3.14f);


 Float f2 = new Float("3.14f");

 Character c1 = new Character('c');

 Boolean a = new Bollean(true);


 Boolean b = new Boolean("false");
Variables
Tipo de Datos variable
 Tipos primitivos: almacenan el dato real
◦ Ejemplo: int k=20;
◦ k 20

 Tipos objetos: contiene una referencia al mismo


◦ Con el operador “.” podemos acceder a los métodos del
objeto referenciado

 Usando la expresión: variable_objeto.metodo();

Televisor ts=new Televisor();

ts (referencia)
objeto
Palabras reservadas
Declaración de variables
 Tipo_dato nombre_variable;

 Reglas:
 Comenzar por un carácter alfabético
 No puede contener espacios, signos de puntuación o secuencias de escape
 No pueden usarse palabras reservadas

Válidas No válidas
int k, cod; boolean 7q;
long p1; int num uno;
char cad_2; long class;
Asignación
 Una vez declarada la variable se le puede
asignar un valor:
◦ Variable=expresion;

int p, k,v;
p=30;
k=p+20;
v=k*p;
int num=5;
int p, n=7;
Literales
 Es un valor constante que s epuede asignar
directamente a una variable o puede ser
utilizando en una expresión.

◦ Literales numéricos enteros(int)


◦ Literales numéricos decimales (double)
◦ Literales boolean son true false.
◦ Literales de tipo char (entre comillas simples)
Ejemplos
 Literales numéricos enteros(int)
◦ byte=b=10;
 Literales numéricos decimales (double)
◦ float p=3.14;
◦ float p=3.14f;
 Literales boolean son true false.
◦ boolean b=“true”;
 Literales de tipo char (entre comillas simples)
◦ char car=‘#’;
◦ char p=‘\u03AF’;
◦ char c=231
Ámbito de las variables
◦ Campo o atributo:

 Se declaran al principio de la clase, fuera de los métodos.

 Son compartidas por todos los métodos de la clase

 Suelen declararse como private (limitar su uso)

 Pueden ser utilizadas sin haber sido inicializadas de


manera explicita, ya que se inicializan implícitamente
cuando se crea el objeto.
Valores por defecto de una variable atributo

Tipo de variable Valor por defecto


byte, short, int, long 0
char ‘\u0000’
floar, double 0.0
boolean False
objeto null

Practica: mostrar en pantalla el valor por defecto de los tipos de


variable que se muestran en la tabla
Ámbito de las variables
◦ Variable local:
 Se declaran dentro de un método, su ámbito de
utilización está restringido al interior del método
 No admiten ningún tipo de modificador
 Se crea en el momento en el que se hace la llamada al
método, destruyéndose cuando finaliza la ejecución de
éste.
 Puede declararse en el interior de un bloque de
instrucciones (su uso esta restringido al interior de ese
bloque)
 Toda debe ser inicializada explícitamente antes de ser
utilizada
Ejemplo:
 public class Ejemplo{
Campo o atributo
◦ private int p;
public void metodo(…)
{
char t;
if(…)
{ local
long c;
}
}

 }
Operadores
 Símbolos que permiten realizar operaciones
con los datos de un programa

Aritméticos Valores tipo numérico

Operadores
Java
Asignación Operador de asignación (=)

Condicionales boolean (true o false)

lógicos boolean (true o false)


Operadores Aritméticos
Operador Descripción Ejemplo

+ Suma dos valores numéricos int c;


c=2+5;

- Resta dos valores numéricos int c;


c=2-5;

* Multiplica dos números int c;


c=2*5;

/ Divide dos números int a=8,b=5;


float x,y;
x=a/b; //resultado es 1
y=a/3.0f; //el resultado es 2.66

% Calcula el resto de la división entre dos números int c;


c=7%2; //el resultado es 1;

++ Incrementa una variable numérica en una unidad y int c=3;


deposita el resultado en la variable c++;
//el resultado es 4

-- Decrementa una variable en una unidad y deposita el int c=3


resultado en la variable c--;
//el resultado es 2
Observaciones
 Operadores incremento(++) y decremento(--)
 Es posible situarlos delante de la

variable(prefijo)
 O después de la variable(posfijo)

Caso1: Caso 2:
int a=3, b;
int a=3, b,s;
b=a++;
b=a++;
[Link](“b vale”+b);
s=++b*++a;
[Link](“a vale”+a);
[Link](“s vale”+s);
Como norma general
 Al utilizar operadores de incremento y decremento en
una expresión compleja, debemos tener en cuenta los
siguientes puntos:

◦ Las expresiones en java se evalúan de izquierda a derecha.

◦ Si el operador se sitúa delante de la variable, se ejecutará


primeramente la operación que representa antes de seguir
evaluando la expresión.

◦ Si el operador se sitúa después de la variable se utiliza el valor


actual de la variable para evaluar la expresión y a continuación
se ejecuta la operación asociada al operador.
Operadores de asignación
Operador Descripción Ejemplo

= Asigna la expresión de la derecha, al operador situado a la izquierda int c;


del operador c=8*5;

+= Suma la expresión de la derecha a la variable situada a la izquierda int c=4;


del operador c+=5;

-= Resta la expresión de la derecha a la variable situada a la izquierda int c=4;


del operador c-=5;

*= Multiplica la expresión de la derecha con la variable y deposita el int a=8;


resultado en la variable a*=2;

/= Divide la variable situada a la izquierda entre la expresión de la int c=7;


derecha, depositando el resultado en al variable c/=2;

%= Calcula el resto de la división entre la variable situada a la izquierda y int c=6;


la expresión de la derecha, depositando el resultado en al variable c%=3;
Asignación de referencias y de
valores
 Object ob1=new Object();  Int a=5;
 Object ob2=ob1;  Int b=a;
ob1 ff23
objeto a 5
.
memoria
.
ob2 ff23 b 5

Por objeto Por variables


Operadores condicionales
Operador Descripción

== Compara dos valores, en caso de que sean iguales el resultado de


la operación será true

< Si el operador de la izquierda es menor que el de la derecha, el


resultado es true

> Si el operando de la izquierda es mayor que el de la derecha, el


resultado es true

<= Si el operando de la izquierda es menor o igual que el de la


derecha, el resultado es true

>= Si el operando de la izquierda es mayor o igual que el de la


derecha, el resultado es true

!= Si el valor de los operandos es diferente el resultado es true


Los operandos <,>,<= y >= únicamente
podrán utilizarse para comparar enteros,
puntos flotantes y caracteres
Operadores lógicos
Operador Descripción

&& Operador lógico AND. El resultado será true si los dos operandos son true,
en cualquier otro caso el resultado será false

|| Operador lógico OR. El resultado será true si alguno de los operandos es


true

! Operador lógico NOT. Actúa sobre un único operando boolean, dando como
resultado el valor contrario al que tenga el operando.
Operadores a nivel de bits

Operador Descripción

& Operador lógico AND. Realiza la operación AND entre los operandos, bit a
bit

| Operador lógico OR. Realiza la operación OR entre los operandos, bit a bit

^ Operador lógico OR exclusiva. Realiza la operación OR exclusiva entre los


operandos, bit a bit

~ Operador NOT, invierte el estado de los bits del operando


Operador condicional
 Operador ternario(3 operandos)
 Asigna un valor entre dos posibles a una

variable
Formato:

Tipo variable=(condicion)?valor_si_true:valor_si_false

Ejemplo:
Int k=4;
String s=(k%2==0)?”par”:”impar;
[Link](s);
Instrucciones de control
 Instrucción if
◦ Sentencia de tipo alternativa simple que permite
comprobar una condición dentro de otro programa.

◦ Si es verdadera se ejecutará una determinado


conjunto de instrucciones.

◦ En caso de que no lo sea: se puede optar por


ejecutar otro conjunto diferente de instrucciones o
por no ejecutar.
Formato instrucción if
If(condición)
{
//sentencias Ejemplo:
}
If(a>b)
else {
{ [Link](“El mayor es ”+a);
}
//sentencias else
} {
[Link](“El mayor es ”+b);
}
Observaciones
 La condición de comprobación puede ser
cualquier expresión cuyo resultado sea de
tipo boolean(true o false).

 El bloque else es opcional.

 Cuando el bloque de sentencias, if o else,


esta formado únicamente por una
instrucción, las llaves delimitadoras son
opcionales.
Instrucciones de control
 Instrucción switch
◦ Es de tipo alternativa múltiple
◦ Permite ejecutar diferentes bloques de instrucción
en función del resultado de una expresión.
Formato: Ejemplo:
switch(expresión)
{ switch(a)
case valor1: {
//sentencia case 1:
[Link](“Entro al primer case”);
break;
break;
case valor2: case 2:
//sentencia [Link](“Entro al segundo case”);
break; break;
default: default:
//sentencia [Link](“No acertó a nungún case”);
}
}
Observaciones
 Los únicos valores que puede evaluar switch son
números enteros de tipo int (byte , short, chat e
int).
 Puede contener cualquier numero de case, pero no
dos case con el mismo valor.
 La sentencia break es opcional, se emplea para
provocar la finalización del switch al terminar el
case.
 El default (es opcional) se ejecutará si el resultado
de la expresión no coincide con ningún case
Ejemplo
int h=5;

switch(h*2)
{
case 10:
[Link](“El resultado
: es 10”);

case 20:
[Link](“El tamaño es demasiado alto”);
break;
default:
[Link](“El resultado no es correcto”);
}
Instrucción for
 Permite ejecutar un conjunto de instrucciones
un número determinado de veces.

Formato:

for(inicialización;condicion;incremento)
{
//sentencias
}
Ejemplo:

for(int i=1;i<=10;i++)
{
[Link](“El numero es ”+i);
}
Observaciones
 Las instrucciones de control (inicialización,
condición e incremento) son opcionales, pero el
delimitar “;” siempre debe estar presente.
 for(int i=0;;)

 La variable declarada en la instrucción de


inicialización, solo será accesible dentro del
interior del for.

 Si solamente tiene una instrucción las llaves se


pueden omitir.
Instrucción while
Permite ejecutar un bloque de instrucciones mientras se cumpla una
determinada condición dentro del programa.

while(condicion){  do{
//sentencias ◦ //sentencias
}  }while(condicion);
int a=10; int a=10;
while(a>0){ do{
[Link](“El numero es” +a); [Link](“El numero es” +a);
a--; a--;
} } while(a>0);

Debe cumplir la condición Se ejecuta al menos 1 vez y continua


para dar inicio al ciclo si se sigue cumpliendo la condición
Salida forzada de un bucle
 Provoca la salida forzada del  Provoca detenga la
bucle continuando la ejecución
del programa en la primera iteración actual
sentencia situada después del ◦ for: ejecute el incremento
mismo
◦ while a comprobar la
int numero=6; condición de entrada.
for(int i=1;i<=5;i++) int suma=0;
{
double aleat=[Link]([Link]()*10+1); While(suma<1000)
[Link](aleat); {
if(aleat==numero) double aleat=[Link]([Link]()*10+1);
break; if(aleat%2==0){
} continue;
}
suma+=aleat;
}

break continue
ARRAYS
 Es un objeto en el que se puede almacenar un
conjunto de datos de un mismo tipo (tipos
primitivos o referencia a objetos)
 Cada uno de los elementos del array tiene

asignado un índice numérico según su posición


 Cero es el índice primero.

0 1 2 3 4 5 …
Declaración
 Tipo [] variable_array;
 Tipo variable_array[];

•Declaración de arreglos de tipo primitivo


 int[] key;
 int key [];

•Declaración de arreglos de referencia a objetos


 Thread[] threads;
 Thread threads[];

•Declaración de arreglos Multidimensionales


 String[][][] occupantName;
 String[] ManagerName [];

•Pueden declararse como


atributos de una clase o
locales.
Dimensionado de un array
 Variable_array=new tipo[tamaño];
 Se puede asignar el tamaña en la misma línea de
declaración.
 Todos sus elementos son inicializados explícitamente

Ejemplo:

K= new int[5];
Cads=new char[10];
String[] noms=new String [10];
Inicializar arrays
 De tipos primitivos
◦ int x = 9;
◦ int[] dots = {6,x,8};

 De objetos
◦ Dog puppy = new Dog("Frodo");
◦ Dog[] myDogs = {puppy, new Dog("Clover"), new Dog("Aiko")};
Acceso a los elementos de un array
 Variable_array[indice]

◦ Indice: representa la posición a la que se quiere tener


acceso (valor comprendido entre 0 y tamaño -1)

◦ Los objetos array tienen un atributo público, llamado


length, que permite conocer el tamaño al que ha sido
dimensionado un array.

Int [] nums=new int[10];


For (int i=0;i<[Link];i++){
nums[i]=i*2;
}
 Int [] testScores;
 testScores=new int[4];
Recorrido de un arreglo con for-
each
 Facilita el recorrido de arrays y colecciones

Formato:

for(tipo variable:var_array){
//instrucciones
}

for(int n:nums){
for(int i=0; i<[Link];i++){
[Link](n);
[Link](num[i]);
}
}
Arrays multidimensionales
 Los arrays pueden tener más de una
dimensión, por ejemplo, un array de
enteros de dos dimensiones se
declararía: 0 1 2 3 4 5
 Declarar: 0
28
◦ Int [][]k; 1
2
 Dimensionarlo:
 K=new int[3][5];
 Acceder a una de sus posiciones:
◦ K[1][3]=28;
Recorrido de un arreglo multidimensional
 Se puede utilizar la instrucción for tradicional, empelando para ello tantas
variables de control como dimensiones tenga el array.

for(int i=0; i<5;i++){


for(int j=0; j<3;j++){
k[i][j]=i+j;
}
}

Se puede utilizar tambien for-each para recuperar el


contenido
for(int n:k){
[Link](“valor:”+n);
}
Arrays multidimensionales
irregulares
 Es posible definir un array multidimensional
en el que el número de elementos de la
segunda y sucesivas dimensiones sea
variable, indicando únicamente el tamaño de
la primera dimensión.

p
◦ int [][]p=new int[2][];
◦ p[0]=new int[3]; 0
◦ p[1]=new int [2];
1
Clases de uso general
 Java es más que un lenguaje

 Tan solo la edición J2SE proporciona más de


8000 clases (clases e interfaces) con sus
correspondientes conjuntos de métodos
Organización de clases
 Los paquetes son un mecanismo utilizado por
Java que permite organizar las clases de una
manera estructurada y jerárquica.

 Un paquete es un directorio en el que se


almacenan archivos .class con los byte codes
de la clase; un paquete puede a su vez estar
compuesto de otros subpaquetes.
Paquete principal de J2SE

java

lang
[Link]

[Link]
clase
Paquete principal
subpaquete
Ventajas
 Permite organizar las clases de manera
estructurada.
 Evitan conflictos de nombres.
Sentencia import
 import <pkg_name>[.<sub_pkg_name>].<class_name>;
 OR
 import <pkg_name>[.<sub_pkg_name>].*;

Ejemplos:

import [Link].*;
import [Link];
import [Link].*;
Paquetes de uso general
 [Link]: Incluye las clases fundamentales para la
realización de cualquier programa. El compilador
importa el paquete completo de forma implicita.

 [Link]: contiene las clases para la gestión de


entrada y salida de datos en Java.

 [Link]: en este paquete encontramos clases


para varias utilidades, como el tratamiento de
colecciones de objetos, manipulación de fechas o
construcción de expresiones regulares
API
 Documentación oficial de las clases del Java Estándar.

 Contiene:
◦ Definición de la clase:
 Nombre,
 Modificadores,
 Clase que hereda,
 interfaces que implementa
◦ Paquetes en donde se encuentra
◦ Atributos publicos
◦ Metodos
◦ contructores
Gestión de cadenas: La clase String
 Las cadenas de caracteres son objetos
pertenecientes a la clase [Link]

 La clase String proporciona una amplia


variedad de métodos que permiten realizar
las operaciones de manipulación y
tratamiento de cadenas de caracteres,
habituales en un programa
Creación de objetos String
 String s=new String(“Texto de prueba”);

 Dada su amplia utilización :


◦ String s=“Texto de prueba”;

 Una vez creado y asignada la eferencia al


mismo a una variable, puede utilizarse para
acceder a los métodos definidos en la clase
String.
◦ [Link]();
Inmutabilidad de objetos String
 Las cadenas de caracteres son objetos
inmutables, es decir que una vez creado el
objeto no puede ser modificado.

Antes de la Después de la
String s=“Hola”;
concatenación concatenación
s=s+”que tal”;

“Hola” “Hola”
s s
“Hola que tal”
Principales métodos de la clase String
 Int length(). Devuelve el número de caracteres de la
cadena sobre la que se aplica.

 Boolean equals( String otra). Compara la cadena con


otra, haciendo distinción entre mayúsculas y minúsculas.

 Boolean equalsIgnoreCase(String otra). Actúa igual que la


anterior pero sin hacer distinción entre mayúsculas y
minúsculas.

 Char charAt(int pos). Devuelve el carácter que ocupa la


posición indicada (base 0)dentro de la cadena.
Ejemplo
Public class Principal{
Public static void main(String[] args){
String s=“texto de prueba”;
char c=‘e’;
Int cont=0;
For(int i=0;i<[Link]();i++){
if([Link](i)==c)
cont++;
}
[Link](“La letra “+c+”aparece ”+cont+”vece”);
}

}
Principales métodos de la clase String
 String substring(int inicio, int final). Devuelve un trozo de la cadena
sobre la que se aplicará.La subcadena devuelta está formada por los
caracteres que van desde la posición indicada en inicio hasta la
posición final-1.
◦ String s=“texto de prueba”;
◦ [Link]([Link](6,15));

 Int indexOf(String cad). Devuelve la posición dela cadena indicada en


el paramétro, dentro de la cadena principal, si no aparece devuelve -
1

◦ Public boolean existe(String texto, String car){


 If([Link](car)!=-1)
 Return true;
 else
 Return false;
◦ }
Principales métodos de la clase String
 String toUpperCase). Devuelve la cadena en formato mayúscula
 String toLowerCase). Devuelve la cadena en formato minúscula

 String Split(String regex). Devuelve el array de String resultante de


descomponer la cadena de texto en subcadenas, utilizando como
separador de elemento el carácter especificado en el parámetro
regex.
Public class ConversionArray{
public static void main(String [] args){
String s=“lunes,martes,miercoles”;
String[] cads=[Link](“,”);
for(String aux:cads){
[Link](“día: ”+aux);
}
}
}
Clase Math
 Proporciona métodos para la realización de
las operaciones matemáticas más habituales
en un programa.
 Todos los métodos son estáticos, por lo que

no necesitan crear una instancia de la clase


para su utilización.
 Constantes públicas:
◦ static double E
◦ Static double PI
Métodos
 Numero max(numero n1, numero n2). Devuelve el
mayor de dos números(int,long,float o double)

 public class Termometro{


◦ public static void main(String[] args){
 int[] temp={25,38,12,30};
 int maxima=temp[0];
 for(int tp:temp){
 maxima=[Link](maxima,tp);
 }
◦ }
 }
Métodos
 Numero min(numero n1, numero n2). Devuelve el
menor de dos números(int,long,float o double).

 double ceil(double n). Devuelve el entero mayor


más cercano al número indicado en el parámetro.
◦ Double d=[Link](4.3) //devuelve 5.0

 double floor(double n). Devuelve el entero menor


más cercano al número indicado en el parámetro.
◦ Double d=[Link](4.3) //devuelve 4.0
Métodos
 Double round(double n). Devuelve el entero
más cercano al número indicado en el
parámetro.
◦ double d=[Link](4.3// almacena el valor 4.0)

 double pow(double n1,double n2). Devuelve


el resultado de elevar n1 a n2.
◦ Double d=[Link](4.3) //devuelve 5.0
Métodos
 double random(). Devuelve un número aleatorio
mayor o igual que 0.0 y menor que 1.0.

public class Principal{


public static void main(String [] args){
int[] m=new int[10];
for(int i=0; i<[Link];i++){
M[i]=int([Link]()*50+1);
}
}
}
Importaciones estáticas
 Consiste en la posibilidad de importar todos
los miembros estáticos de una clase, de
modo que pueda hacerse referencia a los
mismos sin necesidad de utilizar el nombre
de la clase delante del método o atributo.

 Import static [Link].*;


 Importa static [Link].*;

◦ M[i]=(int) (random()*50+1);
Entrada y salida en Java
 Paquete [Link]. Contiene una serie de clases
que permiten gestionar la entrada y salida de
datos de un programa (independiente al
dispositivo)

Salida PrintStream

BufferedReader
entrada InputStream

InputStreamReader
Salida de datos
 Obtención del objeto PrintStream. Se debe crear un
objeto PrintStream asociado al dispositivo de salida.
La clase System proporciona el atributo estático out
que contiene una referencia al objeto PrintStream
asociado a la salida estándar, representada por
consola.

 Envío de datos al Stream. La clase PrintStram


dispone de los métodos print(String cadena) y
println(String cadena).

◦ [Link](“texto de salida”);
Entrada de datos
 La lectura de datos del exterior se gestiona a
través de InputStream, mediante el atributo
estático in de la clase System.
 De las clases del paquete [Link]: la clase
BufferedReader.

◦ Crear objeto InputStreamReader. Es necesario indicar el


objeto InputStream de entrada. Si es por teclado lo
tenemos referenciado en el atributo estático in de la
clase System.
◦ InputStreamReader rd;
◦ rd=new InputStreamReader([Link]);
Entrada de datos
 Crear objeto BufferedReader. A partir del objeto
anterior se puede construir un BufferedReader
que permita realizar la lectura de cadenas.
◦ BufferedReader bf;
◦ bf=new BufferedReader(rd);

 Invocar el método realLine(). Devuelve todos los


caracteres introducidos hasta el salto de línea.
 String s=[Link]();
Ejemplo
import [Link].*;
public class Ejemplo{
public static void main(String [] args) throws IOException{
String cad;
InputStreamReader ir;
BufferedReader bf;

ir=new InputStreamReader([Link]);
bf=new BufferedReader(ir);
[Link](“Introduzca su nombre”);
cad=[Link]();
[Link](“Te llamas:”+cad);
}

}
Scanners
 [Link]
 Primero se debe crear unobjeto scanner asociado

al InputStream del dispositivo de entrada.

 Scanner sc=new Scanner([Link]);


 La cadena de caracteres introducida por teclado

hasta la pulsación de la tecla “enter” es dividida


en un conjunto de bloques denominados tokens

Esto es una cadena

token1 token2 token3 token4


Métodos de la clase Scanner
 String next(). Devuelve el siguiente token
 Boolean hasNext(). Indica si existe o no un nuevo token
para leer.

 Xxx nextXxx(). Devuelve el siguiente token como un


tipo básico.

 Boolean hasNexXxx().Indica si existe o no un siguiente


token del tipo especificado.

 Void useDelimiter(String d). Establece un nuevo


delimitador.
Constructores
 Todas las clases Java tienen métodos
especiales llamados Constructores que se
utilizan para inicializar un objeto nuevo de
ese tipo.

<modifier> <class_name> ([<argument_list>])


{
[<statements>]
}
Ejemplo
public class Dog {

private int weight;

public Dog() {
weight = 42;
}

public int getWeight() {


return weight;
}
public void setWeight(int newWeight) {
weight = newWeight;
}
Ejemplo
public class MyDate {
private int day = 1;
private int month = 1;
private int year = 2000;

public MyDate(int day, int month, int year) { ... }


public void print() { ... }
}

public class TestMyDate {


public static void main(String[] args) {
MyDate today = new MyDate(22, 7, 1964);
}
Una declaración reserva espacio sólo para
una referencia:

 MyDate my_birth = new MyDate(22, 7, 1964);

my_birth ???

 Se utiliza el operador new() para asignar


espacio a my_birth
my_birth ???

day 0

month 0

year 0
Atributo explícitamente inicializado
 MyDate my_birth = new MyDate(22, 7, 1964);
my_birth ???

day 1

month 1

year 2000

 Valores tomados de la declaración de la clase


Ejecuta el constructor
 MyDate my_birth = new MyDate(22, 7, 1964);
my_birth ???

day 22

month 7

year 1964

my_birth 0x01abcdef

day 22

month 7

year 1964
Igualdad de objetos
 Los operadores de igualdad(==) y
desigualdad(!=)
◦ Se compara referencias y no objetos(mismo tipo)
◦ Para comprobar igualdad de objetos: método
equals.

String v1= new String(“hola”);


String v2=new String(“hola”); “hola”
v1

v2 “hola”
this
 Éstos son algunos usos de la palabra clave
this:
 Para los miembros de atributo de referencia

local y el método dentro de un método o


constructor local
 La palabra clave this que distingue a este

local o un método constructor de variable de


una variable de instancia
 Para pasar el objeto actual como un
parámetro a otro método o constructor
public class MyDate {
private int day = 1;
private int month = 1;
private int year = 2000;

public MyDate(int day, int month, int year) {


[Link] = day;
public class TestMyDate {
[Link] = month;
[Link] = year; public static void main(String[] args) {
}
MyDate my_birth = new MyDate(22, 7, 1964);
public MyDate(MyDate date) {
MyDate the_next_week =my_birth.addDays(7);
[Link] = [Link];
[Link] = [Link]; the_next_week.print();
[Link] = [Link]; }
} }

public MyDate addDays(int more_days) {


MyDate new_date = new MyDate(this);
new_date.day = new_date.day + more_days;
return new_date;
}

public void print() {


[Link]("MyDate: " + day + "-" + month + "-" + year);
}
}
Herencia
 Puedes crear una clase a través de una clase
existente, y esta clase tendrá todas las variables y
los métodos de su 'superclase', y además se le
podrán añadir otras variables y métodos propios.
 Se llama 'Superclase' a la clase de la que desciende
una clase

<modifier> class <name> [extends <superclass>] {


<declarations>
}
Herencia
Sobreescribir metodos
 Una subclase puede modificar el
comportamiento heredado de un
los padres de clase.

 Una subclase puede crear un método con


diferentes funcionalidad que el método de los
padres pero con el mismo:
◦ Nombre
◦ Tipo de retorno
◦ Lista de argumentos
public class Employee {
protected String name;
protected double salary;
protected Date birthDate;

public String getDetails() {


return “Name: “ + name + “\n” +“Salary: “ + salary;
}

}
public class Manager extends Employee {
protected String department;

public String getDetails() {


return “Name: “ + name + “\n” + “Salary: “ + salary + "\n" + “Manager of: “ +
department;
}
}
super
 super se utiliza en una clase para referirse a
su superclase.
 super se utiliza para referirse a los miembros

de la superclase, tanto los atributos de datos


y métodos.
 Comportamiento de invocar no tiene que

estar en la superclase; puede ser más arriba


en la jerarquía.
public class Employee {
private String name;
private double salary;
private Date birthDate;
public String getDetails() {
return "Name: " + name + "\nSalary: " + salary;
}
}
public class Manager extends Employee {
private String department;
public String getDetails() {
// call parent method
return [Link]() +"\nDepartment: " + department;
}
}
Operador instanceof
 Opera únicamente con referencias a objetos
 Se utiliza para saber si un objeto pertenece a un
determinado tipo.
 El resultado será true si pertenece a la clase especificada

referencia_objeto instanceof clase

Ejemplo

String s=“Hola”;
If(s instanceof String){
[Link](“Es una cadena”);
}
Excepciones
 Es una situación anómala que puede
producirse durante al ejecución de un
programa, como puede ser un intento de
división entera entre 0.

 Un error representa una situación anormal


irreversible, como por ejemplo el fallo de la
máquina virtual.
Superclase de Excepciones y errores
Object

Throwable

Exception

Error
Exception

RuntimeException IOException SQLException

ArithmetcExceptio
n

NullPointerExcepti
on

IndexOutOfBound
sException

ClassCastExceptio
n
Declaracion de una excepción
 Se utiliza la palabra throws, seguida de la
lista de excepciones que el método puede
invocar.

 public String readLine() throws IOException


 public void service(…) throws
ServletException,IOException
Caputa de Excepciones
 Las instrucciones try, catch y finally proporcionan una forma
elegante y estructurada de capturar excepciones dentro de
un programa java.
 Sintaxis
Try{
//instrucciones
}
Catch(TipoExcepcion1 args)
{
//tratamiento
}
..
Finally{
//Instrucciones de última ejecución
}

También podría gustarte