9 lucruri de nul în Java

9 lucruri despre NULL în Java.

9 lucruri despre Nul în Java

Java nulă și indisolubil legate. Nu este greu orice Java-programator, nu să se întâlnească cu „excepție pointer nul“ și este un fapt trist. Chiar și inventatorul conceptului de „nul“, a numit-greșeala lui într-un miliard de dolari, atunci de ce Java suportă? nul a fost aici o lungă perioadă de timp, și cred că, creatorii Java știu că creează mai multe probleme decât rezolvă, așa că de ce ei încă pus cu ea. Și mă surprinde chiar mai mult, pentru că filozofia Java a fost de a simplifica lucrurile, care este motivul pentru care nu mai sunt ocupați cu indicii, supraîncărcarea operatorului și moștenirea multiplă, dar de ce este nul.

Ei bine, eu chiar nu știu răspunsul la această întrebare, dar ceea ce știu, nu contează cât de multe nul criticat Java-programatori si comunitatea open-source, trebuie să trăim cu ea. În loc de regret, este mai bine pentru a afla mai multe și pentru a fi siguri că vom folosi nul corect.
De ce trebuie să știți despre nul în Java?
Pentru că, dacă nu acorde atenție la nul. Asigurați-vă că, Java va suferi de java.lang.NullPointerException teribil și vei învăța această lecție, dar mult mai dificil de a merge prin. Scrisul este rezistent la „căderea“ de cod este o artă - și echipa ta, clienții și utilizatorii vor aprecia. În experiența mea, una dintre cauzele principale NullPointerException este lipsa de cunoștințe despre nul în Java. Mulți dintre voi sunteți deja familiarizați cu nul, restul pot afla unele dintre cele mai vechi și noi lucruri despre cuvântul cheie NULL. Să repete sau să învețe câteva lucruri importante despre nul în Java.

Ce este nul în Java


Așa cum am spus, nul este foarte, concept foarte important în Java. Acesta a fost inițial inventat pentru a indica absența a ceva, de exemplu, lipsa unui utilizator, resurse, sau orice altceva, dar în ultimul an a nedumerit Java-programatori multiple excepție pointer nul. In acest tutorial, vom învăța faptele de bază despre cuvântul cheie NULL în Java, să învețe câteva trucuri despre cum să evite probleme cu excepții pointer nul și pentru a minimiza nul de verificare.

  1. În primul rând lucrurile în primul rând, null este un cuvânt cheie în Java, precum și publice. statică sau finală. -Sensibil caz, nu puteți scrie nul ca NULL sau NULL. compilatorul nu recunoaște și va fi aruncat de eroare.

De multe ori, acest lucru întâlni programatori care au trecut de la alte limbaje de programare, dar folosind problema moderne IDE devine nesemnificativ. Astăzi, IDE cum ar fi Eclipse sau NetBeans poate corecta această greșeală în timp ce tastați codul, dar în epoca Notepad. Vim și Emaks. a fost o problemă comună, care ar putea mânca o mulțime de timp prețios.

  • La fel cum fiecare entitate are o valoare prestabilită, de exemplu, int este 0. boolean este falsă. nul este valoarea implicită a tuturor tipurilor de referință, cu alte cuvinte, pentru toate obiectele. La fel ca atunci când creați o variabilă booleană valoarea implicită este falsă. precum și orice variabile de referință în Java va fi nulă în mod implicit. Acest lucru este valabil pentru toate tipurile de variabile: o variabilă membru sau o variabilă locală, o variabilă instanță sau variabilă statică, în plus, compilatorul va plânge dacă utilizați o variabilă locală, fără initializarea.

    Acest lucru este valabil atât pentru obiecte statice și non-statice, după cum puteți vedea aici, am făcut referință myObj statică, astfel încât să pot folosi în mod direct în principala metodă, care este o metodă statică și nu permite accesul la variabile non-statice din interior.

  • În ciuda comună greșită, nulă nu este un obiect (Object), și nici tipul. Este pur și simplu o valoare deosebită, care pot fi atribuite la orice tip de referință, și poate duce la orice tip de nul, după cum se arată mai jos:

    După cum puteți vedea, exprimate nul pentru orice tip de referință este de succes atât la momentul compilarii și în timpul rulării. Spre deosebire de ceea ce ar putea crede mulți dintre voi nu va duce la ejectarea NullPointerException.

  • nul poate fi atribuit un tip de referință, nu puteți atribui variabila primitivă nulă ca int. dublu. float, sau boolean. Compilatoare exprima nemulțumirea mea dacă faci așa cum se arată mai jos:

    După cum puteți vedea, când vom atribui direct nul primitiv, atunci vom obține un proces de eroare de compilare, dar, dacă atribuiți un obiect de clasă înveliș nul, iar apoi atribuiți obiectului la tipul primitiv corespunzător, compilatorul nu răspunde, dar vom fi răsplătiți excepție pointer nul în timpul performanță. Acest lucru se datorează ambalajului auto (autoboxing) (autoboxing) în Java, și ne vom întâlni cu el în paragraful următor.

  • Orice clasa împachetarea cu o valoare nulă va arunca java.lang.NullPointerException atunci când Java va despacheta (Unbox) în variabila sa primitivă. Unii programatori fac greșeala de a presupune că pachetul auto (autoboxing) va avea grijă de conversie valoare implicită nulă pentru tipul primitiv corespunzător, de exemplu, 0 pentru int. false pentru boolean, etc. dar acest lucru nu este adevărat, după cum se poate vedea mai jos:

    Dar, atunci când executați acest fragment de cod, veți vedea în consolă

    Acest lucru se întâmplă adesea atunci când se utilizează HashMap și tasta Integer. Rularea codul afișat mai jos va fi întreruptă imediat ce ați începe.

    Acest cod arata foarte simplu si inofensiv. Tu doar conta numărul de ori numărul găsit în matrice, tehnica clasică de a găsi duplicate. Dezvoltatorul numărul anterior numărate, incrementeaza de unul și introduce din nou în hartă. El ar fi crezut că-pachet auto va avea grijă de conversie Integer în Int. așa cum se face în timpul unui apel pentru a pune (). dar el uită că, dacă numărul count nu a fost încă realizat, pentru a primi (), metoda se întoarce de la HashMapnull. nu zero, deoarece valoarea implicită pentru Integer este nul. în loc de 0 și de auto-ambalare aruncă excepție pointer nul atunci când încearcă să convertească Integer la o variabilă int.

  • Operatorul instanceof returnează false dacă un parametru pentru a specifica orice variabilă de referință cu o valoare nulă, sau nulă de la sine. exemplu:


    Aceasta este o proprietate importantă a operatorului instanceof. ceea ce îl face util pentru a verifica exprimate.

  • Știi că nu poți apela metoda non-statică în variabila de referință, cu o valoare nulă. aceasta va provoca o NullPointerException. dar s-ar putea să nu știți că puteți apela o metodă statică dintr-o variabilă de referință, cu o valoare nulă. pentru că Metodele statice folosesc obligatoriu statice, ele nu arunca o NullPointerException. Iată un exemplu:
  • Puteți trimite nul ca parametru la o metodă care acceptă orice tip de referință, de exemplu:

    Acesta poate fi invocat

    Acest lucru este normal din punct de vedere al compilatorului, dar comportamentul ulterior depinde în întregime de metoda. Metoda-Nul în condiții de siguranță nu va arunca NullPointerException. ci pur și simplu completat corect. În cazul în care logica de afaceri permite, se recomandă să scrie metode nule în condiții de siguranță.

  • Puteți compara nulul folosind operatorii == (egal) și! = (Nu este egal), dar nu se poate utiliza cu alți operatori aritmetice sau logice, cum ar fi <(меньше) или> (Mai mult). Spre deosebire de SQL, în Java null == null returneaza true. așa cum se arată mai jos:


  • Este vorba despre nul în Java. După ce a lucrat o anumită experiență în Java de programare și folosind trucuri simple pentru a evita NullPointerException. Puteți face codul este securizat. pentru că valoare nulă poate fi considerată ca valoare gol sau neinițializate, este adesea o sursă de confuzie, motiv pentru care este atât de important să se documenteze comportamentul metodei atunci când primiți o valoare nulă. Întotdeauna amintiți-vă, este nulă variabilele de referință implicite, și nu poate apela o metodă de instanță sau de a avea acces la o variabilă instanță folosind un nul-referință în Java.