Java program kimenete | 5. készlet

Megjósolja a következő Java programok kimenetét.
1. program:  
 

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   

Kimenet :

String 


Magyarázat : Abban az esetben módszer túlterhelése a fordításkor a legspecifikusabb módszert választják. Mivel a „java.lang.String” specifikusabb típus, mint a „java.lang.Object”. Ebben az esetben azt a metódust választjuk, amely a 'String'-et veszi paraméterként. 
2. program:  
 

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   

Kimenet:  
 

Compile Error at line 19. 


Magyarázat: Ebben az esetben a módszer Túlterhelés a fordításkor a legspecifikusabb módszert választják. 
Mivel a „java.lang.String” és a „java.lang.Integer” egy konkrétabb típus, mint a „java.lang.Object”, de a „java.lang.String” és „java.lang.Integer” között egyik sem pontosabb. 
Ebben az esetben a Java nem tudja eldönteni, hogy melyik metódust hívja meg. 
3. program:  
 

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   

Kimenet: 
 

abcd abc false abcd abcd true 


Magyarázat: Java-ban a String megváltoztathatatlan, a string puffer pedig változtatható. 
Tehát az s2 és s1 karakterlánc ugyanarra az abc karakterláncra mutat. És a változtatások elvégzése után az s1 karakterlánc az abcd-re, az s2 pedig az abc-re mutat, ezért false. A karakterlánc pufferben az sb1 és az sb2 is ugyanarra az objektumra mutat. Mivel a karakterlánc-puffer változtatható, az egyik karakterlánc módosítása a másik karakterláncot is módosítja. Tehát mindkét karakterlánc továbbra is ugyanarra az objektumra mutat az objektum módosítása után (itt sb2).
4. program:  
 

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   

Kimenet:  
 

Compile Error at line 8 


Magyarázat:  
1. A 12. sorban A println-ben lévő '' karakterlánc hatására a számok automatikusan karakterláncként jelennek meg. Tehát nem összeadást végez, hanem karakterláncként fűzi össze. 
2. A 11. sorban a += automatikusan rövidre dob. Az 123456-os szám azonban nem szerepelhet rövidben, így negatív érték (-7616) lesz. 
(MEGJEGYZÉS - rövid 2 bájt -32768-32767) Itt az 123456 szám nem azt jelenti, hogy az int zit értéke az int érték hosszát mutatja 
3. A másik kettő vörös hering azonban, mivel a kód soha nem fog lefordítani a 8. sor miatt. 
Bármely nullával kezdődő szám oktális számként kezelendő (ami 0-7).
 

Kvíz létrehozása