certificación java 6 cap 4
TRANSCRIPT
![Page 1: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/1.jpg)
Capítulo 4 - Operadores
![Page 2: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/2.jpg)
Cubre el objetivo:
7.6 Write code that correctly applies the appropriate operators includingassignment operators (limited to: =, +=, -=), arithmetic operators (limited to:+, -, *, /, %, ++, --), relational operators (limited to: <, <=, >, >=, ==, !=), theinstanceof operator, logical operators (limited to: &, |, ^, !, &&, ||), and theconditional operator (? :), to produce a desired result. Write code thatdetermines the equality of two objects or two primitives.
![Page 3: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/3.jpg)
Aunque ya se vio la mayoría de las implicaciones de usar el signo = en el capítulo pasado, los puntos a destacar son:
Cuando se asigna un primitivo hay que tener en cuenta el tamaño, debe saber cuando el casteo debe ser implícito o explícito, y cuando ocurre un truncamiento de datos
Recuerde que una variable de referencia no es un objeto, y que el símbolo = no es lo mismo que un método get.
Cuando se asigna una variable de referencia importa el tamaño, es decir si el objeto pertenece a una clase padre, a una subclase, a una interface, o a un array.
![Page 4: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/4.jpg)
Existen operadores compuestos con el
símbolo igual, estos operadores sirven para
acortar las líneas de código.
y = y - 6; y -= 6;
x = x + 2 * 5; x += 2 * 5;
![Page 5: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/5.jpg)
Existen 6 operadores relacionales (<, <=, >, >=, ==, and !=). Y sirven para comparar variables.
El uso de estos operadores siempre dan como resultado un booleano, por lo tanto es muy común usarlo en las sentencias if.
Animal = unknown
Animal = elephant
Animal = gray elephant
Animal = gray elephant
The animal is a gray elephant
![Page 6: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/6.jpg)
A veces suele ponerse algo como esto
El if no tiene una comparación, es decir no se esta comparando si el valor de b es true o false, si no que se esta asignando a b true, este tipo de comparaciones siempre da true. Por lo tanto el código anterior resulta en “b is true”.
Otro punto que toca tener en cuenta es que los if siempre evalúan un boleano, por lo tanto esto arroja un error de compilación
Porque x es entero, y a asignarle a
x un 0 pues resulta un int, que no
es boolean y que el if no acepta
![Page 7: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/7.jpg)
Para comparar dos variables se usa el
simbolo == para definir si son iguales, o !=
para ver si son diferentes.
Con estos operadores se pueden analizar
números, caracteres, booleanos y variables
de referencia.
![Page 8: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/8.jpg)
Como puede ver, cuando un número punto
flotante es comparado con un entero y
tienen el mismo valor, la comparación ==
retorna true.
true
false
true
true
false
![Page 9: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/9.jpg)
En el caso de las variables de referencia, a excepción de los wrapper la igualdad se da cuando dos variables contienen el mismo objeto unicamente.
Hay que tener cuidado porque a veces uno tiende a ver el valor contenido en el objeto, y aunque el valor sea igual si son dos objetos distintos pues no existe igualdad.
False, porque a y
b apuntan a
diferentes objetos
True, porque a y c
apuntan al mismo
objeto
Exit Exit
a c b
![Page 10: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/10.jpg)
Los enums, al ser una colección de valores
constantes, pues no se manejan como los
objetos, aquí el comportamiento de la
igualdad (==) es el mismo que presenta el
método equals.
En este ejemplo tanto como == como equals dan true, porque
ambas variables contienen la misma constante del enum
==
Dot equals
![Page 11: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/11.jpg)
Por medio de esta sentencia se puede definir cuando
un objeto es de un tipo en particular. Es decir
verifica que la propiedad de IS A sea correcta.
El instanceof también tiene en cuenta la herencia,
por ejemplo, cuando se usa el instanceof contra la
clase padre, es true también.
Aquí se verifica que s sea
un String, como es correcto
entonces imprime
S is a String
![Page 12: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/12.jpg)
Incluso cuando el objeto que se esta
probando no es una instanciación correcta, el
instanceof arrojará true si el objeto del lado
izquierdo es compatible con el del lado
derecho.
A es compatible de b
Aunque a no hereda de b,
se imprime como true
porque son compatibles.
![Page 13: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/13.jpg)
Finalmente es legal usar un null para validar un instanceof de una clase, pero el resultado siempre es false.
No se puede usar un instanceof, para comparar dos objetos que se encuentran en diferentes líneas de herencia, en caso que se haga sale un error de compilación
En ambos casos se hace
una comparación con null,
por lo tanto el resultado es
False false
Arroja un error de
compilación porque perro
no hereda de gato
![Page 14: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/14.jpg)
Los operadores básicos son +, -, *, /.
El operador % es el residuo de la división
entre dos números.
El resultado de dividir 15
entre 5 es 4 y sobran 3,
entonces el valor de y es 3
![Page 15: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/15.jpg)
La concadenación de cadenas se hace con el
símbolo +.
El punto que toca tener en cuanta que
cuando se mezclan números y cadenas,
cuando se hace esto, todo se vuelve cadena,
y se unen los números no se suma.
Si se cambia la última línea por esto
Como a es una cadena, el
resultado es:
String37
B y c son int, por leyes de
parentecis se agrupan b y c
que da 10 y esto se une a la
cadena
String10
![Page 16: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/16.jpg)
El operador de incremento es ++, y el de
decremento es –-
Es importante tener en cuenta la posición en
que se encuentran, pues esto determina el
comportamiento que tendrá la instrucción.
Cuando el operador es un
posfijo, entonces ejecuto
la operación, en este caso
imprimir la variable y
después aumento en uno
Cuando el operador es un prefijo,
entonces aumento en uno, y luego
ejecuto la operación, en este caso
imprimir la variable
![Page 17: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/17.jpg)
Aquí y = 3, x = 2, comparo
si 3 es igual a 2, siendo
falso, y luego aumento x
en 1. Ahora x vale 3
Aquí x = 3, y = 3, primero aumento y en
1, y vale entonces 4, luego comparo si x
es menor que y, como 3 es menor que 4
entonces es verdadero y entra al if El resultado es
X = 3 y = 4
![Page 18: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/18.jpg)
Un operador condicional es una terna de
elementos que permiten evaluar expresiones
booleanas. La estructura de la sentencia es:
Por ejemplo:
x = (boolean expression) ? value to assign if true : value to assign if false
numOfPets = 3, como es
menor que 4, entra a “Pet
limit not exceeded” porque
es cierto
![Page 19: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/19.jpg)
Operadores && y ||
Los operadores && (y acortado) y || (o
acortado), sirven para comparar dos decisiones
en un if,
Se caracterizan porque valida la primera
expresión,
En caso de && si la primera condición es false
entonces no evalúa el resto de la expresión y no
entra en la sentencia.
En el caso de || valida la primera condición si es
true, entonces no evalúa el resto de la expresión
y entra en la sentencia.
![Page 20: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/20.jpg)
Operadores && y ||3 es menor que 5, imprime i<5, y
da como resultado true, y entra a
el cuerpo del if, imprimiedo
“Result is true”
Aquí no entra, porque al primero
ser true, este operador omite esta
sentencia
6 no es menor que 5,
imprime i>=5, y da como
resultado false
9 no es menor que 5, imprime
i>=5, y da como resultado false,
por lo tanto no entra a el cuerpo
del if
i < 5
Result is true
i >= 5
i >= 5
![Page 21: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/21.jpg)
Operadores | y &
Estos operadores funcionan parecidos a los de las
diapositivas anteriores, la diferencia es que estos
si analizan siempre todas las condiciones de la
expresión Aquí z me vale 5, aumento en 1 y
comparo, como 6 es mayor que 5
entonces es true, y entra sin evaluar
la otra expresión, quedando al final
z valiendo 7
Aquí z vale 5, aumento en 1 y
comparo, 6 es mayor que 5, pero el
operador me dice que debo analizar la
otra expresión, por lo tanto aumento
en 7, 7 también es mayor que 6, entro
a la expresión, y al final z vale 8
![Page 22: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/22.jpg)
Operador ^ (Xor)
El operador Xor, siempre evalúa ambos lados de
la expresión, y se caracteriza porque para que de
verdadero solo una expresión debe ser
verdadera.
true True
Ambos son verdaderos, por lo tanto el
resultado es:
xor false
![Page 23: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/23.jpg)
El operador !
Cuando se usa el operador !, automáticamente lo
que hace el sistema es retornar el valor
contrario, es decir si es verdadero pone falso, y
viceversa.
![Page 24: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/24.jpg)
![Page 25: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/25.jpg)
What is the result?
A. null
B. life
C. universe
D. everything
E. Compilation fails
F. An exception is thrown at runtime
![Page 26: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/26.jpg)
La respuesta correcta
es D
42 no es menor que 40, pot lo
tanto entra a evaluar la
expresión despues de los :
42 no es mayor que 50, por lo
tanto entra a evaluar la
expresión de los dos puntos
Al final el resultado de la sentencia es
“everything”
![Page 27: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/27.jpg)
Qué es cierto?
A. One of them will compile, only one will be true
B. Two of them will compile, only one will be true
C. Two of them will compile, two will be true
D. Three of them will compile, only one will be true
E. Three of them will compile, exactly two will be true
F. Three of them will compile, exactly three will be true
Y los siguientes fragamentos de código
F1. if(f1 == f2)
F2. if(f1 == f2[2][1])
F3. if(x == f2[0][0])
F4. if(f1 == f2[1,1])
F5. if(f3 == f2[2])
![Page 28: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/28.jpg)
De enunciado anterior podemos concluir De la opción F1 se puede decir que la sentencia
arroja un error de compilación, porque una variable no se puede comparar con un array.
De la función F2 se puede concluir que compila la sentencia, pero los valores 2.3 y 2.7 no son iguales, da falso.
De la función F3 se puede decir que la sentencia compila, y que al comparar el valor de x con la primitiva se maneja boxing y da igual.
De la función F4, se dice que no compila, no se puede acceder porque un array no se accede como f2[1,1] si no f2[1][1].
De la función F5, se puede decir que la sentencia compila, pero no da igual.
Por lo tanto podemos concluir que la respuesta correcta es D
![Page 29: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/29.jpg)
Y la ejecución se hace con la sentencia
java Fork live2
Cuál es el resultado?
A. test case
B. production live2
C. test case live2
D. Compilation fails
E. An exception is thrown at runtime
![Page 30: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/30.jpg)
La respuesta correcta es la E
Args en la posición 1 no existe, solo
la posición 0, el sistema arroja
una excepcion, llamada
ArrayIndexOutOfBoundsException
![Page 31: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/31.jpg)
What is the result?
A. 9 foo47 86foo
B. 9 foo47 4244foo
C. 9 foo425 86foo
D. 9 foo425 4244foo
E. 72 foo47 86foo
F. 72 foo47 4244foo
G. 72 foo425 86foo
H. 72 foo425 4244foo
I. Compilation fails
![Page 32: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/32.jpg)
El resultado es entonces la opción G
El resultado es 72 , porque el
primer carácter es un string
entonces se concadenan los
números
El resultado es foo425 , porque el
primer caracteres es un String,
entonces se concadenan los
números
El resultado 86Foo, los números se
suman, porque no hay string antes que
las variables numericas, y después se
asigna el String
![Page 33: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/33.jpg)
Complete el bloque con las palabras del
fragmento, para que el resultado de 33
![Page 34: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/34.jpg)
class Incr {
public static void main(String[] args) {
Integer x = 7;
int y = 2;
x _=*_ _x_;
y__ _=* _y_;
y__ _=* _y_;
x__ _=- _y_;
System.out.println(x);
}
}
![Page 35: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/35.jpg)
What is the result? (Choose all that apply.)
A. 1
B. 2
C. 4
D. 6
E. 8
F. Compilation fails
![Page 36: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/36.jpg)
El resultado es 4, la respuesta correcta es la C
Index vale 1, entonces tomo el
valor 1, y después lo aumento,
tomo el valor 2 y lo aimento otra
vez, queda al final la posición
[1][2]
Antes de iniciar el proceso,
asigno el valor en 1
![Page 37: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/37.jpg)
What is the result?
A. same old
B. newly new
C. Compilation fails due to multiple errors
D. Compilation fails due only to an error on line 7
E. Compilation fails due only to an error on line 8
F. Compilation fails due only to an error on line 11
G. Compilation fails due only to an error on line 13
![Page 38: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/38.jpg)
La ejecución del proceso, no presenta ningún error de compilación, la sentencia for recorre los valores de el enum, por lo tanto la secuencia asigna los valores a la variable d2, con M, T, W y TH, no sigue más porque el ciclo llega a F termina. Como son iguales impime same old, la respuesta es A
![Page 39: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/39.jpg)
Which are true? (Choose all that apply.)
A. Compilation fails
B. x will be included in the output
C. y will be included in the output
D. z will be included in the output
E. An exception is thrown at runtime
![Page 40: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/40.jpg)
La compilación no falla, ni arroja excepción,
la sentencia incluye a y únicamente. La
respuesta correcta es C
B = false, no es error de compilación, porque b
es un boleano, pero el resultado es falso, el
módulo de 21 y 5 es 1, y es falso también
entonces no imprime x
B1 es true, entonces entra e
imprime yB2 es falso, porqie en la primero
pregunta le asigne a b2 falso
![Page 41: Certificación java 6 cap 4](https://reader030.vdocument.in/reader030/viewer/2022032715/55ae5b191a28abe47d8b45cd/html5/thumbnails/41.jpg)
Which two answers are true about the value of mask and the value of count at line 10? (Choose two.)
A. mask is 0
B. mask is 1
C. mask is 2
D. mask is 10
E. mask is greater than 10
F. count is 0
G. count is greater than 0