Izlaz Java programa | Set 5

Predvidite izlaz sljedećih Java programa.
Program 1:  
 

Java
   // Main.java   public     class   Main   {      public     static     void     gfg  (  String     s  )      {         System  .  out  .  println  (  'String'  );      }      public     static     void     gfg  (  Object     o  )      {      System  .  out  .  println  (  'Object'  );      }      public     static     void     main  (  String     args  []  )      {      gfg  (  null  );      }   }     //end class   

Izlaz :

String 


Obrazloženje : U slučaju preopterećenje metode najspecifičnija metoda se bira u vrijeme kompajliranja. Budući da je 'java.lang.String' specifičniji tip od 'java.lang.Object'. U ovom slučaju odabire se metoda koja uzima 'String' kao parametar. 
Program 2:  
 

Java
   // Main.java   public     class   Main   {      public     static     void     gfg  (  String     s  )      {         System  .  out  .  println  (  'String'  );      }      public     static     void     gfg  (  Object     o  )      {      System  .  out  .  println  (  'Object'  );      }      public     static     void     gfg  (  Integer     i  )      {      System  .  out  .  println  (  'Integer'  );      }      public     static     void     main  (  String     args  []  )      {      gfg  (  null  );      }   }     //end class   

Izlaz:  
 

Compile Error at line 19. 


Obrazloženje: U ovom slučaju od metoda Preopterećenje najspecifičnija metoda se bira u vrijeme kompajliranja. 
Budući da su 'java.lang.String' i 'java.lang.Integer' specifičniji tip od 'java.lang.Object', ali između 'java.lang.String' i 'java.lang.Integer' nijedan nije specifičniji. 
U ovom slučaju Java ne može odlučiti koju metodu pozvati. 
Program 3:  
 

Java
   // Main.java   public     class   Main   {      public     static     void     main  (  String     args  []  )      {      String     s1     =     'abc'  ;      String     s2     =     s1  ;      s1     +=     'd'  ;      System  .  out  .  println  (  s1     +     ' '     +     s2     +     ' '     +     (  s1     ==     s2  ));      StringBuffer     sb1     =     new     StringBuffer  (  'abc'  );      StringBuffer     sb2     =     sb1  ;      sb1  .  append  (  'd'  );      System  .  out  .  println  (  sb1     +     ' '     +     sb2     +     ' '     +     (  sb1     ==     sb2  ));      }   }     //end class   

Izlaz: 
 

abcd abc false abcd abcd true 


Objašnjenje: U Javi String je nepromjenjiv, a međuspremnik niza je promjenjiv. 
Dakle, nizovi s2 i s1 pokazuju na isti niz abc. I nakon što izvršite promjene, string s1 pokazuje na abcd, a s2 pokazuje na abc, dakle false. Dok u međuspremniku niza i sb1 i sb2 pokazuju na isti objekt. Budući da je međuspremnik nizova promjenjiv, mijenjanje jednog niza također mijenja i drugi niz. Dakle, oba niza i dalje pokazuju na isti objekt nakon unošenja promjena u objekt (ovdje sb2).
Program 4:  
 

Java
   // Main.java   public     class   Main   {      public     static     void     main  (  String     args  []  )      {      short     s     =     0  ;      int     x     =     07  ;      int     y     =     08  ;      int     z     =     112345  ;      s     +=     z  ;      System  .  out  .  println  (  ''     +     x     +     y     +     s  );      }   }     //end class   

Izlaz:  
 

Compile Error at line 8 


Obrazloženje:  
1. U retku 12 '' u ispisu uzrokuje da se brojevi automatski pretvaraju u nizove. Dakle, ne radi zbrajanje, ali dodaje zajedno kao niz. 
2. U Line11 += automatski prebacuje na kratki. Međutim, broj 123456 ne može biti sadržan u kratkom nizu pa ćete na kraju dobiti negativnu vrijednost (-7616). 
(NAPOMENA - kratka 2 bajta -32768 do 32767) Ovdje broj 123456 ne znači da vrijednost int zit pokazuje duljinu int vrijednosti 
3. Međutim, ova druga dva su crvena sleđa jer se kod nikada neće kompajlirati zbog retka 8. 
Svaki broj koji počinje s nulom tretira se kao oktalni broj (što je 0-7).
 

Napravi kviz