Sie sind auf Seite 1von 9

Reglas NullPointerException null .

. lo que sea (Error de ejecucin) El valor por defecto es un atributo de tipo clase es null En herencia, los hijos heredan los atributos y mtodos del padre No existe herencia mltiple a nivel de clases Object es el padre de toda clase Sobre escritura la funcin tiene el mismo nombre y los mismos parmetros Sobre carga los mismos nombres de las funciones, distintos parmetros A 1 objeto se le puede apuntar con 1 referencia del mismo tipo o cualquier referencia de la clase padre Al apuntar una clase con una referencia object solo se pueden ver los mtodos implementados en la clase object Primero se verifica si compila correctamente antes de verificar la ejecucin, puesto que si no compila no ejecuta En compilacin se ven los tipos de datos no a donde apuntan. En ejecucin se analizan los apuntadores y los dibujos Tipo1 = Tipo1 Tipo padre = Tipo hijo Tipo Hijo = Tipo Padre error de compilacin ClassCastException error de ejecucin En compilacin se ve la firma del mtodo, no el contenido En ejecucin se analiza la implementacin del mismo Public Animal buscar int(a) { } Animal es la firma del mtodo Un mtodo tiene firma e implementacin Implementar es dar cuerpo al mtodo

Casting Sirve para poder ver al objeto de otra forma y as poder acceder a sus mtodos. Perro p = (Perro) aa.buscar(1); en donde aa.buscar(1) es un animal Se puede hacer cast a Null, lo que se devuelve es un null No se puede hacer un cast a un mtodo void. 1. Casting en Compilacin El casting es vlido si los tipos de datos se encuentran relacionados en el rbol de herencia. (la herencia puede ser de arriba hacia abajo o viceversa). 2. Casting en Ejecucin Es vlido si son del mismo tipo o estn en relacin padre-hijo. Cuando no se puede hacer el cast en ejecucin, se produce un ClassCastException. El hecho de que el cast funcionen en compilacin no quiere decir que funciona en ejecucin Se produce un Class Cast Exception cuando no se puede realizar el Cast Hay como hacer el cast de un apuntador No hay como hacer el cast de un mtodo void (es decir que no retorna nada) Polimorfismo Se tiene un solo mtodo que tienen un comportamiento distinto dependiendo de lo que se est apuntando el apuntador. A veces es necesario que la firma de un mtodo se encuentre en la clase padre sin implementacin Con las { } un mtodo se implementa Clases Abstractas e Interfaces Una clase abstracta puede tener mtodos abstractos y mtodos implementados. Un mtodo abstracto no debe estar implementado. (Solo tiene la firma del mtodo.) Cuando se tiene un mtodo abstracto, la clase que lo contiene tiene que ser abstracta. Public abstract void comer(); puede o no tener parmetros Cuando una clase hereda de una clase abstracta se tienen dos opciones: o Implementa los mtodos abstractos. o Se declara a s misma como abstracta. Una clase que hereda de una clase abstracta implementa los mtodos abstractos de la clase padre

Para la implementacin de los mtodos abstractos, se debe hacer una sobreescritura de los mtodos (mismo nombre mismos parmetros, caso contrario es una sobrecarga y da un error). No se puede hacer new de una clase abstracta, por ende de una interfaz tampoco. New clase abstracta() error Si tengo una clase abstracta y creo una clase que herede de ella, automticamente me da un error de compilacin, puesto que se deben implementar en la clase hija los mtodos abstractos del padre. No puede haber mtodos abstractos private Cuando hay un new se tiene que verificar si la clase es una clase abstracta o una interfaz. New Auto.mover(); vlido Interfaces Interfaz hereda de object Todos los mtodos de una interfaz son abstractos. No es necesario la palabra abstract en una interfaz o en los mtodos de la misma. Los mtodos de una interfaz solo pueden ser public. En una interfaz jams se agregan mtodos implementados La implementacin de los mtodos de una interfaz se realiza en las clases que lo implementa. Si tengo una que implementa de una interfaz, automticamente me da un error de compilacin, puesto que se deben implementar los mtodos de la interfaz implementada. Si una clase implementa una interfaz, obligatoriamente debe implementar los mtodos de la interfaz. Una clase implementa una interfaz pero una interfaz no implementa una clase. A un objeto se le puede apuntar con 1 apuntador del mismo tipo, un apuntador de tipo padre o cualquier interfaz que implemente. Vendible v = new Perro(); vendible es la interfaz que implementa perro, con esto se pueden ver los mtodo de vendible Una interfaz no puede implementar otra interfaz, lo que si puede hacer es heredar de otra interfaz. Una clase puede implementar varias interfaces. Una clase no herede de interfaz solo la implementa Hay herencia mltiple a nivel de interfaces, pero no a nivel de clases. Primero va la herencia y luego la implementacin. Class ClaseA extends ClaseB implements Interface A Una interfaz hereda de object. No se puede tener mtodos abstractos private. Una clase abstracta puede o no tener mtodos. Una clase puede implementar varias interfaces. Cuando en una clase no hay un modificador es default Cuando en una interfaz no hay modificador es public Modificadores de Acceso Public, protected, default, private Al analizar la sobre escritura se debe ver el modificador de acceso Se puede cambiar el modificador de acceso siempre que el modificador sea menos restrictivo Un mtodo private no se hereda, por lo que lo nico que se puede hablar en este caso es de sobre escritura Public acceso desde la clase Private accesible nicamente desde la clase Default accesible nicamente por las clases del mismo paquete Protected accesible por las clases del mismo paquete y por las que heredan de ella sin importar el paquete Excepciones: Se tienen dos tipos de Excepciones: o Checked: necesitan ser tratadas en tiempo de compilacin Las excepciones checked se analizan en el mtodo sobre escrito. Ioexception, filenotfoundexception o Uncheked: no necesitan ser tratadas en tiempo de compilacin (null pointer exception, class cast exception) Las excepciones Uncheked heredan de RuntimeException y las checked no.

Es posible crear excepciones propias heredando de Exception. Para tratar las excepciones: 1. Se debe envolver la excepcin dentro de un bloque try-catch 2. Propagar la excepcin agregando throws a la firma del mtodo. Las excepciones en java son clases. Si dentro de un mtodo lanzo una excepcin de tipo chequed en la firma del mtodo se debe especificar que el mtodo lanza la excepcin, es decir hacer uso de throws. Si se lanza una excepcin unchequed, no pasa nada, hay como hacerlo o no es opcional. Public void m1 (int x) throws Exception { No se le oblige a tener nada dentro. } Se pueden arrojar varias excepciones en un mtodo. Throws IOException, Exception, NPE, CCE { } Analizar si las excepciones son chequed o unchequed.

Bloque Try Catch Evita que el programa se caiga, no se solucionan los errores, ni se evita la excepcin. Un bloque try puede tener varias excepciones catch. Si entra a un catch ya no entra a otro, busca al catch que coincide. Unreachable code error de compilacin Primero deben estar las excepciones hijas y luego las excepciones padre para que compile (en los catch) Finally o Se produce la excepcin va al catch y luego al finally. o Ocurra o no la excepcin se ejecuta el cdigo de finally. o Se ejecuta siempre que se ejecuta el try. o Sirve para ejecutar cdigo que se debe ejecutar s o s. (cuando en el try se abre la bdd en el finally se cierra as se caiga el programa) Sentencia Try Finally o Como no se tiene el catch el programa se cae, pero antes se ejecuta el finally Unhandled Exception o Es una IOException (Chequed), se da porque el mtodo arroja una excepcin que no se est tratando, se exige poner un try catch. Sobre escritura de Excepciones En sobre escritura se ve el modificador en sobre carga no. 1. Solo analizar el hijo Si no tiene excepciones compila sin problemas aunque el mtodo padre tenga una excepcin 2. Si el hijo arroja una excepcin unchecked no hay nada que analizar si compila. 3. Si lanza el hijo una excepcin checked entonces la nica forma de que compile el mtodo padre debe analizar la misma excepcin o una excepcin padre. Para analizar la sobre escritura primero hay que asegurarse que no sea sobre carga. Arreglos

En arreglos el tamao si importa En la declaracin del arreglo no se pone el tamao sino da error de compilacin Int arreglo1[]; Se pone el tamao al instanciarlo sino da error de compilacin. Arreglo1 = new int [2]; el 2 indica el nmero de celdas del arreglo indexadas desde cero (tamao del arreglo). Arreglo1 = new int []; Error de compilacin Arreglo1[2] = 7; compila pero no ejecuta (Error de Ejecucin ArrayIndexOutOfBoundsException Unchequed) Cuando no se pone nada se crea un arreglo de cero elementos A un arreglo se lo debe declarar, instanciar y agregar valores. Formas de instanciar y declarar un arreglo: o Int arreglo2[]={0,8}; o Int arreglo2[]= new int []{0,8}; o Int arreglo2[]= new int [2]{0,8}; Error de compilacin o Int arreglo2[]; arreglo2 = {0,8}; Error de compilacin o Int arreglo2[]; arreglo2 = new int [] {0,8}; Los corchetes se pueden poner antes o despus del nombre del arreglo. En compilacin: o Se analiza que recibe cada elemento del arreglo y lo que se le pasa o No se analizan los ndices. (esto se hace en ejecucin) Cuando se crea un arreglo las celdas del mismo tienen el valor por defecto Si ya compila se realiza el grfico Los arreglos tienen un atributo length, no un mtodo lenght Arreglos bidimensionales Int [][] arreglo5; en c/celda guarda 1 arreglo de enteros (arreglo de arreglo de enteros) Int [] arreglo8; es un arreglo de enteros, cada celda guarda un entero. Arreglo5 = new int [3][]; compila Arreglo5[1]=8; no compila porque cada celda recibe un arreglo de enteros no un entero Valor por defecto de un arreglo de arreglos es null Arreglo5[0][1] =8; compila pero da un error de ejecucin (NullPointerException), es como si estuviera null.[1] =8; (arreglo5[0] apunta a null) Int [] arreglo10[]=new int [3] [2]; (2) indica el tamao de cada arreglo Si se pone los elementos del arreglo ya no se pone el tamao. Los arreglos en java no son una matriz. Constructores: Se ejecutan cuando creamos un objeto, mediante la palabra reserva new. Son mtodos especiales que no tienen retorno Tienen el mismo nombre de la clase Cuando no se pone el constructor, hay uno por defecto o constructor vaco. El constructor vaco existe cuando no hay otro constructor, al colocar el constructor no hay constructor vaco. Cuando se coloca un constructor con parmetros se pierde el constructor vaco Cuando una clase hereda de otra primero se ejecuta el constructor del padre y luego el del hijo. Super(); llama (invoca) al constructor por defecto de la clase padre o De hacer una llamada al constructor del pap con super, esta debe ser la primera lnea ejecutable. This(x); invoca al constructor (con parmetros dentro) de la misma clase, tambin debe ser la primera lnea de ejecucin. No puede haber this y super a la vez. Bloques de Inicializacin Se declara dentro de la clase y fuera de cualquier mtodo. El cdigo de un bloque se encuentra dentro de llaves. Los bloques se ejecutan en el orden en que fueron declarados siempre antes del constructor.

Cuando una clase hereda de otra, al ejecutarse se ejecutan los bloques del padre, el constructor del padre, los bloques del hijo, los constructores del hijo. Operadores Lgicos If(a&&b) if(a&b) se cumple cuando las 2 son verdad, caso contrario no se cumple. o If(a&&b) si a es false, ya no analiza b o if(a&b) analiza a y b If(a||b) if(a|b) solo es falso cuando uno de los dos es falso o If(a||b) si a es true, ya no analiza b o if(a|b) analiza a y b En la mayora de los casos de lo mismo utilizar cualquiera de los dos pero no siempre If (a^b) verdadero cuando uno de los 2 es verdad no los 2 Operador Post Incremental Int a =1; int x = a++; syso (x); syso(a); 1. a=1; 2. a++ sigue valiendo 1, pero queda el incremento pendiente, a X se le asigna 1 (el valor actual) 3. al hacer uso de la variable a el incremento se hace efectivo y a valdra 2. Operador Pre Incremental Int a =1; int x = ++a; El incremento se hace efectivo en ese momento Operador Ternario

Compilacin y ejecucin Class ClaseA{ Public static void main (string x[]){ Syso(x[0]); } Javac src/claseA.java Java claseA abc xy abc xy son los parmetros que van al main, el espacio entre abc y xq separa a los elementos del arreglo Si estuviera abc xy sera un solo elemento que ira a la posicin cero Java Clase A crea un arreglo de tamao cero y da un ArrayIndexOutOfBounds Exception Main{ For (int i=0; i<x.length; i++){ Syso(x[i]); } } Java ClaseA q r se Java ClaseA no imprime nada, no entra al for Compilacin consola OCJP_CompilacionEjecucion y compilar la clase ClaseA, con el siguiente comando: javac src/ClaseA.java

Si se quiere ubicar el .class en un directorio diferente al que contiene el .java, se debe usar la opcin d. Ejecute el comando javac d clases src/ClaseA.java Para ejecutar un archivo .class se utiliza el comando java Ir al directorio OCJP_CompilacionEjecucion e intentar ejecutar ClaseA con el comando java clases/ClaseA y obtendr el siguiente error: java.lang.NoClassDefFoundError ya que la mquina virtual de java no encuentra el archivo ClaseA.class Para poder ejecutar ClaseA desde otro directorio se debe establecer el classpath. El classpath es el conjunto de rutas en la cual se busca las clases que se necesita para compilar o ejecutar un programa. Con la opcin cp o classpath se establece el valor del classpath. Con el classpath se puede establecer el directorio en el cual puede encontrar las clases que necesita el compilador, en este caso ClaseUno. Para este propsito ejecute el comando javac con la opcin d. javac cp clases d clases src/ocjp/compilacin/paquete2/ClaseDos.java Archivos Tomar en cuenta que el mtodo createNewFile arroja una excepcin Checked, por lo tanto debe ser tratada, ya sea envolvindola en un bloque try/catch o relanzndola. Tomar en cuenta que el mtodo mkdir no arroja excepciones. Tomar en cuenta que el mtodo renameTo recibe un parmetro de tipo File, NO existe una sobrecarga de renameTo que reciba un String El constructor de FileReader arroja una excepcin FileNotFoundException que es del tipo Checked, por lo tanto necesita ser tratada. El mtodo read arroja una excepcin del tipo IOException, que debe ser tratada. El constructor de FileWriter arroja una excepcin FileNotFoundException que es del tipo Checked, por lo tanto necesita ser tratada. Los mtodos write(), flush() y close() arrojan una excepcin del tipo IOException que debe ser tratada El mtodo reaLine arroja una excepcin del tipo IOException, que debe ser tratada. Clase Constructores Mtodos Excepciones File File(String s) createNewFile() IOException renameTo(File f) FileReader FileReader(String s) FileNotFoundException FileReader(File f) read() IOException close() FileWriter FileWriter(String s) FileNotFoundExcetion FileWriter (File f) write() IOExceptoin flush() close() BufferedReader BufferedReader(FileReader fr) readLine() IOException close() BufferedWriter BufferedWriter(FileWriter w) write(), newLine() IOException close() Inner class Para crear una variable del tipo de una clase Inner, se debe especificar ambos nombres, el de la clase Inner y el de la clase contenedora, por ejemplo: ClaseExterna.ClaseInterna interna; Para instanciar una clase Inner, se necesita una referencia a la clase que la contiene. ClaseExterna externa=new ClaseExterna(); interna = externa.new ClaseInterna(); Una clase Inner local al mtodo es como una variable declarada dentro del mtodo, por lo tanto no puede tener ningn modificador de acceso. Una clase inner annima, es una clase que se define sin nombre y hereda de otra clase o implementa una interface.

recuerde que no es posible instanciar un objeto de una Interface ni de una clase abstracta. Sin embargo luego del cdigo new InterfaceA() se abren llaves, con lo cual el cdigo hace lo siguiente: crea una instancia de una clase Inner annima que implementa la interface InterfaceA. Como implementa la interaface, debe implementar los mtodos de la interface Mtodos Estticos Cuando un objeto se crea en memoria se crea u objeto con sus atributos y mtodos Cada mtodo afecta a su propio objeto, as tengan el mismo cdigo los mtodos Los mtodos estticos no pertenecen a los objetos sino pertenecen a las clases. Todo lo esttico no pertenece al objeto sino a la clase. Los mtodos estticos se llaman mediante nombreClase.nombreMetodoEstatico(); No es necesario instanciar un objeto (hacer un new) puesto que el mtodo no est en el objeto. Cuando se hace una instancia y se mediante esa instancia se accede al mtodo da un warning, pero ejecuta y compila normalmente. Con un atributo esttico el mismo valor del atributo lo ven todos los objetos Los mtodos estticos se entienden directamente con atributos estticos Desde un mtodo esttico no se puede llamar directamente a un atributo o mtodo esttico puesto que da error de compilacin. (Porque no sabe cual de los objetos modificar) Bloques estticos son bloques que pertenecen solo a la clase y no al mtodo Un bloque esttico se ejecuta una sola vez cuando la clase se carga en memoria. Si el padre tiene mtodos estticos y el hijo sobreescribe al mtodo padre y no es esttico, genera un error de compilacin. This. hace referencia a un objeto y no a la clase. X1=10 invocar directamente newTest1.x1=10 invocar a travs de una referencia especfica del objeto a modificar. VarArgs un Var Arg internamente es un arreglo para invocar un mtodo varargs de nmeros como parmetros. Recibe cero o ms enteros (o cualquier otro tipo de dato) Ejemplo: public int sumar (Int nmeros){} hacia adentro del mtodo Int nmeros es un arreglo Reglas En la firma del mtodo solo uno de los parmetros puede usar varArgs y ste debe ser el ltimo. Enums

Un enum es public static final Permiten restringir los rangos de valores El enum se convierte en un tipo de datos Un enum solo se compara con otro enum El ordinal de enum comienza en cero El punto y coma (;) puede estar o no al final de los miembros del enum, si hay ms cdigo es oblicatorio. El constructor del enum es private, y si no se pone nada sigue siendo private (si se pone public da error de compilacin) Cada miembro del enum invoca al constructor vaco del enum y no se puede invocar desde ningn otro lado. Ordinal posicin del enum (asignado desde cero) Name nombre del enum Ds1 llama implcitamente al toString Values() devuelve un arreglo de enum con los miembros del enum

Threads Run ejecuta el mismo hilo (los proceso se ejecutan uno bajo el otro en orden) Start crea un nuevo hilo (ejecuta el run) Formas de crear un Thread o Heredando de Thread o Implementando Runnable La diferencia es que Runnable no tiene start

Comunicacin entre hilos Sleep lanza una excepcin de tipo chequed Cuando son dos hilos diferente no importa si uno falla el otro sigue funcionando Wait o Lanza una excepcin chequed o Lanza un error de ejecucin sino est envuelto en un bloque synchronyzed o Un hilo se ejecuta y espera a que el otro hilo se ejecute o Se aplica sobre una instancia especfica o Hay como sobrecargar el mtodo wait, y es en milisegundos. o No se puede utilizar dos wait se debe pasar una referencia y no se lo debe hacer el run sino en el constructor de la clase Formas para terminar un wait o Se termina la ejecucin o Se termina el tiempo mximo de espera o Notify se le dice a un hilo que deje de esperar, se lo debe envolver en un bloque syncronized (syncronized se aplica a una instancia y si no hay una se pone this) Synchronized(this){ Notify(); } No se puede elegir a quien avisar (manda a uno de los que est esperando, aunque pareciera que es el primero, xq no se sabe, y solo a uno). o notifyAll para despachar a todos los hilos que estn esperando Sockets Es una unidad lgica Es una agrupacin de IP y puerto Permite conectar una direccin Ip por varios puertos Server.accept() es una llamada bloqueante similar a wait, hasta que llegue una peticin de conexin a esa direccin IP y puerto Cuando le llega la peticin, establece la conexin y devuelve un objeto de tipo socket, que estable la conexin con el cliente. Cuando se termina de intercambiar la informacin, el programa finaliza (para que no finalice se usa un while true) Termina la conexin y regresa al estado accept hasta que se realice una nueva conexin Se aceptan las conexiones mientras est en estado accept Colecciones Lista o o o o o o o o o Set o o o o o o o o

Es una interfaz, no hay como hacer new list Su implementacin es ArrayList No es obligatorio en el new <poner algo aqu> Tiene sobrescrito el mtodo toString Admite elementos repetidos Los elementos se recuperan en el orden en el que se ingresan Est basado en ndices La diferencia entre una lista y un arreglo es que la lista crece y el arreglo no Los elementos se recuperan por el ndice haciendo uso del mtodo get Es una interfaz, no hay como hacer new set Su implementacin es HashSet No admite elementos repetidos No trabaja con ndices No hay mtodos para recuperar un elemento en especfico Para recuperar un elemento se debe hacer un barrido NO existe un orden especifico (al imprimirse se recuperan en cualquier orden) Mientras no se agregue ms elementos siempre se va a recuperar de la misma forma

Map o Es una interfaz, no hay como hacer new map o Su implementacin es HashMap o Estructura de datos clave / valor o Map<x,y> en donde x es el tipo de dato de la clave y en donde Y es el elemento a guardar o Un elemento se lo asocia a una clave y se lo recupera en base a su clave o Put mtodo para agregar elementos o Los elementos se devuelven en ningn orden especfico o Para el anlisis son las claves o No acepta claves repetidas o Cuando existe claves repetidas se reemplaza el ltimo valor repetido o Con get y la clave se recupera un objeto especfico del mapa Implementaciones adicionales de Set o LinkedHashSet recupera los datos en el orden de ingreso, no admite repetidos o TreeSet recupera los elementos en el orden natural de los objetos (ascendente), no admite repetidos Implementaciones adicionales de Map o LinkedHashMap devuelve los elementos en orden de ingreso ( hace referencia a las claves) o TreeMap guarda y recupera los elementos en el orden natural de las claves Dos elementos con el mismo hash no son iguales Cuando se sobreescribe el equals se debe sobreescribir el hashcode y viceversa El treeset no soporta null xq utiliza el compare para realizar los ingresos Compare to o 0 si son iguales o si es menor al actual o + si es mayor al actual

Equals

2 referencias son iguales con == si y solo si apuntan al mismo objeto Nunca comparar referencias con == solo contenidos No necesariamente 2 referencias con el mismo contenido tienen el mimo apuntador Equals tal como est en object trabaja como el == compara referencias En el string esta sobreescrito para comparar contenidos

Equals y Hashcode Si dos objetos son iguales por equals deben tener el mismo hashcode Si dos objetos tienen el mismo hash no necesariamente son iguales Si los 2 mtodos consideran al mismo atributo, la sobreescritura es correcta

Das könnte Ihnen auch gefallen