- Bienvenido a Java
- Fundamentos de Java
- Operadores
- Tomando decisiones
- API's basicos
- Interfaces funcionales y lambdas
- Diseño de clases
- Diseño de clases avanzado
- Excepciones
- Modulos
- Bienvenido a Java
- Aprender del ambiente de Java
- Componentes de Java
- Descargando un JDK
- Beneficios de Java
- Estructura de clases
- Campos y métodos
- Comentarios
- Clases vs Archivos
- Escribiendo el método
main
- Creando el método
- Pasando parámetros
- Ejecutando un programa
- Entendiendo la declaración de paquete y las importaciones
- Comodines
- Redundancia
- Conflictos de nombrados
- Creando un nuevo paquete
- Compilando y ejecutando un programa con paq uetes
- Usando un directorio alterno
- Compilar a JAR
- Crear un JAR
- Ejecutar un un programa con paquetes
- Ordenando elementos en una clase
- Formato de Código
- Resumen
- Esenciales del examen
- Preguntas del Examen
- Aprender del ambiente de Java
Objetivo | Capitulo |
---|---|
Describir la tecnología Java | 1 |
Identificar características de java | 1 |
Crear un ejecutable con una clase main | 1 |
Compilar y ejecutar un programa | 1 |
Crear e importar paquetes | 1 |
Definir la estructura de una clase | 1 |
Leer o escribir a los miembros de una clase | 2 |
Declarar e inicializar variables | 2, 3 |
Identificar alcance de variable | 2 |
Usar inferencia de tipos | 2 |
Crear y manipular objetos de Java y explicar ciclo de vida | 2 |
Usar operadores y precedencia | 3 |
Usar operadores de control if, else, switch | 4 |
Crear do/while, while y for loops | 4 |
Crear y manipular Strings | 5 |
Manipular datos con StringBuilder | 5 |
Crear y manipular arreglos de una dimension | 5 |
Crear y manipular arreglos multidimensional | 5 |
Crear métodos y constructores | 7 |
Crear métodos sobrecargados | 7 |
Aplicar static keyword |
7 |
Aplicando modificadores de acceso | 7 |
Aplicar encapsulamiento | 7 |
Crear y usar sub clases y super clases | 8 |
Crear y extender clases abstractas | 8 |
Habilitar polimorfismo | 8 |
Diferenciar entre tipo de objeto y de referencia | 8 |
Distinguir entre sobre carga, sobre escritura y ocultamiento | 8 |
Crear y usar interfaces | 9 |
Distinguir herencia de interface y clases abgstractas | 9 |
Declarando y usando List y ArrayList | 5 ,6 |
Entendiendo expresiones lambda | 6 |
public static void main(String[] args) {
int[] valores = { 10, 30, 50 };
for(int val : valores){
int x = 0;
while(x<valores.length){
System.out.println (x+" "+val);
x++;
}
}
}
- 0
- 1
- 2
- 3
Respuesta: 3 por que el ciclo while
se ejecuta 3 veces
-
run()
-
execute()
-
call()
-
do()
Respuesta: call()
. Callable es usado cuando se espera que el hilo regrese un resultado. El resultado de call()
puede ser obtenido a través de un objeto Future
3. Considera el siguiente código. ¿Qué correcciones se le pueden aplicar para que compile sin errores?
public abstract class TestClass{
public abstract void m1();
public abstract void m2(){
System.out.println("hello");
}
}
Seleccionar 2
- Reemplazar el cuerpo del método
m2()
con;
- Reemplazar el
;
al final delm1()
con un cuerpo - Remover
abstract
dem2()
- Remover
abstract
de la declaración de las clases
Respuesta: 1 y 3. Un método abstracto no puede tener cuerpo y un método abstracto no puede ser private
o final
System.out.println("12345".charAt(6));
- 5
- null
- -1
- Lanza
ArrayIndexOutOfBoundsException
- Lanza
StringOutOfBoundsException
- Lanza
IndexOutOfBoundsException
Respuesta:
- Lanza
IndexOutOfBoundsException
conforme al API de String - Lanza un
StringIndexOutOfBoundsException
que es una subclase deIndexOutOfBoundsException
@throws IndexOutOfBoundsException if the {@code index}
argument is negative or not less than the length of this string.
Seleccione 4
- Convertir de char a long no requiere un cast
- Convertir de byte a short no requiere un cast
- Convertir de short a char requiere un cast
- Convertir de int a float requiere un cast
- Convertir de byte, char o short a int, long o float no requiere de cast
Respuesta: 1, 2, 3 y 5.
- Convertir de
short
achar
requiere un cast por quechar
es unsigned yshort
es signed. - Convertir de
int
afloat
no requiere un cast por queint
es signed yfloat
es signed y puede contener el rango de valores deint
. - Convertir de
byte
,char
oshort
aint
,long
ofloat
no requiere de cast por que son tipos de datos mas pequeños que los tipos de datos a los que se convierten.
- Cuando la JVM se inicia desde la consola interactiva y explícitamente se redirige standard input y output a Console
- Cuando la JVM se inicia desde la consola interactiva y no se redirige explícitamente standard input y output
- Cuando la JVM se inicia desde un proceso en segundo plano y explícitamente se redirige standard input y output a Console
- Cuando la JVM se inicia desde un proceso en segundo plano y no se redirige standard input y output a Console
Respuesta: 2. La consola de una JVM depende de la plataforma y la forma en que es invocada.
- Si la JVM es invocada desde la consola interactiva, entonces la consola es disponible.
- Si la JVM es invocada desde un proceso en segundo plano, entonces la consola no es disponible.
- El tipo de referencia es
List
y el tipo de objeto esArrayList
- El tipo de referencia es
ArrayList
y el tipo de objeto esArrayList
- El tipo de referencia es
ArrayList
y el tipo de objeto esList
- El tipo de referencia es
List
y el tipo de Objeto esArrayList
Respuesta: 1. El tipo de referencia es List
y el tipo de objeto es ArrayList
. El tipo de referencia es el tipo declarado la variable y el tipo de objeto es el tipo de la instancia.
8. Como puedes declarar un método miMétodo()
? de forma que no se necesite una instancia de la clase para acceder y todos los miembros del paquete tengan acceso
Selecciona 3 opciones
-
public static void miMétodo()
-
static void miMétodo()
-
protected void static miMétodo()
-
void miMétodo()
-
protected void miMétodo()
-
public abstract static void miMétodo()
Respuesta: 1, 2 y 3.
- Un método
static
puede ser accedido sin una instancia de la clase. - Un método
static
puede ser accedido por cualquier miembro del paquete. - Un método
static
no puede serabstract
por que no puede ser sobrescrito.
- Tiene un método y debe de ser abstracto
- Tiene un método y puede ser abstracto
- Tiene un método abstracto y puede tener métodos estáticos o default
- Tiene un método estático y puede tener métodos abstractos o default
Respuesta: 3. Una interfaz funcional tiene un método abstracto y puede tener métodos estáticos o default.
- Una interfaz funcional puede tener cualquier número de métodos default o estáticos.
- Una interfaz funcional puede tener cualquier número de métodos
private
oprivate static
pero no puede tener métodosprivate abstract
oprivate static abstract
-
break
sin etiquetar puede ocurrir solo enswitch
,while
,do
yfor
-
continue
sin etiquetar puede ocurrir solo enswitch
,while
,do
yfor
-
break
no puede ocurrir sin etiqueta -
continue
no puede ocurrir CON etiqueta - [] Ninguna de las anteriores
Respuesta: 1. break
sin etiqueta puede ocurrir solo en switch
, while
, do
y for
- Si no se especifica una etiqueta,
break
termina el bloque mas cercano - Si no hay un bloque switch, while, do o for, entonces
break
no puede ocurrir. continue
sin etiqueta puede ocurrir solo enwhile
,do
yfor
, y no puede enswitch
en ningún momento.
Selecciona 2
- java.util.Date
- java.time.Instant
- java.util.Calendar
- java.util.GregorianCalendar
- java.time.Duration
Respuesta: 2 y 5 por que las clases del paquete java.time
son inmutables y por lo tanto thread safe.
- Las clases del paquete
java.util
no son thread safe.java.util.Date
yjava.util.Calendar
son mutables y por lo tanto no son thread safe. java.util.GregorianCalendar
es una subclase dejava.util.Calendar
y por lo tanto no es thread safe.java.time.Duration
es inmutable y por lo tanto thread safe.
Selecciona 4
- Las interfases siempre son abstractas
- Las interfaces pueden tener métodos estáticos
- Todos los métodos de una interfaz son abstractos aunque no se especifique
- Los campos de una interfase pueden ser declarados transient o volatile pero no
synchronized
- Las interfaces no pueden ser finales
- Las interfaces permiten herencia multiple a través de métodos default
Respuesta: 1, 2, 4 y 5.
- Las interfaces siempre son abstractas. y pueden tener métodos estáticos y default.
- Una interfaz puede tener método default y es considerado no abstracto.
- Una clase no abstracta que implementa la interfaz no necesita implementar el método default. Las interfaces no pueden ser finales.
- Las interfaces permiten herencia multiple a través de métodos default. Si una clase implementa dos interfaces que tienen métodos default con la misma firma, la clase debe de implementar el método.
- Lenguaje
- Región
- País
- Zona horaria
- Estado
- Cultura
Respuesta: 1. Locale necesita un lenguaje. Un lenguaje es un idioma como en
para ingles o es
para español.
- Un lenguaje es requerido para construir un
Locale
. - Un
Locale
puede tener una región, un país, una zona horaria, o una variante pero no son requeridos.
Seleccione 2
-
List<String> lista = new List<>();
-
ArrayList<String> lista = new List<String>();
-
ArrayList<> lista = new ArrayList<>();
-
List<String> lista = new ArrayList<>();
-
List<> lista = new ArrayList<>(6);
Respuesta: 4 y 5. List
es una interfaz y no puede tener instancias. Cuando se crea un ArrayList
es posible especificar el tamaño del arreglo
-
trim()
-
ensureCapacity(int)
-
append(boolean)
-
reverse()
-
setLength(int)
-
compareTo
Respuesta: 1. El método trim
es parte de String. StringBuilder
no tiene un método trim
.
StringBuilder
tiene un métodoensureCapacity
que incrementa la capacidad del arreglo interno al mínimo especificado.StringBuilder
tiene un métodoappend
que agrega un valor al final delStringBuilder
.StringBuilder
tiene un métodoreverse
que invierte el contenido delStringBuilder
.StringBuilder
tiene un métodosetLength
que cambia la longitud delStringBuilder
.StringBuilder
tiene un métodocompareTo
que hace una comparación lexicográfica como esta definido enCharSequence
.
Selecciona 2
- Todas las clases deben de definir un constructor explícitamente
- Un constructor puede ser privado
- Un constructor puede declarar un valor de retorno
- Un constructor debe de inicializar todos los miembros de la clase
- Un constructor puede tener acceso a los miembros no estáticos de la clase
Respuesta: 2 y 5. Un constructor sin argumentos se crea de forma automática si no se define un constructor.
- Un constructor puede ser privado, como en las clases de Singleton. Un constructor no puede declarar un valor de retorno.
- Un constructor no necesita inicializar todos los miembros de la clase, ya que serán puestos valores default.
- Un constructor puede tener acceso a los miembros estáticos y no estáticos de la clase.
17. ¿Qué opciones son verdaderas para declarar una variable que puede referenciar a un arreglo de 10 enteros
Seleccione 2
-
int[] arr
-
int[10] arr
-
int arr[]
-
Object[] arr
-
Object[10] arr
Respuesta: 1 y 3. La dimensión de un arreglo no puede ser especificada del lado izquierdo de la expresión.
- Si, para cualquier tipo de arreglo
- Si, pero solo para arreglos de primitivos
- Si, pero solo para arreglos de objetos
- Si, es lo mismo que declarar un arreglo nulo
- No, no es posible declarar arreglos de longitud cero
Respuesta: 1. Es posible declarar arreglos de longitud cero para cualquier tipo de arreglo.
- Un arreglo nulo no puede ser accedido y lanza un
NullPointerException
. Un arreglo de longitud cero puede ser accedido y no lanza unNullPointerException
.
Seleccione 4
-
if (9 == 1) {}
-
if (y = 1) {} // asume que Y es int
-
if (false) {}
-
if (y = false) {} // asume que Y es boolean
-
if (y == 1? false: true) {}
Respuesta: 1, 3, 4 y 5. La expresión if(...)
requiere de un booleano.
if (9 == 1) {}
es valido por que9 == 1
es un booleano.if (y = 1) {}
no es valido por quey = 1
es un entero.if (false) {}
es valido por quefalse
es un booleano.if (y = false) {}
es valido por quey = false
es un booleano.if (y == 1? false: true) {}
es valido por quey == 1? false: true
es un booleano.
Seleccione 3
- La expresión de la condiciones de un
if
puede ser una llamada a un método - Si
x
yy
son de tipo booleano,if (x = y) {}
es validoif
- Una expresión if puede tener un
if
o unelse
- La expresión
if (false); else;
es inválida - Solo las expresiones que evaluan a un booleano pueden ser usadas en un
if
Respuesta: 1, 2 y 5
- La expresión puede ser una llamada a un método, como en
if (x.equals(y)) {}
siempre y cuando el método regrese un booleano. if (x = y) {}
es valido por quex = y
es un booleano.- Una expresión
if
debe de tener unif
, peroelse
es opcional. if (false); else;
es valido por quefalse
es un booleano.
Seleccione 2
-
exports
-
uses
-
provides
-
implements
-
requires
Respuesta: 2 y 5
- La cláusula
uses
es usada para declarar que el módulo utiliza un servicio. - La clausula
requires
es usada para declarar que el módulo requiere de un módulo que define la interfaz del servicio.
Seleccione 2
- El método
length()
deString
es un método final - Puedes subclases mutables de
String
-
StringBuilder
extiende deString
-
StringBuilder
es final -
String
no es final
Respuesta: 1 y 4
- La clase
String
es final y todos sus métodos son final. - La clase
StringBuilder
es final y no puede tener sub clases.
Seleccione 3
-
Long x = Long.valueOf(100);
-
Integer i = 10;
-
Integer i() { return 10;}
-
Long i() { return 10;}
-
System.out.println(10 + "");
Respuesta: 2, 3 y 4
- La asignación de un valor primitivo a un objeto es auto boxing.
Long.valueOf(100)
no es auto boxing por que es una llamada a un método que regresa unLong
.- Cuando un operando es un
String
, el otro operando es convertido aString
.
Seleccione 3
-
+
-
++
-
+=
-
.
-
*
Respuesta: 1, 3 y 4.
- El operador
+
concatena unString
con otroString
o con un valor primitivo. - El operador
+=
sobrecarga a + y concatena unString
a unString
o a un valor primitivo. - El operador
.
accede a los miembros de unString
.
class MiStr extends String{
MiStr(String s){
super(s);
}
}
- El código compila y corre sin problemas
- El código no compila
Respuesta: 2 por que String
es final.
String
es final y no puede ser extendido.- Otras clases finales son
Integer
,Long
,Float
,Double
,Character
,Boolean
,Short
,Byte
,Void
,StringBuffer
,StringBuilder
,java.lang.System
Seleccione 5
-
isBlank()
-
isEmpty()
-
lines()
-
isNull()
-
strip()
-
indent()
Respuesta: 1, 2, 3, 5 y 6
isBlank()
regresatrue
si la cadena esta vacía o contiene solo espacios en blanco.isEmpty()
regresatrue
si la cadena esta vacía.lines()
regresa unStream
deString
que contiene las líneas de la cadena.strip()
regresa una cadena sin espacios en blanco al inicio o al final.indent()
regresa una cadena con cada línea indentada.isNull()
no es un método deString
.isBlank()
ystrip()
son métodos agregados en Java 11.lines()
yindent()
son métodos agregados en Java 12.
- Representa una función que regresa un int
- Evita el uso de auto boxing
- Extiende de
java.util.function.Function
- No puede ser parametrizado
Respuesta: 2
java.util.function.IntFunction
representa una función que toma unaint
como parámetro y regresa un objeto.- Ninguna de las interfaces funcionales para primitivos extiende de
java.util.function.Function
. - El tipo de parámetro de
java.util.function.IntFunction
esint
y no puede ser cambiado pero tipo de retorno si. - Evita el uso de auto boxing por que el tipo de parámetro es
int
y noInteger
. Para eliminar el costo de auto boxing, se pueden usar interfaces funcionales para primitivos como IntFunction. - Cuando se procesan streams de primitivos se deben de usar interfaces funcionales para primitivos para evitar el costo de auto boxing como IntStream, LongStream y DoubleStream. y las interfaces funcionales para primitivos como IntFunction, LongFunction y DoubleFunction.
Seleccione 2
-
--module -p
-
--module-path -p
-
--module-source-path -s
-
--module-source.path -m
-
--list-modules -l
-
--show-module-resolution -s
-
--module -m
Respuesta: 2 y 7
- Opciones aplicables para
java
yjavac
--module
o-m
especifica el modulo principal para compilar o ejecutar--module-path
o-p
especifica el path de los módulos.
- Opciones aplicables para
javac
--module-source-path
no tiene atajos y especifica el path de los módulos fuente
- Opciones aplicables para
java
--list-modules
o-l
lista los módulos disponibles--show-module-resolution
o-s
muestra la resolución de los módulos