b3t6 - LAB Java básico Flashcards

1
Q

Modificadores de acceso
Cuál es la diferencia entre la visibilidad “default” y la protected?

A

En la visibilidad default no se tiene visibilidad desde una subclase que esté en distinto paquete, mientras que protected da visibilidad a todas las clases hijas aunque no estén en el mismo paquete

Mismo paquete significa mismo paquete, no incluye subpaquetes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Al definir clases genéricas tipo List< T>, se puede definir que el tipo tenga que heredar de otro. Cómo?

Al usarlas, por defecto no se puede usar un objeto genérico como si fuese del tipo padre del tipo de ese objeto genérico, para eso se usa los wildcards, como?

A

Public class NaturalNumber < T extends Integer>

Wildcards -> Por ejemplo un objeto lista de tipo List < Integer> no puede recoger una lista List < Number> , aunque Integer es hija de Number
Para ello hay que declarar las listas de otra forma, con el wildcard “?” ->

List < ? extends Integer> listaInteger = new ArrayList()
List < ? extends Number> listaNumber = listaInteger;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Qué es característico del tipo String en Java?

A

Es inmutable, una vez creada no se puede modificar
Además son únicas, si se crean dos variables con cadenas iguales, en realidad las dos apuntan a la misma cadena en memoria, no se crean dos cadenas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qué métodos de la clase String usarías para:

obtener la longitud de una cadena
obtener una subcadena con los primeros 10 caracteres
En qué índice del string dado comienza una subcadena de caracteres determinada, buscando a partir de una posición determinada
Obtener el caracter que está en una posición dada del string
Reemplazar todos los caracteres x por y
Convertir a un array de caracteres
Eliminar espacios en blanco de más al inicio y al final
Devolver un array de bytes
Que cumple una expresión regular
Convertir un entero a String
Convertir todo a mayúsculas
Concatenar dos cadenas en otra

A

System.out.println(cad1.length());
System.out.println(cad1.substring(0, 10));
System.out.println(cad1.indexOf(“pais”, 1));
System.out.println(cad1.charAt(0));
System.out.println(cad1.replaceAll(“u”, “U”));
System.out.println(cad1.toCharArray()); // devuevel char[]
System.out.println(cad1.trim()); // elimina espacios en blanco de mas al inicio y al final
System.out.println(cad1.getBytes()); // devuelve byte[]
System.out.println(cad1.matches(“[a-z A-Z]+”)); // true
System.out.println(String.valueOf(50)); // convierte un entero al String “50”
System.out.println(cad1.toUpperCase()); // todo a mayusculas
String cad2 = cad1 + “ habia”; // concatenacion (no modifica cad1)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Indica dos objetos que son cadenas variables, una thread-safe y otar no thread-safe
¿Qué métodos de estas clases usarías para introducir caracteres a la cadena?

A

String-Buffer (thread-safe)
String-Builder

s1.insert(2,”aaa”).append(“bbb”)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Las clases java heredan de Object. Es necesario especificarlo poniendo el extends Object?

A

No es necesario

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Cómo se crea un constructor para una clase?

A

Un método public que se llama con la clase y que no se especifica que devuelva nada, ni void.
Si no se crea ninguno, el sistema crea uno por defecto.

Public Factura(Date fechaFactura, int idFactura){
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Qué métodos que todas las clases heredan de Objet usarías para:

Obtener el código hash que identifica al objeto
wait() -> pdte rellenar
notify() -> pdte rellenar
notifyAll() -> pdte rellenar
Obtener la clase del objeto -> Class
clonar el objeto

A

hashCode(), wait(), notify(), notifyAll(), getClass() y clone()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Qué método de Object sobreescribirías en tu clase para modificar el string que se pintaría al hacer un System.out.println(p1) de su objeto?

A

public String toString()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Qué método de Object sobreescribirías en tu clase para realizar alguna acción antes de que el GC elimine uno de sus objetos?

A

protected void finalize() throws Trhowable{}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Qué método de Object sobreescribirías en tu clase para comparar dos de sus objetos?

A

public boolean equals(Object obj){}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Qué tags incluirías en el comentario JavaDoc de tu clase para indicar el autor, y la versión?
Y en los métodos para documentar los parámetros y lo que devuelven?

A

Clase -> @author, @version
Método -> @param, @return

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

El identificador de una clase, método, variable, … por qué caracteres pueden comenzar?

A

Por una letra, guion bajo “_” o dólar “$”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Indica el nº de bits de los tipos primitivos
float
double
char
byte
int
short
long

A

float (32bit precision simple IEEE 754)
double (64bit precision doble IEEE 754)
boolean
char (16bit UNICODE)
byte (8bit con signo)
int(32bit con signo)
short(16 bit con signo)
long(64 bit con signo)

int dato1=10;
char letra=’a’;
float dato2=123.3f;
double dato3=1.234e2; // notacion cientifica
long creditCardNumber = 1234_5678_90123456L; // a partir de Java7 se puede usar “” para mejorar la legibilidad

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Cómo son los operadores aritméticos en java
suma
resta
división entera
multiplicación
resto

A

, - , + , / (division entera), *, % (resto)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Qué diferencia hay entre ++variable y variable++?

A

++variable(incremento en +1, previo a usar la variable),variable++(incremento en +1, posterior a usar la variable)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Cómo harías en java para en una línea con un operador lógico sumarle a una variable un número a su propio valor?

A

variable+=valor

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Operadores de comparación en java
igual
distinto
mayor
menor
mayor o igual
menor o igual

A

// ==, != (distinto), “<”, “>”, “<=”, “>=”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Operadores lógicos de bit
// ~ (complemento), | (or binario), ^ (xor binario), & (and binario)

A

xor es que es true si uno y sólo una de las expresiones es true

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Operadores lógicos o booleanos
// ! (not logico), || (or logico cortociruito), && (and logico)

A
21
Q

Cómo se hace un if en línea?

A

?: (if en linea)

booleanExpression ? expression1 : expression2

22
Q

Cómo se comprueba en java si un objeto es compatible con cierto tipo?

A

/ check si un objeto es compatible con un cierto tipo (instanceof))
String cad = “Hello”;
if(cad instanceof String) System.out.println(“String compatible!!”);
if(cad instanceof CharSequence) System.out.println(“CharSequence compatible!!”);
if(cad instanceof Object) System.out.println(“Object compatible!!”);

23
Q

Es obligatorio poner siempre las llaves en las sentencias if/else?

A

// Las llaves de bloque no son necesarias si solo hay una sentencia
if(a>b)
System.out.println(“a mayor que b”);
else
System.out.println(“b mayor que a”);

24
Q

En los bucles for, qué hace la palabra reservada continue?

A

// inicio –> solo se ejecuta una vez antes de empezar las iteraciones
// comparacion –> expresion que se evalua al inicio de cada vuelta (si da false termina el bucle)
// incremento –> se ejecuta despues de cada iteración (incremento positivo o negativo)

for(int i=0;i<10;i++) {
if(i % 2 == 0) continue; // continue termina que la iteracion actual y provoca que empiece la siguiente
System.out.println(“Valor de i “ + i);
}

25
Q

Cuál es el formato de los condicionales switch en java?

A

switch (month) {
case 1: monthString = “January”;
break;
case 2: monthString = “February”;
break;
}

26
Q

Cómo es el formato de los bucles while en java?

A

while (count < 11) {
if (count == 6) break; // break provoca que nos salgamos completamente del while
System.out.println(“Count is: “ + count);
count++;
}

27
Q

Cómo es el formato de los bucles do while en java?

A

do {
System.out.println(“Count is: “ + count);
count++;
} while (count < 11);

28
Q

Cómo crearías un array primitivo de enteros vacío de 5 posiciones?
Y uno ya inicializado con 5 valores?

A

int[] datos1 = new int[5];
int[] datos2 = {3,4,1,2,10};

29
Q

Cómo sería en java un for que recorra un array, y tenga disponible en cada vuelta una posición del array hasta que termine el array?

A

variable para el elemento, dos puntos, array

for (int dato : datos1) {
System.out.println(dato);
}

30
Q

Cómo es la jerarquía de interfaces y clases de las colecciones en java?

A
31
Q

Indica qué métodos importantes tienen las siguientes Interfaces/Clases

Iterable
Collection
List
Set
Queue
Dequeue

A
  • Iterable –> iterator()
  • Collection –> add(E), size(), toArray(), clear(), contains(obj), stream(), isEmpty()
  • List –> add(index,E),set(index,E),get(index),remove(index),indexOf(obj),subList(index,index),sort(Comparator)
  • Set –> nada significativo
  • Queue –> add(E), element() consulta la cabeza, peek() es un element() mejorado, offer(E) es un add(E) mejorado, poll() retorna y elimina la cabeza
  • Deque –> addFirst(E),addLast(E),peekFirst(),peekLast(),poolFirst(),poolLast(), etc
32
Q

Si en la condición de un bucle for queremos acceder al tamaño de un array y en otro a la de un ArrayList, cómo sería en cada caso?

A

array1.length
arrayList1.size()

33
Q

En los bucles con iterators, cómo se pregutna si se debe seguir recorriendo el iterator?
Dentro del bucle, cómo se obtiene cada elemento del iterator?

A

while(it.hasNext()) {
int dato = it.next();
System.out.println(“Dato: “ + dato);
}

34
Q

Con qué métodos de HashMap se extraería un Set< integer> con las claves? Y una Collection< String> con los valores?

A

.keySet()
.vaules()

35
Q

Cómo haríamos en java para convertir una cadena a una fecha? (parse)
Y para convertir una fecha Date en otra pero con otro formato? (format)

A
  1. Crear un formato de fecha con SimpleDateFormat, pasándole un string con el patrón del formato
  2. Generar un Date a partir del SimpleDateFormat, con su método .parse() pasándole la fecha en el formato indicado anteriormente

// Convertir cadena –> fecha
String pattern = “yyyy-MM-dd hh:mm”;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);

Date fecha1 = **simpleDateFormat.parse**("2020-09-10 11:00");
System.out.println("Fecha en long: " + fecha1.**getTime**());


//Formatear un Date 
simpleDateFormat.**format (date1)**;
36
Q

Cómo obtener la fecha actual con Calendar?

A

Crear un objeto de Calendar. Hacerle un .getTime(), devuelve Date

37
Q

Clases y métodos importantes de la nueva java.time, que sustituye a java.util.Date y java.util.Calendar

Qué son y cómo se crean / usan?

LocalDateTime
LocalDate
Instant
DateTimeFormatter
Duration
Period

A

LocalDateTime -> Almacena fechas y hora. Se crea con LocalDateTime.of(2020, Month.AUGUST, 31, 10, 20, 55);
LocalDate -> Almacena fechas. Se le puede llamar al método estático LocalDate.now() para obtener la fecha actual
Instant -> Representa un momento en el tiempo, con precisión nanosegundos. Se le puede llamar al método estático Instant.now() para crear uno con el momento actual
DateTimeFormatter -> formateador del tipo SimpleDateFormat antiguo. Con el método estático .ofPattern(“formato”) se crea. Se les puede pasar a los LocalDate al método .format(dateTimeFormatter), para formatearlos.
Duration -> intervalo de tiempo entre dos LocalDateTime, orientado a nanosegudos o segundos -> Duration.between(inicioDateTime,finDateTime);
Period -> Intervalo de tiempo entre dos LocalDate -> orientado a días, meses o años ->
Period periodo = Period.between(inicioDate, finDate);

38
Q

En java cómo declaramos una anotación?
Al declararla, qué significan las anotaciones @Retention y @Target?

A

Con @interface

@Retention(RUNTIME) // Esta anotacion estará disponible (por reflexion) en el bytecode de la clase (en memoria)
@Target(METHOD) // Nos indica que solo podemos usar esta anotacion sobre un metodo
public @interface Seguridad {
public String rol();
}

39
Q

Static en java:

  1. Se puede importar un método estático en una clase?
  2. Un método estático (de clase) puede acceder a un atributo no estático (de objeto) de una clase?
A
  1. Sí, con la palabra static e indicando el método de la clase -> import static es.tai.estaticos.Util.metodoEstatico;
  2. No, porque para acceder a un atributo no estático hay que tener un objeto. No hay .this sin objeto.
40
Q

Diferencia entre sobreescribir y sobrecargar un método

A

Sobreescribir implementar un método en la clase hija de igual nombre y número y tipo de atributos que el del padre. Se pone @Override en la hija para indicar que estamos sobreescribiendo.
Al sobreescribir se pued hacer una sustitución (sobreescritura total) o una ampliación (llamar dentro al super.metodo())

Sobrecargar es implementar un método en la clase hija de igual nombre, pero de distinto nº o tipo de parámetros.

41
Q

Si una clase hereda de una clase abstracta, qué hay que hacer para no declararla abstracta?

A

Implementar todos los métodos abstractos de la clase padre

42
Q

Se pueden implementar métodos en una interfaz, o sólo declarar?

A

Ahora se pueden implementar también, con el modificador default, a partir de java 8

public default void h() {
System.out.println(“f() de Clonable”);
}

43
Q

Cuando se implementan interfaces es una clase, cómo se puede referenciar a un método default de la interfaz/es?

A

Como si fuese a la clase padre, pero indicando la interfaz (por si hay varias)

Clonable.super.h();
Cerrable.super.h();

44
Q

Qué dos formas hay en java de crear y arrancar hilos?

A
  1. Crear una clase que herede de Thread, y sobreescribir el método run(). Esto hace que los objetos de esta clase nuestra ya sean hilos. Cuando al hilo le hagamos .start() se pondrá a la cola del planificador
  2. Crear una clase que implemente Runnable y sobreescribir el método run(). Para crear un hilo tenemos que hacer un Thread hilo = Thread.newThread(objetoDeNuestraClaseRunnable). Al hilo ya le podemos hacer .start() para ponerlo en el planificador.
45
Q

Qué se hará en una clase que haga de monitor para controlar el acceso de hilos a un recurso compartido?

A

Declarará los métodos como synchronized para que solo puedan ir de uno en uno dentro de ese método
Los parará y reanudará con wait() y notify()

46
Q

Qué dos tipos de excepciones podemos declarar?
Qué diferencias hay entre ellas?

A

Checked -> public class ValidacionException extends Exception{}

Unchecked -> public class BBDDExcepcion extends RuntimeException{}

Las checked es obligatorio tratarlas, las unchecked no

47
Q

Cómo se hace para ejecutar un código que abre recursos y que estos sean cerrados al terminar el try?

A

// La nueva sentencia try-with-resources libera automaticamente el recurso “writer” llamando a su metodo close()
// Para que esto funcione el objeto tiene que pertenecer a una clase que implemente el interface Autocloseable
try (PrintWriter writer = new PrintWriter(new File(“test.txt”))) {
writer.println(“Hello World”);
} catch (FileNotFoundException e) {
e.printStackTrace();
}

48
Q

El identificador de una clase, método, variable, … por qué caracteres pueden comenzar?

A

Por una letra, guion bajo “_” o dólar “$”