در 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;
هرچند دسترسی به متغیری ارجاعی که مقدارش null است بدون مشکل کامپایل میشود، در زمان اجرا به پرتابشدن NullPointerException میانجامد.
int[] arr = null;
// Throws NullPointerException at runtime
arr.length;
وقتی بخواهید به متغیری ارجاعی دسترسی پیدا کنید که null است اما به یک شیء نیاز دارد، NullPointerException پرتاب میشود.
برای کار ایمن با مقادیر nullپذیر، باید پیش از کار کردن با آنها بررسی کنید که null هستند یا نه؛ این کار را میتوان با عملگرهای برابری مانند == یا != انجام داد:
int[] arr = null;
if(arr != null) {
System.out.println(arr.length);
} else {
//Perform an alternate action when arr is null
}