Java da null nima uchun kerakligini tushunish uchun, sonlarga o'xshatish keltiramiz: son 0 nimaningdir yo'qligini ifodalaydi, null esa shu ma'noni ma'lumotlar turlarining ishorasi uchun beradi. Agar ishora turi (String, Object, StringBuilder) maydoniga hech qanday qiymat berilmasa, primitv turlar bilan o'xshash holda, u sukut bo'yicha qiymat oladi va bu qiymat null bo'ladi:
| Kod | Ekranga chiqarish |
|---|---|
|
0
null |
Agar massivni shu tarzda e'lon qilsak:
String[] strings = new String[12];
12 elementdan iborat massiv yaratiladi va ularning barchasi null ga teng bo'ladi:
| Kod | Ekranga chiqarish |
|---|---|
|
0-element: null
1-element: null 2-element: null 3-element: null 4-element: null 5-element: null 6-element: null 7-element: null 8-element: null 9-element: null 10-element: null 11-element: null |
Ko'ryapsizmi, qachonki satr bilan birlashganda null satrga aylanadi “null”. Ammo, agar uning toString() metodini chaqirsangiz:
String[] strings = null;
System.out.println(strings.toString());
NullPointerException olasiz (istisnolarni biz keyinchalik batafsil ko'rib chiqamiz). Xuddi shu narsa null uchun boshqa metod chaqirilganda sodir bo'ladi (tanishtirishim kerak bo'lgan static metodlar bundan mustasno):
public static void main(String[] args) {
StringBuilder sb = null;
sb.append("test"); // kompilyatsiya qilinadi, lekin bajarilganda xato bo'ladi
}
null, shuningdek, rezerv qilingan kalit so'z (kabi public yoki static), shuning uchun null nomi bilan o'zgaruvchi, metod yoki klass yaratib bo'lmaydi. Bu kalit so'z, boshqa so'zlar kabi registrga sezgir (sizga e'tibor berish mumkin, biz har doim null ni kichik harf bilan yozamiz), shuning uchun:
String firstName = Null; // kompilyatsiya xatosi bo'ladi
String secondName = NULL; // kompilyatsiya xatosi bo'ladi
String fullName = null; // kompilyatsiyalanadi
Ko'rib chiqaylik, null bilan yana nima qilish mumkin va nima qilib bo'lmaydi:
Har qanday ishoraga null ni tayinlashingiz mumkin:
StringBuilder sb = null;null ni har qanday ishora turiga keltirish mumkin:
String s = (String) null; // kompilyatsiyalanadi, lekin ma'no qo'shmaydi :)null ni primitiv o'zgaruvchiga tayinlab bo'lmaydi:
int i = null; // kompilyatsiya qilinmaydinull ni == va != yordamida solishtirish mumkin
null == null true qaytaradi
Oldingi ma'ruzalarda aytib o'tdik, Java da hamma narsa obyekt hisoblanadi va har bir obyektda turi bor.
null haqida bu borada nima deyishimiz mumkin? null – bu qandaydir turdagi literal, va bu turda ism yo'q. Shu sababli, bu turda o'zgaruvchini e'lon qilib bo'lmaydi, yoki unga keltirishni amalga oshirolmaymiz. Shu bilan birga, null – bu anonim turdagi yagonal fan. Amalda biz bu turga e'tibor bermasdan, null ni maxsus literal sifatida tasavvur qilishimiz mumkin, bu esa har qanday ishora turidagi o'zgaruvchiga tayinlanishi mumkin.
Muhim esda saqlash kerak:
- null – bu ma'lumotlar turlarining ishorasi uchun sukut bo'yicha qiymat;
- null – bu "qiymatning yo'qligi";
- agar null ga teng bo'lgan obyektga qandaydir metod chaqirilsa – bunday kodning kompilyatsiyasi o'tadi, ammo bajarilish vaqtida NullPointerException istisnosi olamiza.
GO TO FULL VERSION