Upang maunawaan kung ano ang ibig sabihin ng null sa Java, tingnan natin ang isang pagkakatulad sa mga numero: ang numero 0 ay sumasagisag sa kawalan ng isang bagay, at ang null ay nangangahulugan ng parehong bagay pagdating sa mga uri ng data ng sanggunian. Kung ang isang field ng isang uri ng sanggunian (gaya ng String , Object , o StringBuilder ) ay hindi tahasang itinalaga ng isang halaga, kung gayon, sa pamamagitan ng pagkakatulad sa mga primitive na uri, ito ay tumatanggap ng isang default na halaga, at ang halagang iyon ay null :

Code Output ng console

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

Ngunit kung idedeklara mo ang isang array tulad nito:


String[] strings = new String[12];

isang array ay gagawin na naglalaman ng 12 elemento, at lahat ng mga ito ay magiging null :

Code Output ng console

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("Element " + i + ":" + strings[i]);
        }
    }
}
                    
Elemento 0: null
Element 1: null
Element 2: null
Element 3: null
Element 4: null
Element 5: null Element
6: null
Element 7: null
Element 8: null
Element 9: null
Element 10: null
Element 11: null

Tulad ng nakikita mo, kapag pinagsama sa isang string, ang halaga na null ay nagiging string na " null ". Iyon ay sinabi, kung tatawagan mo ang toString() na pamamaraan dito, tulad nito:


String[] strings = null;
System.out.println(strings.toString());

pagkatapos ay makakakuha ka ng NullPointerException (tatalakayin namin ang mga pagbubukod nang detalyado sa ibang pagkakataon). Ang parehong bagay ay nangyayari kung susubukan mong tumawag sa anumang iba pang paraan sa null (ang pagbubukod ay mga static na pamamaraan, na malalaman mo sa ilang sandali):


public static void main(String[] args) {
    StringBuilder sb = null;
    sb.append("test"); // This will compile, but there will be a runtime error
}

Ang null ay, bukod sa iba pang mga bagay, isang nakalaan na keyword (tulad ng public o static ), kaya hindi ka makakalikha ng variable, pamamaraan, o klase na pinangalanang null . Tulad ng iba, ang keyword na ito ay case-sensitive (maaaring napansin mo na nagsusulat kami ng null sa maliliit na titik sa lahat ng dako). Ibig sabihin:


String firstName = Null; // Compilation error

String secondName = NULL; // Compilation error

String fullName = null; // This will compile

Tingnan natin kung ano pa ang maaari at hindi mo magagawa sa null :

  • Maaari kang magtalaga ng null sa anumang reference:

    
    StringBuilder sb = null;
                
  • ang null ay maaaring i-cast sa anumang uri ng sanggunian:

    
    String s = (String) null; // This will compile, but doing this doesn't make any sense :)
                
  • Ang null ay hindi maaaring italaga sa isang primitive variable:

    
    int i = null; // This won't compile
                
  • ang null ay maaaring ihambing gamit ang == at !=

  • null == null ay nagbabalik ng totoo

Sa nakaraang mga aralin, pinag-usapan natin kung paano ang lahat ng bagay sa Java ay isang bagay, at bawat bagay ay may uri.

Ano ang masasabi natin tungkol sa null sa bagay na ito? Ang null ay literal ng isang tiyak na uri, at ang uri na ito ay walang pangalan. At dahil walang pangalan ang ganitong uri, imposibleng magdeklara ng variable ng ganitong uri, o mag-cast dito. Kaya, ang null ay ang tanging kinatawan ng hindi pinangalanang uri na ito. Sa pagsasagawa, maaari nating balewalain ang ganitong uri, at isipin ang null bilang isang espesyal na literal na maaaring italaga sa anumang reference na variable.

Bagay na dapat alalahanin:

  • Ang null ay ang default na halaga para sa mga uri ng data ng sanggunian
  • Ang ibig sabihin ng null ay "walang halaga"
  • Kung tatawag tayo ng anumang paraan sa isang bagay na ang halaga ay null , ang code ay mag-compile ngunit sa runtime makakakuha tayo ng NullPointerException .