Ausgabe des Java-Programms | Satz 5

Sagen Sie die Ausgabe der folgenden Java-Programme voraus.
Programm 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   

Ausgabe :

String 


Erläuterung : Im Falle von Methodenüberladung Die spezifischste Methode wird zur Kompilierzeit ausgewählt. Da „java.lang.String“ ein spezifischerer Typ ist als „java.lang.Object“. In diesem Fall wird die Methode ausgewählt, die „String“ als Parameter akzeptiert. 
Programm 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   

Ausgabe:  
 

Compile Error at line 19. 


Erläuterung: In diesem Fall von Methode Überladung Die spezifischste Methode wird zur Kompilierzeit ausgewählt. 
Da „java.lang.String“ und „java.lang.Integer“ ein spezifischerer Typ als „java.lang.Object“ sind, ist zwischen „java.lang.String“ und „java.lang.Integer“ keiner spezifischer. 
In diesem Fall kann Java nicht entscheiden, welche Methode aufgerufen werden soll. 
Programm 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   

Ausgabe: 
 

abcd abc false abcd abcd true 


Erläuterung : In Java ist String unveränderlich und String-Puffer veränderbar. 
Die Zeichenfolgen s2 und s1 zeigen also beide auf dieselbe Zeichenfolge abc. Und nachdem die Änderungen vorgenommen wurden, zeigt die Zeichenfolge s1 auf abcd und s2 auf abc, also falsch. Im String-Puffer verweisen sowohl sb1 als auch sb2 auf dasselbe Objekt. Da String-Puffer veränderbar sind, führen Änderungen in einem String auch zu Änderungen am anderen String. Beide Zeichenfolgen zeigen also immer noch auf dasselbe Objekt, nachdem die Änderungen am Objekt vorgenommen wurden (hier sb2).
Programm 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   

Ausgabe:  
 

Compile Error at line 8 


Erläuterung:  
1. In Zeile 12 bewirkt das '' im println, dass die Zahlen automatisch in Zeichenfolgen umgewandelt werden. Es erfolgt also keine Addition, sondern das Anhängen als String. 
2. In Zeile 11 führt += eine automatische Umwandlung in einen Short durch. Allerdings darf die Zahl 123456 nicht in einem Kurzschluss enthalten sein, sodass Sie am Ende einen negativen Wert (-7616) erhalten. 
(HINWEIS – kurze 2 Bytes -32768 bis 32767) Hier bedeutet die Zahl 123456 nicht, dass der Wert von int zit die Länge des int-Werts angibt 
3. Die anderen beiden sind jedoch Ablenkungsmanöver, da der Code aufgrund von Zeile 8 nie kompiliert werden kann. 
Jede Zahl, die mit Null beginnt, wird als Oktalzahl (also zwischen 0 und 7) behandelt.
 

Quiz erstellen