Certificación java 6 cap 4

41
Capítulo 4 - Operadores

Transcript of Certificación java 6 cap 4

Page 1: Certificación java 6 cap 4

Capítulo 4 - Operadores

Page 2: Certificación java 6 cap 4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
Page 25: Certificación java 6 cap 4

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

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

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

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

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

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

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

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

Complete el bloque con las palabras del

fragmento, para que el resultado de 33

Page 34: Certificación java 6 cap 4

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

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

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

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

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

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

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

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