logo

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 odabire se tijekom 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 odabire se tijekom 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).
 

parsiranje niza u int