در Java، از مقدار ثابت null برای نشان دادن نبودِ یک مقدار استفاده میشود.
انواع دادهی اولیه در Java همه مقدار پیشفرض دارند و بنابراین هرگز نمیتوانند null باشند.
طبق قرارداد، با حرف کوچک شروع میشوند، مثلاً int.
انواع ارجاعی حاوی نشانی حافظهی یک شیء هستند و میتوانند مقدار null داشته باشند.
آنها معمولاً با حرف بزرگ شروع میشوند، مثلاً String.
اگر بخواهید به یک متغیر اولیه مقدار null اختصاص دهید، خطای زمان کامپایل رخ میدهد، چون متغیر همیشه مقداری اولیه از نوعی را نگه میدارد که به آن اختصاص داده شده است.
//Throws compile time error stating the required type is int, but null was provided
int number = null;
اختصاص دادن مقدار null به یک متغیر ارجاعی منجر به خطای زمان کامپایل نمیشود، چون متغیرهای ارجاعی nullپذیر هستند.
//No error will occur as the String variable str is nullable
String str = null;
در این تمرین کدی مینویسید که برچسب اسم کارکنان کارخانه را چاپ میکند.
هر کارمند یک ID، یک اسم و یک بخش دارد. برچسب کارکنان به این شکل قالببندی میشود: "[id] - name - DEPARTMENT".
متد Badge.print() را طوری پیادهسازی کنید که برچسب کارمند را برگرداند:
Badge badge = new Badge();
badge.print(734, "Ernest Johnny Payne", "Strategic Communication");
// => "[734] - Ernest Johnny Payne - STRATEGIC COMMUNICATION"
توجه کنید که نام بخش روی برچسب باید با حروف بزرگ نوشته شود.
به دلیل یک نکتهی عجیب در سیستم کامپیوتری، کارمندان جدید گاهی هنگام شروع کار در کارخانه هنوز ID ندارند.
از آنجا که برچسب الزامی است، یک برچسب موقت بدون پیشوند ID دریافت میکنند. متد Badge.print() را تغییر دهید تا از کارمندان جدیدی که هنوز ID ندارند پشتیبانی کند:
Badge badge = new Badge();
Badge.print(null, "Jane Johnson", "Procurement");
// => "Jane Johnson - PROCUREMENT"
حتی مالک کارخانه هم باید همیشه برچسب بزند.
اما مالک بخشی ندارد. در این حالت، برچسب باید به جای نام بخش، "OWNER" را چاپ کند.
متد Badge.print() را تغییر دهید تا برچسب مالک را چاپ کند:
Badge badge = new Badge();
badge.print(254, "Charlotte Hale", null);
// => "[254] - Charlotte Hale - OWNER"
توجه کنید که ممکن است مالک همزمان کارمند جدید هم باشد:
Badge badge = new Badge();
badge.print(null, "Charlotte Hale", null);
// => "Charlotte Hale - OWNER"