Null

All lectures for UZ purposes
Daraja, Dars
Mavjud

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

public class Solution {

    public static int i;
    public static String s;

    public static void main(String[] args) {
        System.out.println(i);
        System.out.println(s);
    }
}
                    
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

public class Solution {
    public static void main(String[] args) {
        String[] strings = new String[12];

        for (int i = 0; i < strings.length; i++) {
            System.out.println(i + "-element: " + strings[i]);
        }
    }
}
                    
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 qilinmaydi
                
  • null 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.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION