Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas. */ Comentario Javadoc /** La documentación aquí. */ Tipos de datos y Literales Tipos Primitivos Enteros: byte, short, char, int, long. Flotantes: float, double. Lógicos: boolean. Cadena: String Declaración e Inicialización int a; String b = null, c = a, d; Tipos Envoltorios Literales Arreglos Números Especiales Byte, Short, Character, Integer, Long. Float, Double. Boolean Cadenas: Cadena Caracteres: a, \u0132, \n Enteros: 10 Octales: 010; Hexadecimales: 0x10; Flotantes: 10f 10F Largos: 10l 10L Secuencias de escape: \n, \r, \t, \, \, \\, \f, \b, \u#### int[] enteros = new int[10]; float[][] matriz new matriz[3][3]; double[] otros = {0.1, 0.2, 0.3; otros = new double[] {0.4, 0.5; BigDecimal: Decimal arbitrariamente grande BigInteger: Entero arbitrariamente grande. Condicionales Condicional If - else if - else Nota: Las llaves son opcionales cuando se trata de una sola sentencia. if (<condición booleana>) { //sentencias else if (<cond. booleana>) { //mas sentencias else { /*sentencias*/ Página 1 de 6
Condicional switch. Nota: El valor del parámetro de switch puede ser un tipo numérico entero o de tipo Enum pero no cadenas ni flotantes. switch(<valor o enumeracion>) { case 1: break;... default: break; Bucles Nota: Dentro de los bucles se puede utilizar la palabra clave continue que realiza un salto a la siguiente iteración y la palabra clave break termina el bucle. Bucle for Nota: puede haber varias declaraciones, y varias acciones separadas por ʻ,ʼ for(<decl>; <cond while>; <acciones>) { //operaciones del bucle. for (int i = 0, j = 10; i < j; i++, j--) { //acciones Bucle while while(<condicion booleana>) { //acciones del bucle. Bucle do - while do { /* sentencias */ while(<condicion booleana>); Bucle foreach Nota: el bucle foreach puede utilizarse con colecciones, arreglos u objetos que implementen la interfaz Iterable for(<declaracion> : <coleccion>) { //sentenicas int[] a = {1, 2, 3; for(int i : a) { //hacer algo con a Operadores Nota: se incluyen solamente los operadores más utilizados Asignaciones a = b; a += b; (es como a = a + b) a -= b; a *= b; a /= b; Operadores Aritméticos Incremento y Decremento Concatenación Suma:+ Resta: - Multiplicación: * División: / Módulo: % Incremento: i++; ++i; Decremento: i--; --i; a + b ; Página 2 de 6
Lógicos AND: &&, & (Sin lógica de cortocircuito) OR:, (Sin lógica de cortocircuito) NOT:! Comparación Mayor (o igual): >, >= Menor (o igual): <, <= Igualdad: == Desigualdad:!= Condicional Instancia (Test es-un) Nota: este operador evalúa a un valor booleano. <condición>? <verdadero> : <falso>; : i == 10? Diez : No Diez ; B a =...; a instanceof B; Clases, Interfaces, Enumeraciones Nota: las clases ʻtop levelʼ pueden tener acceso public o package solamente. Clases [public] class A { Instanciación A a = new A(); Interfaces [public] interface B { Enumeraciones [public] enum C { <constantes>, PERRO, GATO,... Atributos Nota: los atributos pueden tener acceso private, protected, public o package. Métodos Nota: poseen mismas reglas de tipo de acceso que los atributos. Métodos de Argumentos Variables class A { [private protected public]<tipo> <nombre>;... private int canas; class A { public void doit() { public int m() { return 1; class Variables { void m(int... nros) { for(int i : nros) { //hacer algo void test() { m(1, 2, 3, 4); //uso m(); //esto es legal también. Página 3 de 6
Métodos Abstractos Nota: en las interfaces los métodos son implícitamente públicos y abstractos. Nota 2: Las clases tienen que ser abstractas para tener métodos abstractos. public interface B { void doit(); int m(); abstract class Ab { abstract void doit(); int m() { return 2; Miembros Static public class A { static int b = 2; private static void c() { ; Constantes Nota: si se declaran atributos en una interfaz, automáticamente pasan a ser static y constantes (final). Herencia Nota: entre interfaces existe la herencia múltiple. class Constantes { public final int PRUEBA = 8; private final cuenta = 2; void m(final int b) { final int a = 2; interface A { int PRUEBA = 20; class A extends B { interface I extends I1, I2, I3{ Implementación class A extends B implements I { //métodos. Constructores class A { <acceso> A() { //hacer algo <acceso> A(int i) { //hacer algo. Polimorfismo class A { public void m() { /* hace algo */ class B extends A { public void m() { /* otra cosa */ Sobrecarga de Métodos class A { void m() { /* hace algo */ void m(int i) { /* otro mas */ void m(int i, int j) { /* otro */ Manejo de Errores y Excepciones Página 4 de 6
Arrojar Excepciones class Ex { void m() throws Exception { if (<cond de error>) throw new Exception(); Atrapar Excepciones Ex ex = new Ex(); try { ex.m(); catch (Exception ex) { //manejar la excepción finally { //esto pasa si o si. Anotaciones Definir Anotaciones @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Anotacion { Anotaciones de Clase @Anotacion class A { Anotaciones de Atributo class A { @Anotacion private int b; Anotaciones de Método class A { @Anotacion private void m() { //hacer algo. Anotaciones de Parámetro public int mimetodo(@anotacion int b) { Anotaciones de Variable Local public void mimetodo() { @Anotacion int i = 2; Anotaciones de Paquete //archivo package-info.java @Anotacion package com.juancavallotti.demo; Espacios de Definición de un Paquete Nota: la sentencia package debe ser la primera del archivo fuente. package com.juancavallotti.mio; Página 5 de 6
Importar clases. Nota: se puede usar el comodín ʻ*ʼ para importar todas las clases de un paquete o bien especificar la ruta completa a una clase. Importas miembros estáticos. Nota: se puede utilizar * para importar todos los miembros estáticos de una clase o especificar el nombre del miembro a importar. import com.juancavallotti.otro.*; import com.juancavallotti.otromas.clase; import static com.juancavallotti.a.*; class C { void metodo() { m(); //método estático de A Opciones Especiales de Java Autoboxing Nota: consiste en convertir tipos primitivos en Envoltorios y envoltorios en primitivos. Tipos Genéricos Integer a = 10. int b = a; Float f = 10.2f List<A> lista; //lista de elementos tipo A HashMap<B, C> mapa; A a = Fabrica.crear(A.class); //metodos genéricos. Página 6 de 6