logo

Излаз Јава програма | Сет 7

Ниво тежине: Средњи Предвидите излаз следећих Јава програма. Програм 1: Java
public class Calculator {  int num = 100;  public void calc(int num) { this.num = num * 10; }  public void printNum() { System.out.println(num); }  public static void main(String[] args)  {  Calculator obj = new Calculator();  obj.calc(2);  obj.printNum();  } } 
Опције: А) 20 Б) 100 В) 1000 Г) 2 Одговор: А) 20 Објашњење: Овде је име променљиве инстанце класе (број) исто као цалц() назив локалне променљиве (број). Дакле, за референцирање променљиве инстанце класе из цалц() методом ово кључна реч се користи. Тако у изјави ово.број = број * 10 у а представља локалну променљиву методе чија је вредност 2 и ово.бр представља променљиву инстанце класе чија је почетна вредност 100. Сада у принтНум() метод јер нема локалну променљиву чије је име исто као променљива инстанце класе тако да можемо директно да користимо у а на референтну променљиву инстанце иако ово.бр може се користити.   Програм 2: Java
public class MyStuff {  String name;  MyStuff(String n) { name = n; }  public static void main(String[] args)  {  MyStuff m1 = new MyStuff('guitar');  MyStuff m2 = new MyStuff('tv');  System.out.println(m2.equals(m1));  }  @Override  public boolean equals(Object obj)  {  MyStuff m = (MyStuff) obj;  if (m.name != null) { return true; }  return false;  } } 
Опције: А) Излаз је истинит и МиСтуфф испуњава уговор Објецт.екуалс(). Б) Излаз је лажан и МиСтуфф испуњава уговор Објецт.екуалс(). Ц) Излаз је истинит и МиСтуфф НЕ испуњава уговор Објецт.екуалс(). Д) Излаз је лажан и МиСтуфф НЕ испуњава уговор Објецт.екуалс(). Одговор: Ц) Излаз је истинит и МиСтуфф НЕ испуњава уговор Објецт.екуалс(). Објашњење: Ас једнако (Објекат објекат) метода у класи Објецт упоређује два објекта на основу релације еквиваленције. Али ми овде само потврђујемо да је објекат нулл или није, тако да не испуњава Објецт.екуалс() уговор. Ас м1 није нулл труе ће бити одштампано.   Програм 3: Java
class Alpha {  public String type = 'a ';  public Alpha() { System.out.print('alpha '); } } public class Beta extends Alpha {  public Beta() { System.out.print('beta '); }  void go()  {  type = 'b ';  System.out.print(this.type + super.type);  }  public static void main(String[] args)  {  new Beta().go();  } } 
Опције: А) алфа бета б б Б) алфа бета а б Ц) бета алфа б б Д) бета алфа а б Одговор: А) алфа бета б б Објашњење: Изјава нова Бета().го() изводи у две фазе. У првој фази Бета конструктор класе се зове. Не постоји ниједан члан инстанце присутан у Бета класе. Па сада Бета конструктор класе се извршава. Ас Бета класа проширује Алпха разред па позив иде у Алпха конструктор класе као прва изјава по подразумеваној вредности (ставља компајлер). супер() у Бета конструктор класе. Сада као променљива једне инстанце ( тип ) је присутан у Алпха класе па ће добити меморију и сада Алпха конструктор класе се извршава, а затим позива ретурн то Бета конструктор класе следећа изјава. Дакле алфа бета се штампа. У другој фази иди () метода се позива на овом објекту. Пошто постоји само једна променљива ( тип ) у објекту чија је вредност а . Дакле, биће промењено у б и штампана два пута. Тхе супер кључна реч овде нема користи.   Програм 4: Java
public class Test {  public static void main(String[] args)  {  StringBuilder s1 = new StringBuilder('Java');  String s2 = 'Love';  s1.append(s2);  s1.substring(4);  int foundAt = s1.indexOf(s2);  System.out.println(foundAt);  } } 
Опције: А) -1 Б) 3 В) 4 Г) А СтрингИндекОутОфБоундсЕкцептион се баца у време извођења. Одговор: Ц) 4 Објашњење: аппенд(Стринг стр) метходцонцатенате тхе стр то с1 . Тхе подстринг (инт индекс) метода враћа стринг из датог индекса до краја. Али пошто не постоји никаква стринг променљива за чување враћених стрингова, тако да ће она бити уништена. Сада индекОф(Стринг с2) метода враћа индекс првог појављивања с2 . Дакле, 4 се штампа као с1='ЈаваЛове'.   Програм 5: Java
class Writer {  public static void write()  {  System.out.println('Writing...');  } } class Author extends Writer {  public static void write()  {  System.out.println('Writing book');  } } public class Programmer extends Author {  public static void write()  {  System.out.println('Writing code');  }  public static void main(String[] args)  {  Author a = new Programmer();  a.write();  } } 
Опције: А) Писање... Б) Књига за писање Ц) Писање кода Д) Компилација није успела Одговор: Б) Књига за писање Објашњење: Пошто се статичке методе не могу заменити, није битно који објекат класе је креиран. Ас а је а Аутор референтни тип тако увек Аутор метода класе се позива. Ако уклонимо напиши() метод из Аутор час онда Вритер метода класе се назива као Аутор класа проширује Вритер класе.