Java programos išvestis | 5 rinkinys

Numatykite šių „Java“ programų išvestį.
1 programa:  
 

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   

Išvestis :

String 


Paaiškinimas : Tuo atveju metodo perkrova kompiliavimo metu pasirenkamas konkretiausias metodas. Kadangi „java.lang.String“ yra konkretesnis tipas nei „java.lang.Object“. Šiuo atveju pasirenkamas metodas, kurio parametras yra "Eilutė". 
2 programa:  
 

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   

Išvestis:  
 

Compile Error at line 19. 


Paaiškinimas: Šiuo atveju metodas Perkrovimas kompiliavimo metu pasirenkamas konkretiausias metodas. 
Kadangi „java.lang.String“ ir „java.lang.Integer“ yra konkretesnis tipas nei „java.lang.Object“, tačiau tarp „java.lang.String“ ir „java.lang.Integer“ nė vienas nėra konkretesnis. 
Tokiu atveju „Java“ negali nuspręsti, kurį metodą iškviesti. 
3 programa:  
 

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   

Išvestis: 
 

abcd abc false abcd abcd true 


Paaiškinimas: Java „String“ yra nekintantis, o eilučių buferis – kintamas. 
Taigi eilutės s2 ir s1 nurodo tą pačią eilutę abc. Ir atlikus pakeitimus, eilutė s1 nurodo į abcd, o s2 – į abc, todėl klaidinga. Stygos buferyje ir sb1, ir sb2 nukreipia į tą patį objektą. Kadangi eilučių buferis yra kintamas, pakeitus vieną eilutę, pakeisite ir kitą eilutę. Taigi abi eilutės vis dar nukreipia į tą patį objektą po to, kai atlikote objekto pakeitimus (čia sb2).
4 programa:  
 

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   

Išvestis:  
 

Compile Error at line 8 


Paaiškinimas:  
1. 12 eilutėje „println“ reiškia, kad skaičiai automatiškai perduodami kaip eilutės. Taigi jis neprideda, o pridedamas kaip eilutė. 
2. 11 eilutėje += automatiškai perduoda trumpą. Tačiau skaičius 123456 negali būti trumpas, todėl jūs gaunate neigiamą reikšmę (-7616). 
(PASTABA – trumpi 2 baitai nuo 32768 iki 32767) Čia skaičius 123456 nereiškia, kad int zit reikšmė rodo int vertės ilgį 
3. Tos kitos dvi yra raudonosios silkės, nes kodas niekada nebus sudarytas dėl 8 eilutės. 
Bet koks skaičius, prasidedantis nuliu, laikomas aštuntuoju skaičiumi (kuris yra 0–7).
 

Sukurti viktoriną