Instanceof

galera alguem poderia me falar em palavras faceis oque faz esse comando e como ele funciona(sintaxe) e se puder me dar um exemplo tambem, fikaria grato…

É utilizado pra saber se um tipo é do tipo de uma classe.

Vc utiliza ele assim:

variaval instanceof classe

É muito utilizado qdo sobrescreve o método equals:

class X {
 public int a;
 public boolean equals(Object o) {
   if (!(o instanceof X)) {
      return false;
    }
   return ((X)o).a == a;
 }
}

[]'s
carisio

Da mesma forma que <, <=, >=, >, == e !=, instanceof é um “operador” de comparação. Ele retorna um boolean indicando se um objeto é instância de uma determinada classe.

Veja exemplo:

public class Main &#123;
  public static void main&#40;String&#91;&#93; args&#41; &#123;
    String s = &quot;PortalJava&quot;;
    Foo x = new Foo&#40;&#41;;
    Zoo z = new Zoo&#40;&#41;;
    
    System.out.println&#40;s instanceof String&#41;;
    System.out.println&#40;x instanceof Foo&#41;;
    System.out.println&#40;z instanceof Foo&#41;;
    System.out.println&#40;x instanceof Zoo&#41;;
  &#125;
&#125;

class Foo &#123;&#125;

class Zoo extends Foo &#123;&#125;

O instanceof, da mesma forma que os operadores de comparação, só pode ser usado com objetos e classes da mesma família, caso contrário ocorrerá um erro de compilação.

No exemplo apresentado, ocorreria um erro de compilação se fosse usado a linha comando:

System.out.println&#40;s instanceof Foo&#41;;

Só pra complementar o operador instanceof é usado na comparação de variaveis de referencia de objeto…para ser mais simples verifica se um objeto é de um tipo especifico.

Observe o Exemplo..

   public static void main(String args[){

       String m = new String("Marcos");
      
          if(m instanceof String){
                  System.out.println("A variavel m é do tipo String");
          }

   }

Cara isso pode ser aplicado tambem em interfaces e subclasses, verificando se o objeto implementa uma determinada interface ou se extende uma superclasse.

Espero ter ajudado…

Ate mais!!!

Código:

Uma duvida? Daria erro de compilação ou apenas retornaria false?

Erro. s (String) está numa árvore hierárquica diferente de Foo.
Ambos extendem Object.