guia de estudio oca java se 7 programmer
TRANSCRIPT
Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio
Oscar Vásquez Flores ([email protected] ) 1
Guia de estudio para OCAJP7
“Oracle Certified Associate Java SE 7 Programmer”
Fecha Cambios
2014-01-20 Primera publicación
2014-05-14 Cambios de formato del documento
I. Información del examen
Duración: 150 minutes
Nro. de preguntas: 90
Score para pasar: 63%
Código del examen: 1Z0-803
Nombre del examen: Java SE 7 Programmer I
Costo: $ 150
Detalles completos del examen
http://education.oracle.com/pls/web_prod-plq-
dad/db_pages.getpage?page_id=5001&get_params=p_exam_id:1Z0-803
Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio
Oscar Vásquez Flores ([email protected] ) 2
II. Temas del examen
1. Java basico
2. Trabajando con tipos de datos Java
3. Uso de operadores y construcción de decisiones
4. Creación y uso de arrays
5. Construcción de bucles
6. Trabajando con métodos y encapsulamiento
7. Trabajando con herencia
8. Manejando excepciones
Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio
Oscar Vásquez Flores ([email protected] ) 3
III. Desarrollo de temas
1. Java basico
1.1. Definir el alcance de las variables
No hay detalles en esta sección
1.2. Definir la estructura de una clase
No hay detalles en esta sección
1.3. Crear aplicaciones Java ejecutables con el metodo main
No hay detalles en esta sección
1.4. Importar paquetes Java para utilizar diversas clases
No hay detalles en esta sección
Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio
Oscar Vásquez Flores ([email protected] ) 4
2. Trabajando con tipos de datos Java
2.1. Declarar e inicializar variables
No hay detalles en esta sección
2.2. Diferencias entre variables que referencian a objetos y variables
primitivas
No hay detalles en esta sección
2.3. Leer y escribir campos de un objeto
No hay detalles en esta sección
2.4. Explicar el ciclo de vida de un objeto
No hay detalles en esta sección
2.5. Invocar métodos de un objeto
No hay detalles en esta sección
2.6. Manipular datos usando la clase StringBuilder y sus métodos
❑ Los objetos String son inmutables (No se pueden modificar), pero las variables de
referencia a un objeto String no lo son.
❑ Si se crea un String nuevo sin ser asignado a alguna variable, este se perderá del
programa.
❑ Si se direcciona la referencia de un String a un nuevo String, el antiguo String puede
ser perdido.
❑ Los métodos de la clase String basan sus índices iniciando en cero, excepto el segundo
parámetro de substring().
❑ La clase String es final, sus métodos no se puede sobre escribir.
❑ Cuando la JVM encuentra un String literal, este se agregar al pool de String literal.
❑ String tiene un metodo length(); y los arrays tienen un atributo length.
❑ El API StringBuffer es lo mismo que el nuevo API StringBuilder, excepto que los
métodos de StringBuilder no son sincronizados para thread safety.
❑ Los métodos de StringBuilder deben correr mas rápidos que los métodos de
StringBuffer.
❑ Todos los siguiente puntos aplican a StringBuffer y StringBuilder:
❑ Ambos son mutables, ellos pueden cambiar sin tener que crear un objeto nuevo.
Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio
Oscar Vásquez Flores ([email protected] ) 5
❑ Los métodos de StringBuffer actúan directo sobre el objeto que los invoca, y
pueden cambiar al objeto, sin necesidad de una asignación explicita en la sentencia.
❑ equals() de StringBuffer() no esta sobre escrito, este no compara valores.
❑ Se debe recordar que una cadena de métodos se evalúan de izquierda a derecha.
❑ Los siguiente métodos de String son los mas importantes:
charAt(), concat(), equalsIgnoreCase(), length(), replace(), substring(),
toLowerCase(), toString(), toUpperCase() y trim().
❑ Los siguiente métodos de StringBuffer son los mas importantes:
append(), delete(), insert(), reverse() y toString()
2.1. Crear y manipular cadenas
No hay detalles en esta sección
Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio
Oscar Vásquez Flores ([email protected] ) 6
3. Uso de operadores y construcción de decisiones
3.1. Use Java operators
No hay detalles en esta sección
3.2. Use parentheses to override operator precedence
No hay detalles en esta sección
3.3. Test equality between strings and other objects using == and equals
()
No hay detalles en esta sección
3.4. Creación de if y if/else
❑ La única expresión valida dentro de una sentencia if, es una expresión booleana,
es decir una expresión que retorne una un tipo boolean o Boolean.
❑ No confundir la asignación (=) con la prueba de la igualdad (==).
Ejemplo:
boolean x = false;
if (x = true) { } // Es una asignación, entonces siempre va a retornar true.
❑ Las llaves son opcionales para un bloque if, si solo tiene una sentencia
condicional.
3.5. Use a switch statement
❑ La sentencia switch puede evaluar únicamente tipos de datos enum, byte,
short, int o char.
Esto es invalido.
long s = 30;
switch(s) { }
❑ El dato que esta en la sentencia case, debe ser un valor literal o una variable
final, o una expresión constante, incluido un enum. No se puede tener una case
con una variable no final o un rango de valores.
❑ En una sentencia switch cuando se entra a un case y este no tiene una
sentencia break, se entrara a todos los siguientes case, hasta encontrar un break,
a pesar de que el valor que representan los demás case no tenga un valor que
coincide con la buscado por el switch, es muy importe el uso del break para
terminar cada case, si así se desea, debido a que el uso de break es opcional.
❑ Se puede usar un bloque default para el caso en que ninguna sentencia case
cumpla la condición del switch.
❑ El bloque default se puede ubicar en cualquier parte en una sentencia switch, y
se ingresa a este si algún case previo fue activado, si el default no tiene un break
se ejecutará el siguiente case, hasta encontrar algún break.
Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio
Oscar Vásquez Flores ([email protected] ) 7
4. Creación y uso de arrays
4.1. Declarar, instanciar, inicializar y usar arrays de una dimensión
❑ Los arreglos pueden contener datos primitivos u objetos, pero los arreglos son
siempre un objetos.
❑ Todos los siguientes ejemplos son validos para la declaración de un arreglo:
String arreglo1[ ];
String [ ]arreglo2;
String [ ] arreglo3;
String [ ] arreglo3;
Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio
Oscar Vásquez Flores ([email protected] ) 8
❑ No se debe incluir el tamaño del arreglo en la declaración.
Esto no es valido: String arreglo1[5];
❑ Un arreglo puede contener cualquier objeto que pase la prueba IS-A (o
instanceof) según el tipo declarado en el arreglo.
Ejemplo:
Si Cliente extiende a Persona, entonces un objeto Cliente puede estar en un arreglo
de Persona.
4.2. Declare, instantiate, initialize and use multi-dimensional array
No hay detalles en esta sección
4.3. Declare and use an ArrayList
No hay detalles en esta sección
Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio
Oscar Vásquez Flores ([email protected] ) 9
5. Construcción de bucles
5.1. Crear y usar el bucle while
No hay detalles en esta sección
5.2. Create and use for loops including the enhanced for loop
❑ La forma basica del bucle for tiene tres partes: declaración y/o inicialización, evaluación
booleana y una expresión para iteración.
❑ Si una variable es incrementada o evaluada dentro del for, esta debe ser declarada
antes del for o dentro de la sección de declaración del for.
❑ Una variable que se declara dentro de un for no puede ser accedida fuera del for.
❑ Se puede inicializar mas de una variable del mismo tipo en la sección de declaraciones
del for, cada inicialización debe estar separada por una coma.
❑ Un for mejorado (Disponible desde JSE 6.0), tiene dos partes, una declaración (La
variable debe ser compatible con los elementos del array o colección) y una expresión (array o colección). Se utiliza únicamente para navegar en los arrays y colecciones.
❑ Dentro del bloque del for mejorado la variable que utilizamos en la declaración inicial
contendrá o representara cada elemento del array.
❑ La sección de expresión booleana de los bucles en Java siempre debe retornar un dato
tipo boolean, de lo contrario se genera un error de compilación.
❑ En un bucle do se ingresa por lo menos una vez al cuerpo de este.
5.3. Crear y usar el bucle do/while
No hay detalles en esta sección
5.4. Comparar la construcción de bucles
No hay detalles en esta sección
5.5. Uso de la sentencia break y continue
No hay detalles en esta sección
Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio
Oscar Vásquez Flores ([email protected] ) 10
6. Trabajando con métodos y encapsulamiento
6.1. Crear métodos con argumentos y valor de retorno
No hay detalles en esta sección
6.2. Aplicar la palabra reservada static a métodos y campos
No hay detalles en esta sección
6.3. Crear un metodo sobrecargado
No hay detalles en esta sección
6.4 Diferencia entre el constructor por defecto y los definidos por usuario
No hay detalles en esta sección
6.5 Crear y sobrecargar constructores
No hay detalles en esta sección
6.6. Aplicar modificadores de acceso
No hay detalles en esta sección
6.7 Aplicar principios de encapsulamiento a una clase
No hay detalles en esta sección
6.8 Determinar el efecto de pasar referencias de objetos y valores
primitivos a métodos que realizan cambios sobre estos
No hay detalles en esta sección
Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio
Oscar Vásquez Flores ([email protected] ) 11
7. Trabajando con herencia 7.1. Implementar herencia
No hay detalles en esta sección
7.2. Desarrollar código que demuestra el uso de polimorfismo
No hay detalles en esta sección
7.3. Diferencia entre el tipo de la referencia y el tipo del objeto
No hay detalles en esta sección
7.4. Determinar cuando una conversión es necesaria
No hay detalles en esta sección
7.5. Uso de super y this para acceder a constructores y objetos
❑ Un constructor siempre se invoca cuando un objeto nuevo es creado.
❑ Each superclass in an object's inheritance tree will have a constructor called.
❑ Cada clase, incluso una clase abstracta tiene por lo menos un constructor.
❑ El constructor tiene el mismo nombre que la clase.
❑ El constructor no tiene un tipo de retorno. Si puede ver un metodo con el mismo
nombre que la clase, debe retornar algo o ser void.
❑ La ejecución típica de un constructor es la siguiente:
❑ El constructor invoca al constructor de la super clase, y esta al de su super
clase, hasta llegar al constructor de la clase Object.
❑ Luego de ejecutar el constructor de la clase Object se retornar a la clase que
invoca el constructor y asi sucesivamente hasta completar todos, luego de eso la instancia de la clase deseada es creada.
❑ El constructor puede usar cualquier modificador de acceso incluso private.
❑ El compilador crea un constructor por defecto si no se especifica ningún constructor en
la clase.
❑ El constructor por defecto no tiene argumentos e invoca a super().
❑ En caso de ser necesario la primera sentencia que cada constructor deberá invocar es
ya sea a this()(Sobre carga de constructores) o super(); estas sentencias no puede estar después de otras sentencias. No puede invocar super() y this() a al vez.
Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio
Oscar Vásquez Flores ([email protected] ) 12
❑ El compilador agregara un llamado a super(), al menos que se tenga una invocacion a
this() o super().
❑ Las clases abstractas tienen constructores que son invocados cuando una subclase
concreta es invocada.
❑ Las interfaces no tienen constructores.
❑ Si la súper clase no tiene un constructor sin argumentos, en la sub clase se debe crear
un constructor e insertar una invocación a super() con los argumentos que coincidan con los de la súper clase.
❑ Los constructores nunca se heredan, ellos no se pueden sobre escribir.
❑ Los constructores se pueden invocar de forma directo únicamente por otros
constructores, usando la invocación super() o this().
❑ Los constructores pueden invocar a constructores y estos a otros constructores, así
sucesivamente, pero tarde o temprano alguno de estos invocara a super().
7.6. Uso de clases abstractas e interfaces
❑ Las interfaces son contratos respecto a que debe hacer una clase, pero no
especifica el como se debe realizar.
❑ Las interfaces pueden ser implementadas por cualquier clase de cualquier
jerarquía.
❑ Una interface es similar a una clase 100% abstracta. La interface puede tener el
modificador abstract, el cual es implícito.
❑ Una interface puede tener únicamente métodos abstractos, no esta permitido los
métodos concretos.
❑ Por defecto los métodos de una interface son public y abstract, la declaración
explicita de estos modificadores es opcional.
❑ Las interfaces pueden tener constantes las cuales son siempre implícitamente
public, static y final, la declaración de cualquiera de estos modificadores es
opcional, no es valido cualquier otro modificador.
❑ Una clase no abstracta de implementación debe seguir las siguientes reglas:
❑ Debe proveer implementación para todos los métodos de la interface.
❑ Deberá seguir todas las reglas de sobre escritura para los métodos que
implementa.
❑ No deberá declarar ninguna nueva excepción chequeada para el método
que implementa.
Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio
Oscar Vásquez Flores ([email protected] ) 13
❑ No deberá declarar ninguna excepción chequeada que se más amplia
(superclase) que la excepción declarada en el método de la interface.
❑ Se puede declara cualquier excepción de tipo runtime (RuntimeException)
en la implementación de cualquier método de interface sin importar la
declaración en la interface.
❑ Se debe mantener la firma exacta del método (es permitido retornos
covariant) y el tipo de retorno del método que se implementa, no es
necesario que se declare las excepciones del método que esta en la
interface.
❑ Una clase que implementa una interface puede ser abstract.
❑ Una clase abstract que implementa una interface no es obligatorio que
implemente todos los métodos de la interface, pero la primera clase concreta que la
extienda si debe hacerlo.
❑ Una clase solo puede extender una clase (No es valida la herencia múltiple),
pero puede implementar varias interfaces a la vez.
❑ Las interfaces pueden extender una o varios interfaces a la vez.
❑ Las interfaces no pueden extender una clase o implementar una interface.
Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio
Oscar Vásquez Flores ([email protected] ) 14
8. Manejando excepciones
8.1. Diferenciar entre checked exceptions, runtime excepcion y errors
❑ Las excepciones pueden ser de dos tipos: checked (manejadas) y unchecked (no
manejadas).
❑ Las excepciones checked incluyen todos los sub tipos de la clase Exception, pero sin
considerar a las que sean sub tipo de RuntimeException.
❑ Las excepciones checked son sujetas a ser manejadas o declaración de reglas,
cualquier metodo que pueda lanzar una excepción checked (incluyendo métodos que invocan a otros métodos que puedan lanzar una excepción checked) deberá declara una excepción usando la clausula throws, o manejar la excepción con un apropiado try/catch.
❑ Los sub tipos de Error o RuntimeException son unckecked, entonces el compilador
no obliga a manejarlas o declarar reglas. Se tiene la libertad de manejarlas si se desea o declararlas.
❑ Si se usa el bloque opcional finally, este siempre será invocado, sin importar que se
genere una excepción o no, y sin importar que la excepción sea atrapada.
❑ La única forma para que el bloque finally no sea invocado es cuando se tenga un
apagado de la JVM, por ejemplo cuando se invoca a System.exit() dentro del código antes del bloque finally.
❑ Al invocar a finally no significa que este siempre se completara o ejecutara todo su
bloque, debido a que dentro de este bloque se puede generar una excepción o lanzar una System.exit() el cual lo interrumpirá.
❑ Una excepción no controlada pasara de metodo a metodo (iniciando por el metodo que
genero la excepción) hasta que alguno de ellos tenga un try/catch que lo controle, de lo contrario provocara que se termine el programa (Cancelación del JVM).
❑ Se pueden crear excepciones personalizadas extendiendo la clase Exception o algún
sub tipo de esta. Según eso la excepción se considera checked, entonces el compilador forzara a manejarla o declararla.
❑ Todos los bloques catch deben ser ordenados del más especificos al más general.
Por ejemplo si se tiene una clausula catch con IOException y otro con Exception, se deberá colocar primero IOException. De otro forma la excepción tipo IOException será atrapada por el bloque catch de Exception, el bloque catch atrapa cualquier excepción que sea un sub tipo del argumento, luego de eso ya no se continua con el siguiente catch, el compilar generara un error cuando se tenga clausulas que nunca serán alcanzadas.
8.2. Crear bloques try-catch y determinar como las excepciones alteran el
flujo normal de un programa
No hay detalles en esta sección
8.3. Describir que excepciones son usadas en Java
No hay detalles en esta sección
8.4. Invocar a un metodo que lance una excepción
No hay detalles en esta sección
Oracle Certified Associate Java SE 7 Programmer (1Z0-803) - Guia de estudio
Oscar Vásquez Flores ([email protected] ) 15
8.5. Reconocer clases comunes de excepciones y sus categorías
❑ Algunas excepciones son creadas por los programadores otras son creadas por la JVM.
❑ Las siguientes son ejemplos de excepciones unchecked.
* Sub clases de java.lang.RuntimeException.
Estas excepciones pueden ser lanzadas en programación.
ArrayIndexOutOfBoundsException, indica que un array a sido accedido con un
índice ilegal. El índice es negativo, mayor o igual que el tamaño del array. Es una
sub clase de IndexOutOfBoundsException.
ClassCastException, indica que el código intenta hacer un cast de un objeto hacia
una sub clase de la cual no es instancia, ejemplo el siguiente código genera esa
excepción.
Object x= new Integer(0);
System.out.println((String)x);
IllegalArgumentException, indica que al metodo a sido pasado un argumento
ilegal o inapropiado.
IllegalStateException, Es una señal que un metodo a sido invocado en un tiempo
inapropiado. En otras palabras, el entorno Java o aplicación Java no esta en un
apropiado estado para la operación solicitada.
NullPointerException, Ocurre cuando una aplicación intenta usar un null cuando
un objeto es requerido.
NumberFormatException, Indica que una aplicación a intentado convertir una
cadena a un tipo numérico, pero la cadena no tiene un formato apropiado. Es una
sub clase de IllegalArgumentException.
* Sub clases de java.lang.Error.
Estas excepciones son lanzadas usualmente solo por el JVM.
AssertionError, Indica que el assertion a fallado.
ExceptionInInitializerError, Indica que una excepción inesperada a ocurrido
durante una inicialización estática. Es una sub clase de LinkageError.
StackOverflowError, Ocurre cuando existe un desbordamiento de pila, en
aplicaciones recursivas por entrar muy profundo, es una sub clase de
VirtualMachineError.
NoClassDefFoundError, Se genera cuando el JVM o el cargador de clases intenta
cargar una definición de clase pero no se encuentra la definición de esta. Es una
sub clase de LinkageError.