في 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;
يُطلَق NullPointerException عند محاولة الوصول إلى متغير مرجعي قيمته null لكنه يتطلب كائنًا.
للتعامل مع القيم التي يمكن أن تكون null بأمان، ينبغي التحقق مما إذا كانت null قبل التعامل معها، ويمكن فعل ذلك باستخدام عوامل المساواة مثل == أو !=:
int[] arr = null;
if(arr != null) {
System.out.println(arr.length);
} else {
//Perform an alternate action when arr is null
}