Nästan alla programmeringsspråk är bundna med null. Det finns knappast en programmerare som inte besväras av null. I Java är null associerat java.lang. NullPointerException . Eftersom det är en klass i java.lang-paketet kallas det när vi försöker utföra vissa operationer med eller utan null och ibland vet vi inte ens var det har hänt. Nedan finns några viktiga punkter om null i java som alla Java-programmerare bör känna till:
ddl vs dml
- I Java är null ett speciellt värde som representerar frånvaron av ett värde eller referens. Den används för att indikera att en variabel eller ett objekt för närvarande inte har ett värde tilldelat det.
- Nullvärdet är inte detsamma som en tom sträng eller en tom array. En tom sträng är en sträng som inte innehåller några tecken medan en tom array är en array som inte innehåller några element.
- Programmeringsspråket Java har en inbyggd nolltyp som kallas 'null' som är en undertyp till alla referenstyper. Den kan dock inte användas som en typ för en variabel eftersom den inte har någon instans och inte kan instansieras.
- Det anses vara en bästa praxis att kontrollera nollvärden innan du utför några operationer på dem för att undvika risken för en NullPointerException (NPE). NPE anses vara ett av de vanligaste undantagen i Java och kan orsaka oväntat beteende eller kraschar i ett program.
- I Java används null också för att indikera att en metod inte returnerar något värde. Detta är känt som en "void" returtyp. En void-metod returnerar inget värde och används vanligtvis för att utföra en åtgärd som att skriva ut till konsolen eller uppdatera en databas.
- Dessutom kan null användas som standardvärde för valfria parametrar i en metod. Detta gör att en metod kan anropas utan att ange ett värde för den parametern och nullvärdet kommer att användas istället.
- Det rekommenderas inte att använda null som ett värde för en variabel eller ett objekt som är avsett att hålla ett värde av en primitiv datatyp som int eller double eftersom det kommer att orsaka ett kompileringsfel.
- Användningen av null i Java kan vara en källa till förvirring och subtila buggar så det är viktigt att vara medveten om dess beteende och hur man hanterar det korrekt i din kod för att förhindra fel.
1. null är skiftlägeskänslig: null är bokstavlig i Java och eftersom nyckelord är det skiftlägeskänslig i java kan vi inte skriva NULL eller 0 som i C-språk.
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; } }
Produktion:
5: error: cannot find symbol
can't find symbol 'NULL'
^
variable NULL
class Test
1 error
2. Referensvariabelvärde: Alla referensvariabler i Java har ett standardvärde null .
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); } }
Produktion:
Value of object obj is : null 3. Typ av null: Till skillnad från den vanliga missuppfattningen är null inte Objekt eller varken en typ. Det är bara ett speciellt värde som kan tilldelas vilken referenstyp som helst och du kan skriva cast null till vilken typ som helst. Exempel:
// 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. Autoboxning och unboxning: Under auto-boxing och unboxing-operationer kastar kompilatorn helt enkelt Nullpointer-undantagsfel om ett nollvärde tilldelas primitiv boxed datatyp.
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; } }
Produktion:
Exception in thread 'main' java.lang.NullPointerException
at Test.main(Test.java:6)
5. instans av operatör: Operatören java instanceof används för att testa om objektet är en instans av den angivna typen (klass eller underklass eller gränssnitt). Vid körning är resultatet av instanceof-operatorn sant om värdet på uttrycket inte är null. Detta är en viktig egenskap hos instanceof operation som gör den användbar för typgjutningskontroller.
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); } }
Produktion:
false
true
6. Statiska vs icke-statiska metoder: Vi kan inte anropa en icke-statisk metod på en referensvariabel med nullvärde, den kommer att kasta NullPointerException men vi kan anropa statisk metod med referensvariabler med nullvärden. Eftersom statiska metoder är bundna med statisk bindning kommer de inte att kasta nollpekare undantag.
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;); } }
Produktion:
static method can be called by null referenceException in thread 'main'
java.lang.NullPointerException
at Test.main(Test.java:5)
7. == och != Jämförelsen och inte lika med operatorer är tillåtna med null i Java. Detta kan göras användbart vid kontroll av null med objekt i java.
Javapublic class Test { public static void main(String args[]) { // return true; System.out.println(null == null); // return false; System.out.println(null != null); } }
Produktion:
true
false
8 . 'null' kan skickas som ett argument i metoden:
Vi kan skicka noll som ett argument i java och vi kan skriva ut detsamma. Datatypen för argumentet bör vara Reference Type. Men returtypen av metod kan vara vilken typ som helst som void int double eller vilken annan referenstyp som helst beroende på programmets logik.
Här kommer metoden 'print_null' helt enkelt att skriva ut argumentet som skickas från huvudmetoden.
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); } }
Utgång:
Hej jag är: null
9. '+' operator på null:
Vi kan sammanfoga nollvärdet med Stringvariabler i java. Det anses vara en sammanlänkning i java.
Här kommer null bara att sammanfogas med Stringvariabeln. Om vi använder '+' operator med null och någon annan typ (integer Double etc.) förutom String kommer det att skicka ett felmeddelande.
Heltal a=null+7 kommer att skicka ett felmeddelande som ' dåliga operandtyper för binär operator '+' '
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); } }
Produktion
Concatenated value : null_value