Prawie wszystkie języki programowania są powiązane z wartością null. Prawie nie ma programisty, któremu nie przeszkadzałaby wartość null. W Javie null jest powiązany z Java.lang. Wyjątek NullPointer . Ponieważ jest to klasa w pakiecie java.lang, wywoływana jest, gdy próbujemy wykonać jakąś operację z wartością null lub bez niej i czasami nawet nie wiemy, gdzie to się stało. Poniżej znajduje się kilka ważnych punktów na temat wartości null w Javie, które każdy programista Java powinien wiedzieć:
wstaw znak wodny w słowie
- W Javie null to specjalna wartość reprezentująca brak wartości lub odniesienia. Służy do wskazania, że zmienna lub obiekt nie ma aktualnie przypisanej wartości.
- Wartość null to nie to samo, co pusty ciąg znaków lub pusta tablica. Pusty ciąg to ciąg niezawierający znaków, natomiast pusta tablica to tablica niezawierająca żadnych elementów.
- Język programowania Java ma wbudowany typ zerowy zwany „null”, który jest podtypem wszystkich typów referencyjnych. Nie można go jednak użyć jako typu zmiennej, ponieważ nie ma ona żadnej instancji i nie można jej utworzyć.
- Za najlepszą praktykę uważa się sprawdzanie wartości null przed wykonaniem na nich jakichkolwiek operacji, aby uniknąć ryzyka wystąpienia wyjątku NullPointerException (NPE). NPE jest uważany za jeden z najczęstszych wyjątków w Javie i może powodować nieoczekiwane zachowanie lub awarie programu.
- W Javie wartość null jest również używana do wskazania, że metoda nie zwraca żadnej wartości. Nazywa się to typem zwrotu „void”. Metoda void nie zwraca żadnej wartości i jest zwykle używana do wykonywania akcji, takiej jak drukowanie na konsoli lub aktualizacja bazy danych.
- Ponadto wartość null może zostać użyta jako wartość domyślna dla parametrów opcjonalnych w metodzie. Umożliwia to wywołanie metody bez określania wartości tego parametru i zamiast tego zostanie użyta wartość null.
- Nie zaleca się używania wartości null jako wartości zmiennej lub obiektu, który ma przechowywać wartość pierwotnego typu danych, takiego jak int lub double, ponieważ spowoduje to błąd w czasie kompilacji.
- Użycie wartości null w Javie może być źródłem zamieszania i subtelnych błędów, dlatego ważne jest, aby zdawać sobie sprawę z jej zachowania i wiedzieć, jak prawidłowo obchodzić się z nią w kodzie, aby zapobiec błędom.
1. null uwzględnia wielkość liter: null jest dosłowne w Javie i ponieważ słowa kluczowe są wielkość liter ma znaczenie w Javie nie możemy zapisać NULL ani 0, jak w języku C.
Java
public class Test { public static void main (String[] args) throws java.lang.Exception { // compile-time error : can't find symbol 'NULL' Object obj = NULL; //runs successfully Object obj1 = null; } }
Wyjście:
5: error: cannot find symbol
can't find symbol 'NULL'
^
variable NULL
class Test
1 error
2. Wartość zmiennej referencyjnej: Każda zmienna referencyjna w Javie ma wartość domyślną nieważny .
Javapublic class Test { private static Object obj; public static void main(String args[]) { // it will print null; System.out.println("Value of object obj is : " + obj); } }
Wyjście:
Value of object obj is : null 3. Typ wartości null: W przeciwieństwie do powszechnego błędnego przekonania, wartość null nie jest obiektem ani typem. To po prostu specjalna wartość, którą można przypisać do dowolnego typu referencyjnego i możesz wpisać rzutowanie null na dowolny typ. Przykłady:
// null can be assigned to String
String str = null;
// you can assign null to Integer also
Integer itr = null;
// null can also be assigned to Double
Double dbl = null;
// null can be type cast to String
String myStr = (String) null;
// it can also be type casted to Integer
Integer myItr = (Integer) null;
// yes it's possible no error
Double myDbl = (Double) null;
4. Automatyczne pakowanie i rozpakowywanie: Podczas operacji automatycznego pakowania i rozpakowywania kompilator po prostu zgłasza błąd wyjątku Nullpointer, jeśli wartość null jest przypisana do pierwotnego typu danych w pudełku.
Javapublic class Test { public static void main(String[] args) throws java.lang.Exception { // An integer can be null so this is fine Integer i = null; // Unboxing null to integer throws // NullpointerException int a = i; } }
Wyjście:
Exception in thread 'main' java.lang.NullPointerException
at Test.main(Test.java:6)
5. instancja operatora: Operator java instancjiof służy do sprawdzania, czy obiekt jest instancją określonego typu (klasa, podklasa lub interfejs). W czasie wykonywania wynik operatora instancjiof ma wartość true, jeśli wartość wyrażenia nie jest równa null. Jest to ważna właściwość instancji operacji, która czyni ją przydatną do sprawdzania rzutowania typów.
Javapublic class Test { public static void main(String[] args) throws java.lang.Exception { Integer i = null; Integer j = 10; // prints false System.out.println(i instanceof Integer); // Compiles successfully System.out.println(j instanceof Integer); } }
Wyjście:
false
true
6. Metody statyczne i niestatyczne: Nie możemy wywołać metody niestatycznej na zmiennej referencyjnej o wartości null, spowoduje to zgłoszenie wyjątku NullPointerException, ale możemy wywołać metodę statyczną ze zmiennymi referencyjnymi o wartości null. Ponieważ metody statyczne są powiązane przy użyciu wiązania statycznego, nie będą zgłaszać wyjątku wskaźnika zerowego.
Javapublic class Test { public static void main(String args[]) { Test obj = null; obj.staticMethod(); obj.nonStaticMethod(); } private static void staticMethod() { // Can be called by null reference System.out.println( " static method can be called by null reference & quot;); } private void nonStaticMethod() { // Can not be called by null reference System.out.print(" Non - static method - "); System.out.println( " cannot be called by null reference & quot;); } }
Wyjście:
static method can be called by null referenceException in thread 'main'
java.lang.NullPointerException
at Test.main(Test.java:5)
7. == i != Operatory porównania i nierówne są dozwolone w przypadku wartości null w Javie. Może to być przydatne przy sprawdzaniu wartości null za pomocą obiektów w Javie.
Javapublic class Test { public static void main(String args[]) { // return true; System.out.println(null == null); // return false; System.out.println(null != null); } }
Wyjście:
true
false
8 . Wartość „null” można przekazać jako argument w metodzie:
Możemy przekazać wartość null jako argument w Javie i możemy wydrukować to samo. Typ danych argumentu powinien być typem odniesienia. Jednak zwracanym typem metody może być dowolny typ, taki jak void int double lub dowolny inny typ referencyjny, w zależności od logiki programu.
Tutaj metoda 'print_null' po prostu wydrukuje argument przekazany z metody głównej.
Javaimport java.io.*; class GFG { public static void print_null(String str) { System.out.println('Hey I am : ' + str); } public static void main(String[] args) { GFG.print_null(null); } }
Wyjście :
Hej, jestem: null
9. Operator „+” na null:
Możemy połączyć wartość null ze zmiennymi typu String w Javie. W Javie jest to uważane za konkatenację.
Tutaj wartość null zostanie połączona tylko ze zmienną String. Jeśli użyjemy operatora „+” z wartością null i dowolnym innym typem (Integer Double itp.) innym niż String, wyświetli się komunikat o błędzie.
złe typy operandów dla operatora binarnego „+” „
Javaimport java.io.*; class GFG { public static void main(String[] args) { String str1 = null; String str2 = '_value'; String output = str1 + str2; System.out.println('Concatenated value : ' + output); } }
Wyjście
Concatenated value : null_value