SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
Operadores

Raphael Marques
Objetivo
• Operadores de atribuição:
     =, +=, -=, *=, /=
• Operadores aritméticos:
     +, -, *, /, %, ++, --
• Operadores relacionais:
     <, <=, >, >=, ==, !=
• Operador instanfeof
• Operadores lógicos:
     &, |, ^, !, &&, ||
• Operador condicional:
     ?:
Objetivo
• Não é assunto da prova:
  – Operadores de deslocamento de bits
  – Operadores binários (bit-a-bit)
  – Complemento de 2
  – Divisão por zero
Operador de atribuição

• Para números, o tamanho importa.
  int x = 5f;         ERRO
  byte b = 500;       ERRO


• Para referências, o “tipo” importa.
  Integer y = “5”;    ERRO
Operador de atribuição
boolean b = false;
  if(b = true)
      System.out.println(quot;SIMquot;);
  else
      System.out.println(quot;NAOquot;);

Qual a saída?
Operador de atribuição
boolean b = false;
  if(b = true)
      System.out.println(quot;SIMquot;);
  else
      System.out.println(quot;NAOquot;);

Qual a saída?   →    quot;SIMquot;
Operador de atribuição
int x = 0;
  if(x = 1)
       System.out.println(quot;SIMquot;);
  else
       System.out.println(quot;NAOquot;);

Qual a saída?
Operador de atribuição
int x = 0;
  if(x = 1)      → ILEGAL
       System.out.println(quot;SIMquot;);
  else
       System.out.println(quot;NAOquot;);

Qual a saída?
Operadores de atribuição compostos

       +=          -=          *=   /=

•   x += 5;   →   x = x + 5;
•   x -= 5;   →   x = x - 5;
•   x *= 5;   →   x = x * 5;
•   x /= 5;   →   x = x / 5;
Operadores de atribuição compostos
• Atualmente a prova não cobra muita
  precedência de operadores!
  x = y++ + ++x/z;


• Em alguns casos sim:
  x *= 2 + 5;        →   x = x * 2 + 5;
Operadores de atribuição compostos
• Atualmente a prova não cobra muito
  precedência de operadores!
  x = y++ + ++x/z;


• Em alguns casos sim:
  x *= 2 + 5;        →   x = x * 2 + 5;     ERRADO
  x *= 2 + 5;        →   x = x * (2 + 5);   CERTO
Operadores relacionais

    <         <=        >        >=     ==   !=

• Retornam sempre um valor booleano.

• <, <=, >, >=
   – apenas tipos numéricos

• ==, !=
   – todos tipos inclusive referência
Operadores de igualdade

                 ==     !=

• Comparam números, booleanos e referências

• Os operandos devem ser compatíveis
Operadores de igualdade
if(false == 'a'){}          ILEGAL

if(65 == 'A'){}             LEGAL

if(1 == quot;Aquot;){}              ILEGAL

if(1 == new Integer(1)){}   LEGAL
Operadores de igualdade
JButton a = new JButton(quot;Exitquot;);
JButton b = new JButton(quot;Exitquot;);
JButton c = a;
System.out.println(a == b);
System.out.println(a == c);

Qual a saída?
Operadores de igualdade
JButton a = new JButton(quot;Exitquot;);
JButton b = new JButton(quot;Exitquot;);
JButton c = a;
System.out.println(a == b);      →   false
System.out.println(a == c);      →   true

Qual a saída?
Operadores de igualdade
Integer a = 10;
Integer b = 10;

System.out.println(a==b);

Qual a saída?
Operadores de igualdade
Integer a = 10;
Integer b = 10;

System.out.println(a==b);   →   true

Qual a saída?
Operadores de igualdade
Integer a = new Integer(10);
Integer b = new Integer(10);

System.out.println(a==b);      →   false

Qual a saída?
Operadores de igualdade
Integer a = new Integer(5) + 5;
Integer b = 10;

System.out.println(a==b);         →   true

Qual a saída?
Operadores de igualdade
enum Color {RED,GREEN,BLUE}
...
Color a = Color.RED;
Color b = Color.RED:

System.out.println(a==b);

Qual a saída?
Operadores de igualdade
enum Color {RED,GREEN,BLUE}
...
Color a = Color.RED;
Color b = Color.RED:

System.out.println(a==b); →   true

Qual a saída?
Operador instanceof
• Verifica se o OBJETO referenciado pelo lado
  esquerdo “É UM” objeto do tipo do lado
  direito.
• Utilizado apenas com referências
• Retorna um booleano
• Ex: referencia instanceof Tipo
Operador instanceof
class Animal { }
class Baleia extends Animal { }
...
Animal a = new Animal();
Baleia b = new Baleia();
Object c = new Baleia();
...
System.out.println(a instanceof Animal); →   true
System.out.println(a instanceof Baleia); →   false
Operador instanceof
class Animal { }
class Baleia extends Animal { }
...
Animal a = new Animal();
Baleia b = new Baleia();
Object c = new Baleia();
...
System.out.println(b instanceof Animal); →   true
System.out.println(b instanceof Baleia); →   true
Operador instanceof
class Animal { }
class Baleia extends Animal { }
...
Animal a = new Animal();
Baleia b = new Baleia();
Object c = new Baleia();
...
System.out.println(c instanceof Animal); →   true
System.out.println(c instanceof Baleia); →   true
Operador instanceof
class A { }
...
A a = new A();
...
...println(“x” instanceof A);          ILEGAL
...println(a instanceof Object);       SEMPRE TRUE
...println(array instanceof Object);   SEMPRE TRUE
...println(null instanceof A);         SEMPRE FALSE
Operador instanceof
interface Animal { }
class Manifero implements Animal { }
class Baleia extends Mamifero { }
...
Baleia b = new Baleia();
...println(b instanceof Animal); → true
Operadores aritméticos
•   +   adição
•   -   subtração
•   *   multiplicação
•   /   divisão
•   %   resto
    ...println(17 % 5);     →   2
    ...println(17.0 % 5.0); →   2.0
Operadores aritméticos


int a = 8;
int b = 6;

int c = a + b;
Operadores aritméticos


short a = 8;
short b = 6;

short c = a + b; →   ILEGAL
Operadores aritméticos


short a = 8;
short b = 6;

short c = a;
c += b;        →   LEGAL
Concatenação de Strings
5 + 4 + “x”            →   “9x” ERRO???

5 + (4 + “x”)          →   “54x”

“x” + 5 + 4            →   “x54” ERRO???

“x” + (5 + 4)          →   “x9”

String s = “alguma”;
s += “coisa”;              →       “algumacoisa”
Incremento e Decremento
int x = 5;
...println(x++);   →   5
...println(x);     →   6
...println(++x);   →   7
...println(x);     →   7

...println(x--);   →   7
...println(x);     →   6
Operador condicional
hora < 12 ? quot;Mquot; : quot;Tquot;

(hora < 12) ? quot;Mquot; : quot;Tquot;

hora < 12 ? quot;Mquot; : hora < 18 ? quot;Tquot; : quot;N“

hora > 12 ? hora < 18 ? quot;Tquot; : quot;Nquot; : quot;M”
Operador condicional
hora < 12 ? quot;Mquot; : quot;Tquot;

(hora < 12) ? quot;Mquot; : quot;Tquot;

hora < 12 ? quot;Mquot; : hora < 18 ? quot;Tquot; : quot;Nquot;

hora > 12 ? hora < 18 ? quot;Tquot; : quot;Nquot; : quot;Mquot;
Operadores lógicos

          &    |    ^     !   &&    ||

• Operandos são expressões booleanas

• O resultado é um booleano

• Na prova não cai operadores binários!!!
Operadores lógicos
• Operadores com curto-circuito
  – && e ||


• Dependendo do valor do 1º operando, o
  segundo operando pode não ser avaliado
  if( true || ?????? ){}
  if( false && ??????){}
Operadores lógicos
• Operadores sem curto-circuito
  –&e|


• Os dois operando sempre serão avaliados
Operadores lógicos
• XOR (OU exclusivo)        ^
  – Retorna true se APENAS um operando é true
  – Os dois operandos sempre são avaliados


• Negação        !
  true → false
  false → true
THE END

Contenu connexe

Similaire à Operadores

[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais)
[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais) [Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais)
[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais) Loiane Groner
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação WebDalton Martins
 
Introdução ao JS1.pptx
Introdução ao JS1.pptxIntrodução ao JS1.pptx
Introdução ao JS1.pptxLuanDev1
 
Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosRegis Magalhães
 
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...André Constantino da Silva
 
Introdução Programação Em Maple
Introdução Programação Em MapleIntrodução Programação Em Maple
Introdução Programação Em Maplejeandson correa
 
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisLabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisCarlos Santos
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Willian Magalhães
 
Aula de apresentação Python explicando conceitos e aplicações.
Aula de apresentação Python explicando conceitos e aplicações.Aula de apresentação Python explicando conceitos e aplicações.
Aula de apresentação Python explicando conceitos e aplicações.merciaregina6
 
Mini Curso de Python para Coding Dojo
Mini Curso de Python para Coding DojoMini Curso de Python para Coding Dojo
Mini Curso de Python para Coding DojoFabricio NErdmann
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando CVinícius Hax
 

Similaire à Operadores (20)

Algoritmos Aula 05
Algoritmos Aula 05Algoritmos Aula 05
Algoritmos Aula 05
 
04 algoritmo
04   algoritmo04   algoritmo
04 algoritmo
 
[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais)
[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais) [Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais)
[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais)
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação Web
 
AULA-02.pdf
AULA-02.pdfAULA-02.pdf
AULA-02.pdf
 
Introdução ao JS1.pptx
Introdução ao JS1.pptxIntrodução ao JS1.pptx
Introdução ao JS1.pptx
 
Introducao logica
Introducao logicaIntroducao logica
Introducao logica
 
Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros Passos
 
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
 
Introdução Programação Em Maple
Introdução Programação Em MapleIntrodução Programação Em Maple
Introdução Programação Em Maple
 
Aula 2
Aula 2Aula 2
Aula 2
 
Visualg
VisualgVisualg
Visualg
 
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisLabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 
Aula de apresentação Python explicando conceitos e aplicações.
Aula de apresentação Python explicando conceitos e aplicações.Aula de apresentação Python explicando conceitos e aplicações.
Aula de apresentação Python explicando conceitos e aplicações.
 
Mini Curso de Python para Coding Dojo
Mini Curso de Python para Coding DojoMini Curso de Python para Coding Dojo
Mini Curso de Python para Coding Dojo
 
Java script aula 02 - operadores
Java script   aula 02 - operadoresJava script   aula 02 - operadores
Java script aula 02 - operadores
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 

Plus de Elenilson Vieira (20)

Aulão de JPA com Tomaz Lavieri
Aulão de JPA com Tomaz LavieriAulão de JPA com Tomaz Lavieri
Aulão de JPA com Tomaz Lavieri
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
JavaEE
JavaEEJavaEE
JavaEE
 
JavaME no Mercado Mobile
JavaME no Mercado MobileJavaME no Mercado Mobile
JavaME no Mercado Mobile
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
Apresentação da Doom
Apresentação da DoomApresentação da Doom
Apresentação da Doom
 
Palestra sobre a Sun
Palestra sobre a SunPalestra sobre a Sun
Palestra sobre a Sun
 
Apresentação da RedeSoft
Apresentação da RedeSoftApresentação da RedeSoft
Apresentação da RedeSoft
 
Java Collections - Tomaz Lavieri
Java Collections - Tomaz LavieriJava Collections - Tomaz Lavieri
Java Collections - Tomaz Lavieri
 
A Sun no Meio Acadêmico - IESP/FatecPB
A Sun no Meio Acadêmico - IESP/FatecPBA Sun no Meio Acadêmico - IESP/FatecPB
A Sun no Meio Acadêmico - IESP/FatecPB
 
Mini-Curso de Sockets no Unipê
Mini-Curso de Sockets no UnipêMini-Curso de Sockets no Unipê
Mini-Curso de Sockets no Unipê
 
JavaME
JavaMEJavaME
JavaME
 
Concorrência com Java
Concorrência com JavaConcorrência com Java
Concorrência com Java
 
Programas Acadêmicos da Sun no Unipê
Programas Acadêmicos da Sun no UnipêProgramas Acadêmicos da Sun no Unipê
Programas Acadêmicos da Sun no Unipê
 
Mundo Livre e Aberto
Mundo Livre e AbertoMundo Livre e Aberto
Mundo Livre e Aberto
 
JavaME - Aula 2
JavaME - Aula 2JavaME - Aula 2
JavaME - Aula 2
 
JavaME - Aula 1
JavaME - Aula 1JavaME - Aula 1
JavaME - Aula 1
 
Apostila JavaME
Apostila JavaMEApostila JavaME
Apostila JavaME
 
Threads
ThreadsThreads
Threads
 
Sincronização - Glêdson Elias
Sincronização - Glêdson EliasSincronização - Glêdson Elias
Sincronização - Glêdson Elias
 

Operadores

  • 2. Objetivo • Operadores de atribuição: =, +=, -=, *=, /= • Operadores aritméticos: +, -, *, /, %, ++, -- • Operadores relacionais: <, <=, >, >=, ==, != • Operador instanfeof • Operadores lógicos: &, |, ^, !, &&, || • Operador condicional: ?:
  • 3. Objetivo • Não é assunto da prova: – Operadores de deslocamento de bits – Operadores binários (bit-a-bit) – Complemento de 2 – Divisão por zero
  • 4. Operador de atribuição • Para números, o tamanho importa. int x = 5f; ERRO byte b = 500; ERRO • Para referências, o “tipo” importa. Integer y = “5”; ERRO
  • 5. Operador de atribuição boolean b = false; if(b = true) System.out.println(quot;SIMquot;); else System.out.println(quot;NAOquot;); Qual a saída?
  • 6. Operador de atribuição boolean b = false; if(b = true) System.out.println(quot;SIMquot;); else System.out.println(quot;NAOquot;); Qual a saída? → quot;SIMquot;
  • 7. Operador de atribuição int x = 0; if(x = 1) System.out.println(quot;SIMquot;); else System.out.println(quot;NAOquot;); Qual a saída?
  • 8. Operador de atribuição int x = 0; if(x = 1) → ILEGAL System.out.println(quot;SIMquot;); else System.out.println(quot;NAOquot;); Qual a saída?
  • 9. Operadores de atribuição compostos += -= *= /= • x += 5; → x = x + 5; • x -= 5; → x = x - 5; • x *= 5; → x = x * 5; • x /= 5; → x = x / 5;
  • 10. Operadores de atribuição compostos • Atualmente a prova não cobra muita precedência de operadores! x = y++ + ++x/z; • Em alguns casos sim: x *= 2 + 5; → x = x * 2 + 5;
  • 11. Operadores de atribuição compostos • Atualmente a prova não cobra muito precedência de operadores! x = y++ + ++x/z; • Em alguns casos sim: x *= 2 + 5; → x = x * 2 + 5; ERRADO x *= 2 + 5; → x = x * (2 + 5); CERTO
  • 12. Operadores relacionais < <= > >= == != • Retornam sempre um valor booleano. • <, <=, >, >= – apenas tipos numéricos • ==, != – todos tipos inclusive referência
  • 13. Operadores de igualdade == != • Comparam números, booleanos e referências • Os operandos devem ser compatíveis
  • 14. Operadores de igualdade if(false == 'a'){} ILEGAL if(65 == 'A'){} LEGAL if(1 == quot;Aquot;){} ILEGAL if(1 == new Integer(1)){} LEGAL
  • 15. Operadores de igualdade JButton a = new JButton(quot;Exitquot;); JButton b = new JButton(quot;Exitquot;); JButton c = a; System.out.println(a == b); System.out.println(a == c); Qual a saída?
  • 16. Operadores de igualdade JButton a = new JButton(quot;Exitquot;); JButton b = new JButton(quot;Exitquot;); JButton c = a; System.out.println(a == b); → false System.out.println(a == c); → true Qual a saída?
  • 17. Operadores de igualdade Integer a = 10; Integer b = 10; System.out.println(a==b); Qual a saída?
  • 18. Operadores de igualdade Integer a = 10; Integer b = 10; System.out.println(a==b); → true Qual a saída?
  • 19. Operadores de igualdade Integer a = new Integer(10); Integer b = new Integer(10); System.out.println(a==b); → false Qual a saída?
  • 20. Operadores de igualdade Integer a = new Integer(5) + 5; Integer b = 10; System.out.println(a==b); → true Qual a saída?
  • 21. Operadores de igualdade enum Color {RED,GREEN,BLUE} ... Color a = Color.RED; Color b = Color.RED: System.out.println(a==b); Qual a saída?
  • 22. Operadores de igualdade enum Color {RED,GREEN,BLUE} ... Color a = Color.RED; Color b = Color.RED: System.out.println(a==b); → true Qual a saída?
  • 23. Operador instanceof • Verifica se o OBJETO referenciado pelo lado esquerdo “É UM” objeto do tipo do lado direito. • Utilizado apenas com referências • Retorna um booleano • Ex: referencia instanceof Tipo
  • 24. Operador instanceof class Animal { } class Baleia extends Animal { } ... Animal a = new Animal(); Baleia b = new Baleia(); Object c = new Baleia(); ... System.out.println(a instanceof Animal); → true System.out.println(a instanceof Baleia); → false
  • 25. Operador instanceof class Animal { } class Baleia extends Animal { } ... Animal a = new Animal(); Baleia b = new Baleia(); Object c = new Baleia(); ... System.out.println(b instanceof Animal); → true System.out.println(b instanceof Baleia); → true
  • 26. Operador instanceof class Animal { } class Baleia extends Animal { } ... Animal a = new Animal(); Baleia b = new Baleia(); Object c = new Baleia(); ... System.out.println(c instanceof Animal); → true System.out.println(c instanceof Baleia); → true
  • 27. Operador instanceof class A { } ... A a = new A(); ... ...println(“x” instanceof A); ILEGAL ...println(a instanceof Object); SEMPRE TRUE ...println(array instanceof Object); SEMPRE TRUE ...println(null instanceof A); SEMPRE FALSE
  • 28. Operador instanceof interface Animal { } class Manifero implements Animal { } class Baleia extends Mamifero { } ... Baleia b = new Baleia(); ...println(b instanceof Animal); → true
  • 29. Operadores aritméticos • + adição • - subtração • * multiplicação • / divisão • % resto ...println(17 % 5); → 2 ...println(17.0 % 5.0); → 2.0
  • 30. Operadores aritméticos int a = 8; int b = 6; int c = a + b;
  • 31. Operadores aritméticos short a = 8; short b = 6; short c = a + b; → ILEGAL
  • 32. Operadores aritméticos short a = 8; short b = 6; short c = a; c += b; → LEGAL
  • 33. Concatenação de Strings 5 + 4 + “x” → “9x” ERRO??? 5 + (4 + “x”) → “54x” “x” + 5 + 4 → “x54” ERRO??? “x” + (5 + 4) → “x9” String s = “alguma”; s += “coisa”; → “algumacoisa”
  • 34. Incremento e Decremento int x = 5; ...println(x++); → 5 ...println(x); → 6 ...println(++x); → 7 ...println(x); → 7 ...println(x--); → 7 ...println(x); → 6
  • 35. Operador condicional hora < 12 ? quot;Mquot; : quot;Tquot; (hora < 12) ? quot;Mquot; : quot;Tquot; hora < 12 ? quot;Mquot; : hora < 18 ? quot;Tquot; : quot;N“ hora > 12 ? hora < 18 ? quot;Tquot; : quot;Nquot; : quot;M”
  • 36. Operador condicional hora < 12 ? quot;Mquot; : quot;Tquot; (hora < 12) ? quot;Mquot; : quot;Tquot; hora < 12 ? quot;Mquot; : hora < 18 ? quot;Tquot; : quot;Nquot; hora > 12 ? hora < 18 ? quot;Tquot; : quot;Nquot; : quot;Mquot;
  • 37. Operadores lógicos & | ^ ! && || • Operandos são expressões booleanas • O resultado é um booleano • Na prova não cai operadores binários!!!
  • 38. Operadores lógicos • Operadores com curto-circuito – && e || • Dependendo do valor do 1º operando, o segundo operando pode não ser avaliado if( true || ?????? ){} if( false && ??????){}
  • 39. Operadores lógicos • Operadores sem curto-circuito –&e| • Os dois operando sempre serão avaliados
  • 40. Operadores lógicos • XOR (OU exclusivo) ^ – Retorna true se APENAS um operando é true – Os dois operandos sempre são avaliados • Negação ! true → false false → true