دستگرمی

دستگرمی دوم

دستگرمی این هفته:

خروجی کد جاوای زیر چیست؟

پاسخ:

خروجی این کد برابر است با: ۱۰

برای رسیدن به پاسخ صحیح، متد main را خط به خط بررسی می‌کنیم:
خط ۷: سه شی مختلف ایجاد شده و در آرایه‌ای از نوع Object ریخته می‌شوند. می‌دانید که در جاوا، کلاس Object پدر تمام کلاس‌ها است.
خط ۸: متغیر result با مقدار اولیه ۰ ایجاد شده.
خط ۹: به ازای هر یک از اشیای موجود در آرایه objs، بدنه این حلقه اجرا می‌شود و مهم است بفهمیم که در هر بار اجرا، مقدار متغیر result چه تغییری می‌کند.
• اجرای اول:
obj = “”
در خط ۱۱، رشته خالی نمونه‌ای از B نبوده و قابل Cast شدن به A هم نیست. بنابراین، ClassCastException پرتاب شده و خط ۱۴ اجرا می‌شود. به این ترتیب، result = 1 خواهد بود.
• اجرای دوم:
obj = new D()
در خط ۱۱، obj نمونه‌ای از D است و در نتیجه از نوع B نیز هست؛ بنابراین Cast می‌شود به B.
ولی به‌هرحال obj از نوع D است و در خط ۱۲، متد f از کلاس D اجرا می‌شود. در نتیجه مقدار result برابر با ۱۱ خواهد شد.
• اجرای سوم:
obj = null
در اثر اجرای خط ۱۱، مقدار test هم برابر null می‌شود. پس در خط ۱۲ استثنای NullPointerException پرتاب می‌شود و مقدار result یک واحد کم شده برابر با ۱۰ می‌شود.
خط ۱۹: مقدار ۱۰ در خروجی چاپ می‌شود.

.

.

.

با ما همراه باشید

آدرس کانال تلگرام: JavaCupIR@

آدرس اکانت توییتر: JavaCupIR@

آدرس صفحه اینستاگرام: javacup.ir

آدرس گروه لینکدین: Iranian Java Developers

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا