Uitvoer van Java-programma | Stel 5 in

Voorspel de uitvoer van de volgende Java-programma's.
Programma 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   

Uitvoer :

String 


Uitleg : In het geval van methode overbelasting de meest specifieke methode wordt tijdens het compileren gekozen. Omdat 'java.lang.String' een specifieker type is dan 'java.lang.Object'. In dit geval wordt de methode gekozen die 'String' als parameter gebruikt. 
Programma 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   

Uitgang:  
 

Compile Error at line 19. 


Uitleg: In dit geval van methode Overbelasting de meest specifieke methode wordt tijdens het compileren gekozen. 
Omdat 'java.lang.String' en 'java.lang.Integer' een specifieker type is dan 'java.lang.Object', maar tussen 'java.lang.String' en 'java.lang.Integer' is niets specifieker. 
In dit geval kan Java niet beslissen welke methode moet worden aangeroepen. 
Programma 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   

Uitgang: 
 

abcd abc false abcd abcd true 


Uitleg : In Java is String onveranderlijk en is de stringbuffer veranderlijk. 
Dus string s2 en s1 wijzen beide naar dezelfde string abc. En na het aanbrengen van de wijzigingen wijst de string s1 naar abcd en s2 naar abc, dus false. Terwijl in de stringbuffer zowel sb1 als sb2 naar hetzelfde object verwijzen. Omdat stringbuffers veranderlijk zijn, kunnen wijzigingen in de ene string ook wijzigingen aanbrengen in de andere string. Dus beide strings wijzen nog steeds naar hetzelfde object nadat de wijzigingen aan het object zijn aangebracht (hier sb2).
Programma 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   

Uitgang:  
 

Compile Error at line 8 


Uitleg:  
1. In regel 12 zorgt de '' in de println ervoor dat de getallen automatisch als strings worden weergegeven. Er wordt dus niet opgeteld, maar aan elkaar toegevoegd als tekenreeks. 
2. In Line11 doet de += een automatische cast naar een korte film. Het getal 123456 kan echter niet in een kortsluiting worden opgenomen, zodat u uiteindelijk een negatieve waarde (-7616) krijgt. 
(LET OP - kort 2 bytes -32768 tot 32767) Hier betekent het getal 123456 niet dat de waarde van int zit de lengte van de int-waarde aangeeft 
3. Die andere twee zijn echter een afleidingsmanoeuvre, omdat de code nooit zal worden gecompileerd vanwege regel 8. 
Elk getal dat met nul begint, wordt behandeld als een octaal getal (dat is 0-7).
 

Quiz maken