Скоро сви програмски језици су повезани са нулом. Тешко да постоји програмер коме не смета нул. У Јави нулл је придружен јава.ланг. НуллПоинтерЕкцептион . Пошто је то класа у пакету јава.ланг, она се позива када покушамо да извршимо неке операције са или без нулл, а понекад чак ни не знамо где се то догодило. Испод су неке важне тачке о нулл у Јави које сваки Јава програмер треба да зна:
нп.цлип
- У Јави нулл је посебна вредност која представља одсуство вредности или референце. Користи се да укаже да променљива или објекат тренутно немају додељену вредност.
- Нулл вредност није исто што и празан стринг или празан низ. Празан низ је низ који не садржи знакове, док је празан низ низ који не садржи елементе.
- Јава програмски језик има уграђени нулл тип који се зове 'нулл' који је подтип свих референтних типова. Међутим, не може се користити као тип за променљиву јер нема инстанцу и не може се инстанцирати.
- Сматра се најбољом праксом да проверите нулте вредности пре него што извршите било какве операције на њима како бисте избегли ризик од НуллПоинтерЕкцептион (НПЕ). НПЕ се сматра једним од најчешћих изузетака у Јави и може изазвати неочекивано понашање или рушење програма.
- У Јави се нулл такође користи да означи да метода не враћа никакву вредност. Ово је познато као тип повратка 'воид'. Метода воид не враћа никакву вредност и обично се користи за извођење радње као што је штампање на конзоли или ажурирање базе података.
- Поред тога, нулл се може користити као подразумевана вредност за опционе параметре у методи. Ово омогућава да се позове метод без навођења вредности за тај параметар и уместо тога ће се користити нулта вредност.
- Није препоручљиво користити нулл као вредност за променљиву или објекат који има за циљ да задржи вредност примитивног типа података као што је инт или доубле јер ће то изазвати грешку у времену компајлирања.
- Употреба нуле у Јави може бити извор забуне и суптилних грешака, тако да је важно да будете свесни његовог понашања и како правилно поступати са њим у свом коду да бисте спречили грешке.
1. нулл разликује велика и мала слова: нулл је дословно у Јави и зато што су кључне речи велика и мала слова у Јави не можемо писати НУЛЛ или 0 као у језику Ц.
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; } }
Излаз:
5: error: cannot find symbol
can't find symbol 'NULL'
^
variable NULL
class Test
1 error
2. Вредност референтне променљиве: Свака референтна променљива у Јави има подразумевану вредност нулл .
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); } }
Излаз:
Value of object obj is : null 3. Тип нуле: За разлику од уобичајене заблуде, нулл није објекат или није тип. То је само посебна вредност која се може доделити било ком референтном типу и можете да откуцате цаст нулл било ком типу Примери:
// 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. Аутобоксовање и распакивање: Током операција аутоматског боксовања и распакивања, компајлер једноставно избацује грешку изузетка Нуллпоинтер ако је нулта вредност додељена примитивном типу података у кутији.
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; } }
Излаз:
Exception in thread 'main' java.lang.NullPointerException
at Test.main(Test.java:6)
5. инстанцеоф оператор: Јава инстанцеоф оператор се користи за тестирање да ли је објекат инстанца наведеног типа (класа или подкласа или интерфејс). У времену извршавања резултат оператора инстанцеоф је истинит ако вредност израза није нулта. Ово је важно својство операције инстанцеоф које га чини корисним за проверу преливања типа.
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); } }
Излаз:
false
true
6. Статички против нестатичких метода: Не можемо позвати нестатичку методу на референтној променљивој са нултом вредношћу, она ће избацити НуллПоинтерЕкцептион, али можемо позвати статички метод са референтним променљивим са нултим вредностима. Пошто су статичке методе повезане помоћу статичког везивања, оне неће избацити изузетак Нулл показивача.
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;); } }
Излаз:
static method can be called by null referenceException in thread 'main'
java.lang.NullPointerException
at Test.main(Test.java:5)
7. == и != Оператори за поређење и не једнаки су дозвољени са нулл у Јави. Ово може бити корисно за проверу нуле са објектима у Јави.
Javapublic class Test { public static void main(String args[]) { // return true; System.out.println(null == null); // return false; System.out.println(null != null); } }
Излаз:
true
false
8 . 'нулл' се може пренети као аргумент у методу:
Можемо проследити нулл као аргумент у Јави и можемо га одштампати. Тип података аргумента треба да буде Референтни тип. Али повратни тип методе може бити било који тип као воид инт доубле или било који други референтни тип у зависности од логике програма.
Овде ће метода 'принт_нулл' једноставно одштампати аргумент који је прослеђен из главног метода.
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); } }
Излаз :
Хеј, ја сам: нулл
9. '+' оператор на нулл:
Можемо спојити нулту вредност са стринг променљивим у Јави. Сматра се конкатенацијом у Јави.
Овде ће нулл бити спојен само са променљивом Стринг. Ако користимо '+' оператор са нулл и било којим другим типом (Интегер Доубле итд.) осим Стринг, то ће избацити поруку о грешци.
Цео број а=нулл+7 ће приказати поруку о грешци као ' лоши типови операнда за бинарни оператор '+' '
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); } }
Излаз
Concatenated value : null_value