logo

Saída do programa Java | Conjunto 8

Nível de dificuldade : Intermediário
Preveja a saída dos seguintes programas Java.
Programa 1:
 

Java
class GfG {  public static void main(String args[])  {  String s1 = new String('geeksforgeeks');  String s2 = new String('geeksforgeeks');  if (s1 == s2)   System.out.println('Equal');  else  System.out.println('Not equal');  } } 

Saída: 
 

Not equal


Explicação: Como s1 e s2 são dois objetos diferentes, as referências não são iguais e o operador == compara a referência do objeto. Portanto, ele imprime 'Not equal' para comparar os caracteres reais na string. O método equals() deve ser usado. 
 
Programa 2:  
 



Java
class Person  {   private void who()  {  System.out.println('Inside private method Person(who)');  }    public static void whoAmI()  {  System.out.println('Inside static method Person(whoAmI)');  }    public void whoAreYou()  {  who();  System.out.println('Inside virtual method Person(whoAreYou)');  } } class Kid extends Person {   private void who()  {  System.out.println('Kid(who)');  }    public static void whoAmI()  {  System.out.println('Kid(whoAmI)');  }    public void whoAreYou()  {  who();  System.out.println('Kid(whoAreYou)');  } } public class Gfg {  public static void main(String args[])   {  Person p = new Kid();   p.whoAmI();   p.whoAreYou();   } } 

Saída: 
 

Inside static method Person(whoAmI) Kid(who) Kid(whoAreYou)


Explicação: A ligação estática (ou tempo de compilação) acontece para métodos estáticos. Aqui p.quemAmI() chama o método estático para que seja chamado durante o tempo de compilação, resultando em ligação estática e imprime o método na classe Person. 
Enquanto p.quem é você() chama o método em Criança classe, pois por padrão o Java o considera um método virtual, ou seja, ligação dinâmica.
 
Programa 3:  
 

Java
class GfG {  public static void main(String args[])  {  try  {  System.out.println('First statement of try block');  int num=45/3;  System.out.println(num);  }  catch(Exception e)  {  System.out.println('Gfg caught Exception');  }  finally  {  System.out.println('finally block');  }  System.out.println('Main method');  } } 

Saída: 
 

First statement of try block 15 finally block Main method


Explicação:  
Como não há exceção, o bloco catch não é chamado, mas o finalmente O bloco é sempre executado após um bloco try, independentemente de a exceção ser tratada ou não.
  
Programa 4:  
 

Java
class One implements Runnable  {  public void run()   {  System.out.print(Thread.currentThread().getName());  } } class Two implements Runnable  {  public void run()   {  new One().run();  new Thread(new One()'gfg2').run();  new Thread(new One()'gfg3').start();  } } class Three  {  public static void main (String[] args)   {  new Thread(new Two()'gfg1').start();  } } 

Saída: 
 

gfg1gfg1gfg3


Explicação: Inicialmente um novo Thread é iniciado com o nome gfg1 então na classe Dois o primeiro método run executa o thread com o nome gfg1 depois disso, um novo thread é criado chamando o método run, mas como um novo thread pode ser criado chamando apenas o método start, o thread anterior executa a ação e novamente gfg1 é impresso. Agora um novo thread é criado chamando o método start para que um novo thread comece com gfg3 nome e, portanto, imprime gfg3 .
 

hash na estrutura de dados