Está en la página 1de 66

Java sintaxis

Msc Jorge Guerra Guerra


2
Java es mejor por lo que no tiene,que por lo que tiene

• Variables globales.
• Goto.
• Punteros.
• Tipos de datos frágiles.
• Asignación de memoria.
• Conversión de tipos.
• Archivos de cabecera.
• Preprocesador.

CIP
Java in a nutshell

Tool
s

Standard APIs

JVM

@Hendri
kEbbers
5
6
The standard APIs

• Desde Java 9, las


API estándar están
separadas en java.se

varios módulos java.management java.security.jgs java.sql.rowset java.desktop


s

java.rmi java.naming java.prefs

java.security.sasl java.sql java.xml.crypto

java.compiler java.instrument java.logging java.xml java.datatransfer java.scripting

java.base

@Hendri
kEbbers
The (evil) private APIs

• Java contiene algunas API Java privadas


• Estas APIs no deben ser utilizadas en el
código del framework / aplicación
• Las API privadas pueden modificarse en
cualquier momento

@Hendri
kEbbers
The (evil) private APIs

• Algunas reglas sobre las API privadas


• No utilice nada que no pertenezca al paquete
java.*.
• Swing y Graphics2D se encuentran en el paquete
javax.*.
• JavaFX se encuentra en el paquete javafx.*.

@Hendri
kEbbers
10
12
Características ..Introducción

• Orientado a Objetos
– encapsulación, herencia, polimorfismo y ligadura dinámica

• Parecido a C++
– elimina las partes confusas ej: punteros
– añade nuevas propiedades ej: garbage collector

• Robusto
– comprobación estática de tipos
– maneja la memoria por el programador
– comprobación de límites de arrays y excepciones.
• Proporciona las librerías y herramientas para programas
distribuidos (protocolos http y ftp, interconexión TCP/IP)
• Multithreads (ejecución concurrente) 13
Como funciona Java?

14
Compiladores JIT (Just In Time)

15
16
Estructura del Virtual Machine
¿Cómo trabaja la JVM ?

– The class loader carga todas las clases requeridas.


• JVM usa un CLASSPATH que posee para
localizar los archivos de clase.
– El Verificador JVM comprueba si existe un bytecodes
ilegal.
– El Verificador JVM ejecuta los bytecodes.
• JVM puede invocar un recopilador justo a
tiempo (JIT).
– la Memoria principal libera la memoria usada por el
deferente atrás del OS.
• JVM maneja los archivos borrados.
Funcionamiento de Java

19
20
Presentaciones de Java
http://java.sun.com
• JDK (Java Development Kit) o Java SE
– Necesario para crear (desarrollar y compilar) programas
• JRE (Java Runtime Environment)
– Necesario para ejecutar un programa Java
– JDK = JRE + herramientas de desarrollo

21
Plataforma Java SE 18.0
Usando el Apropiado Kit de Desarrollo

Java2 esta disponible en tres ediciones:


– JavaME (Micro Edition): Versión expresamente apuntada al desarrollo
de aplicaciones mòviles
– JavaSE (Standard Edition): Desarrollo de aplicaciones Standalone
(escritorio) y applets
– JavaEE (Enterprise Edition): Desarrollo de aplicaciones empresariales
(Web e integracion de aplicaciones contiene a J2SE
Eclipse
Conceptos Básicos del IDE: Proyectos
Creando Proyectos Java

Eclipse IDE contiene


plantillas y asistentes
que usted puede
seleccionar para crear
toda clase de archivos
Java, documentos XML
y archivos de recurso.
28
Crear proyectos
Estructura de un proyecto en Eclipse
Paquetes
• Permite agrupar todas las clases relacionadas
//MiClase.java
package miBiblioteca;
public class MiClase{ //...

• Se coloca al comienzo del archivo;


• Para crear los Packages, tener en cuenta.
• El nombre debe estar en minúsculas.
• El nombre no debe contener espacios en blanco.
• El nombre no tiene límite en el número de caracteres.

• Indica que las clases públicas que contenga está accesible a cualquiera que incluya:
import miBiblioteca.MiClase; o bien
import miBiblioteca.*;
• Las clases que no tienen un nombre de paquete están en el paquete por defecto
(Default Package) consideradas clases amigas (friendly)
• Soporta el concepto de jerarquía de paquetes (estilo directorio)

• ej: import miPaquete.miSubPaquete.MiClase;


Creacion de paquetes
Estructura del proyecto
Clase

• La clase es la base de la Programación Orientada a Objetos.


• Cualquier concepto que se desee representar en un programa Java
debe ser modelado con una clase.
• Una clase es una plantilla o modelo de un objeto. En ella se definen
los atributos y los comportamientos de un tipo de objeto.
 Al definir una clase debo especificar los datos que contiene
(atributos) y el código que opera sobre ellos (métodos).
 Los métodos definen la interfaz con la que se manejaran los datos.
Clase en Java
• Cada clase en Java:
– Se define en un archivo independiente con extensión .java
– Se carga en memoria cuando se necesita.
• La máquina virtual Java (JVM) determina en cada momento las clases necesarias para
la aplicación y las carga en memoria.
• Para definir una clase en Java se utiliza la palabra reservada class, seguida del nombre
de la clase (identificador):
• public class MiClase {


}
Nota:
Es necesario indicar el modificador de acceso
public para que se pueda utilizar la clase “desde el exterior”

35
Clase

36
Estructura de una clase

nombre

atributos

metodos
Tipo de Clase

38
Otra clase a construir
Atributos
Tipos de ambito

public – los miembros que se declaran como public son accesibles


en cualquier parte donde la clase sea accesible
protected – miembros declarados como protected sólo accesibles
en la propia clase y sus Subclases
private – miembros declarados como private sólo accesibles en la
propia clase

public class A{
public int at1;
private int at2;

}
Tipos de modificadores de atributos
43
Encapsulamiento
Encapsulamiento(continuacion)
Metodos

Código que “entiende” y manipula el estado de un objeto


Pueden ser llamados dentro de la clase o por otras clases
Es obligatorio indicar el tipo de retorno o void

Declaración:

[acceso][static]tipoRetorno nombreMetodo ([argumentos]){


//cuerpo del metodo
[return valorRetorno;]
}

Invocación: Notación punto


objReceptor.nombreMetodo(argumentos);
Operadores en Java

Aritméticos y de conversión De comparación Lógicos De asignación

i,f + i & i,f == b & =

i,f - i | i,f != b | +=

i,f * i ^ i,f < b ^ -=

i,f / i << i,f <= b && *=

i,f % i >> i,f > b | /=

i,f ++ i >>> i,f >= b ! %=

i,f -- b == &=

i - b != |=
Tipos válidos de los operandos
i ~ i = Entero (byte, small, int, long) b ?: ^=
f = Punto Flotante (float, double)
b = Lógico (boolean)
Sintaxis en Java
Bifurcaciones – Sentencia de control de saltos (if-else)

Sintaxis Flujo de Eventos


if( expresión-booleana )
Al evaluar el algoritmo, si se encuentra una
{
sentencia if-else, se evalúa la expresión
sentencias; booleana, si el resultado es “true” o
} verdadero, se ejecuta las sentencias
siguientes al término de la expresión; en
[else { caso contrario, el resultado será “false” o
sentencias; falso y se ejecuta las sentencias que siguen a
la palabra reservada else.
}]
Ejemplo de if-else
if (temperatura > 15) {
if (temperatura > 25) {
// Si la temperatura es mayor que 25 ...
System.out.println("A la playa!!!");
} else {
System.out.println("A la montaña!!!");
}
} else if (temperatura < 5) {
if (nevando) {
System.out.println("A esquiar!!!");
}
} else {
System.out.println("A descansar... zZz");
}
Operador ?

// Ejemplo 1
String queHacer = (temperatura > 25) ? "A la playa!!!" :
"Esperando al buen tiempo...";

// Ejemplo 2
double numero = (temperatura > 10) ? (Math.random() * 10) :
0;

// Ejemplo 3
Comida miComida = cansado ? pedirComida("china") :
hacerComida();
Bifurcaciones - Sentencias de control de saltos (switch)

Sintaxis Flujo de Eventos


switch(expresión) { Al evaluar el algoritmo si entra en una
case valor1: bifurcación switch el valor de la
expresión se va comparando con cada
sentencias; uno de los casos “case” válidos hasta
break; encontrar su identidad, si un caso
coincide con el valor de la expresión se
case valor2: ejecutan las sentencias seguidas a éste
sentencias; hasta encontrar un break. Se puede
definir un caso opcional “default” el
break;
cual evalúa todos los casos no válidos o
[default: los valores no coincidente con la
expresión.
sentencias;]
}
Ejemplo de switch
int i = 2;
switch(i) {
case 0:
case 1:
case 2:
case 3:
case 4:
System.out.println("i es menor que cinco");
break;
case 5:
System.out.println("i es cinco");
break;
case 6:
case 7:
case 8:
case 9:
System.out.println("i es menor que diez y mayor a cinco");
break;
default:
System.out.println("i es diez o mayor a diez");
}
Otro ejemplo de switch
int numeroMes = 4; case 6:
String estacion = "", mes = ""; mes = "Junio";
switch (numeroMes) { case 7:
case 12: mes = "Julio";
mes = "Diciembre"; case 8:
case 1: mes = "Agosto";
mes = "Enero"; estacion = "Verano";
case 2: break;

mes = "Febrero"; case 9:


mes = "Septiembre";
estacion = "Invierno";
case 10:
break;
mes = "Octubre";
case 3:
case 11:
mes = "Marzo";
mes = "Noviembre";
case 4:
estacion = "Otoño";
mes = "Abril";
break;
case 5:
}
mes = "Mayo"; System.out.println("El mes de " + mes + " se
estacion = "Primavera"; encuentra en la estación " + estacion);
break;
Bucles - Sentencias repetitivas (for)

Sintáxis
for( inicialización; exp-booleana; iteración ) {
sentencias;
}

Flujo de Eventos
Cuando se evalúa el algoritmo al entrar a una sentencia for, se ejecuta por única
vez la sección de inicialización, luego se evalúa la expresión booleana; si el
resultado es verdadero o “true” se ejecutan las sentencias contenidas en el cuerpo
de la instrucción, por último se ejecuta el bloque de iteración y se evalúa
nuevamente la expresión booleana hasta que el resultado sea falso o “false”.
Ejemplo de for

package com.decodigo.ejemplos;
/**
*
* @author decodigo
*/
public class CicloFor {
public static void main(String args[]){
for (int i = 0; i < 10; i++) {
System.out.println("i: " + i);
}
}
}
Otro ejemplo de for
package com.decodigo.ejemplos;
/**
*
* @author decodigo
*/
public class CicloFor4 {
public static void main(String args[]){
int[] numeros = {1,2,3,4,5,6,7,8,9,10};
for (int numero : numeros) {
System.out.println("valor: " + numero);
}
}
}
Bucles - Sentencias repetitivas (while)

Sintáxis
while( expresión-booleana ) {
sentencias;
}

Flujo de Eventos
Cuando se evalúa el algoritmo al entrar a una sentencia while, se evalúa la
expresión booleana, si el resultado es verdadero o true, se ejecutan las
sentencias contenidas en el cuerpo del bloque while y se evalúa nuevamente
la expresión booleana “mientras” que el resultado no sea falso o false.
Ejemplo de while
private void dos() {
Scanner sc = new Scanner(System.in);
int numero = sc.nextInt();

while(numero <= 500)


{
System.out.println("Ingrese un numero ");
numero = sc.nextInt();
System.out.println(numero);
}
System.out.println("Termino de la aplicacion");
}
Bucles - Sentencias repetitivas (do-while)

Sintáxis
do {
sentencias;
}while(expresión-booleana );

Flujo de Eventos
Cuando se evalúa el algoritmo al entrar a una sentencia do, se ejecuta las
sentencias contenidas en el bloque, luego se evalúa la expresión booleana que
sigue a la instrucción while, si el resultado es verdadero o true, se ejecutan
nuevamente las sentencias contenidas en el cuerpo del bloque “mientras” que el
resultado no sea falso o false.
Ejemplo de do - while

public class TestDelDoWhile { //Prueba del do ... while

public static void main (String [ ] Args) {

int contador = 0 ;
do {
System.out.println ("Contando... " + (contador+1) );
contador += 1;
} while (contador<10); }
}
Bucles - Sentencias repetitivas (for In)

Sintáxis
for ( declaración var : expresión ){
sentencias;
}

Flujo de Eventos

Cuando se evalúa el algoritmo al entrar a una sentencia for-in, se ejecuta el bloque


de declaración por única vez el cuál establece una variable que tomará el valor de
un elemento de la expresión (arreglo o colección) en cada iteración del ciclo hasta
recorrer todos los elementos; Por cada iteración se evalúan las sentencias
contenidas en el cuerpo del bloque.
Instrucciones break y continue dentro de un bucle

Break: se utiliza para forzar una terminación anormal de un bucle.

Continue: hace que la ejecución prosiga con la siguiente iteración saltando las
sentencias que están a continuación.

Break/Continue son instrucciones que hay que utilizar con mucho cuidado, pues,
cambian el flujo normal de un bucle.
Ejemplo de break

public class testWhile {


public static void main (String [ ] args) {
int i = 0;
while (true) { //Condición trivial: siempre cierta
i++;
System.out.println ("Valor de i: " + i);
if (i==9) { break;}
}
} //Cierre del main
} //Cierre de la clase
Bugs al utilizar bucles

Bucles Infinitos cuando la condición para continuar el ciclo es una


estructura while, for, do/while nunca deja de cumplirse o cuando existe
un punto y coma “;” después de la cabecera de la estructura while.

Olvidar el enunciado break cuando se usa una estructura switch

Falta de agrupación en expresiones condicionales

Uso de valores de punto flotante para controlar ciclos de conteo

Colocar un punto y coma “;” inmediatamente después del paréntesis


derecho de una cabecara for.
“23 años Comprometidos con la capacitación de
profesionales en el Perú”

También podría gustarte