b3t6 - LAB Java básico Flashcards
Modificadores de acceso
Cuál es la diferencia entre la visibilidad “default” y la protected?
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
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?
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;
Qué es característico del tipo String en Java?
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.
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
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)
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?
String-Buffer (thread-safe)
String-Builder
s1.insert(2,”aaa”).append(“bbb”)
Las clases java heredan de Object. Es necesario especificarlo poniendo el extends Object?
No es necesario
Cómo se crea un constructor para una clase?
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){
}
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
hashCode(), wait(), notify(), notifyAll(), getClass() y clone()
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?
public String toString()
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?
protected void finalize() throws Trhowable{}
Qué método de Object sobreescribirías en tu clase para comparar dos de sus objetos?
public boolean equals(Object obj){}
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?
Clase -> @author, @version
Método -> @param, @return
El identificador de una clase, método, variable, … por qué caracteres pueden comenzar?
Y en javascript, php y phyton?
Por una letra, guion bajo “_” o dólar “$”
Por comparar
En javascript es igual, pero también puede comenzar por por número
En PHP debe empezar por $, y luego cualquier letra o guión bajo _
En Phyton debe empezar por letra o guión bajo _
El identificador de una clase, método, variable, … por qué caracteres pueden comenzar?
Por una letra, guion bajo “_” o dólar “$”
Indica el nº de bits de los tipos primitivos
float
double
char
byte
int
short
long
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
Cómo son los operadores aritméticos en java
suma
resta
división entera
multiplicación
resto
, - , + , / (division entera), *, % (resto)
Qué diferencia hay entre ++variable y variable++?
++variable(incremento en +1, previo a usar la variable),variable++(incremento en +1, posterior a usar la variable)
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?
variable+=valor
Operadores de comparación en java
igual
distinto
mayor
menor
mayor o igual
menor o igual
// ==, != (distinto), “<”, “>”, “<=”, “>=”
Operadores lógicos de bit
// (negación o complemento), (or binario), (xor binario), (and binario)
AND
El operador de bit AND lo que hace es multiplicar los bits de las dos cadenas. Las multiplicaciones de bits dan como resultado que 1 x 1 siempre es 1 y que 1 x 0 y 0 x 0 siempre da 0. El tamaño de la cadena resultado siempre es el mismo al tamaño de las cadenas.
Así de la siguiente operación:
0101 & 0011
Tendremos que el resultado es:
0101 AND (decimal 5)
0011 (decimal 3)
——–
0001 (decimal 1)
OR
En el caso del OR inclusivo (operador ) lo que se hace es multiplicar los bits asumiendo que 1 multiplicado por 1 o por 0, siempre es 1. Mientras que la única multiplicación que da 0 es 0 x 0.
Así la operación:
(0101) | (0011)
Dará como resultado:
0101 OR (decimal 5)
0011 (decimal 3)
——–
0111 (decimal 7)
XOR
Para el caso del OR exclusivo (operador ^) conocido como XOR. La multiplicación de bits será 1 para los casos 1 x 0 y 0 x 1. Las multiplicaciones 1 x 1 y 0 x 0 siempre darán como resultado 0.
De esta forma si tenemos la operación:
(0101) ^ (0011)
El resultado que encontraremos será:
0101 XOR (decimal 5)
0011 (decimal 3)
——–
0110 (decimal 6)
Operador NOT o ~
El operador de negación de bits nos permite invertir el contenido de bits de una cadena. De tal manera que invierte los bits convirtiendo los 1 en 0 y los 0 en 1.
En este caso la estructura será:
~ (valor)
Así podríamos tener la sentencia:
~ (0111)
La cual se traduciría en:
1000 (decimal 8)