OCA Java imtahan mövzuları

Chapter 6 – Əlavələr

Coderanch forumundan götürülmüş maraqlı bir nümunəyə baxaq və özümüzü yoxlayaq. Aşağıdakı kod nümunəsi verilmişdir:

Deməli Test classında 7 metod verilib. Bizdən nəyi tapmaq tələb olunur? Test classında verilmiş hansı metodlar:

1) compile olunmur?

2) compile olunur, amma run vaxtı exception verir?

3) compile olunur və run vaxtı heç bir exception baş vermir?

 

Cavab:

1)  method2(), method4(), method7()

2)  method5()

3)  method1(), method3(), method6()

 

method4() -də verilmiş cast ifadəsi:

   ((Animal) e).eat();

aşağıdakı kod ilə ekvivalentdir:

   Animal a = (Animal) e;

   a.eat();

method5()method6() -dakı cast ifadələri də yuxarıdakı məntiqə əsasən çalışır.

Sualla bağlı ətraflı izah aşağıdakı linkdə verilmişdir:

http://www.coderanch.com/t/651798/ocajp/certification/Mock-exam-wrong-answer-Java

 

Başqa bir nümunəyə baxaq:

line3‘də MyException əvəzinə IOException yazsaq, kod compile olunmayacaq, çünki catch bloku checked exceptionu tuta bilmir, line1‘də də declare olunan exception da IOException'dan daha kiçik tipdir. line2‘ni commentə atsaq kod yenə compile olunmayacaq, çünki line4 “unreachable” kod hesab olunacaq.

Bir birindən törəmə classlar catch blokunda aşağıdakı şəkildə birgə işlədilə bilməz, ancaq paralel olanlara icazə verilir:

 

Biz qeyd etdik ki, static blokda exception baş verərsə, bu zaman JVM tərəfindən ExceptionInInitializerError fırladılır. Amma static və instance initializer bloklarda birbaşa olaraq throw ilə exception fırlatdıqda compiler bunu qəbul etmir və xəta verir:

Əgər if(true) şərtini əlavə etsək, o zaman xəta aradan qalxacaq, çünki compiler if blokunun icra olunub olunmamasını ancaq run vaxtı müəyyən edir:

Amma if ilə belə yazdıqda ancaq RuntimeException fırlatmağa icazə verir, checked exception fırlatsaq compile xətası alacağıq:

 

List/massivlərlə əlaqəli baş verəcək xətalarla bağlı bir nümunəyə baxaq:

 

Facebook qrupumuzda bu mövzu ilə bağlı çox maraqlı bir sual paylaşılmışdı, screen edib qeydlərdə saxlamışdım:

Which of the following statements are true? (Choose all that apply)

A) value of b in catch: 14
value of b in finally: 15

Returned value in main() method: 14

B) value of b in catch: 14
value of b in finally: 15

Returned value in main() method: 15

C) value of b in catch: 14
value of b in finally: 14

Returned value in main() method: 15

D) value of b in catch: 14
value of b in finally: 14

Returned value in main() method: 14

E) Compiler error at line 3

F) Compiler error at line 7

G) Compiler error at line 10

H) RuntimeException

I)  None of above

Düzgün cavaba və müzakirələrə aşağıdakı linkdən baxa bilərsiniz, amma əvvəlcə cavabı özünüz tapmağa çalışın:

https://www.facebook.com/groups/javacertification/permalink/902142646501541/

 

Bütün mövzulara bax

 

About the author

Mushfiq Mammadov

Leave a Comment

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.