Случаи, когда выбрасывается исключение java.lang.nullpointerexception
Мы часто сталкиваемся с этой ошибкой в наших программах. java.lang.NullPointerException. Эта ошибка возникает, когда вы пытаетесь использовать нулевой объект, который не имеет значения в следующих случаях:- Вызов метода null instance.
- Доступ или изменение экземпляра нулевого объекта.
- Исключение предназначено для throw.
- При вызове длины массива null. li>
- При доступе к нулевым позициям, таким как массив.
- При синхронизации нулевого объекта или использовании его внутри синхронизированного блока.
На объекты ссылаются указатели в java
Объект - это экземпляр класса или массив, ссылки - это указатели на эти объекты, а нулевая ссылка - это Ссылки no object.Когда вы объявляете переменную, Java устанавливает переменную x в 0 и создается указатель, который ссылается на этот объект. Например, в следующем коде мы объявим переменную x:
int x;В этом примере переменная x по умолчанию равна нулю, а вторая строка, значение 5, записывается в ячейку памяти, на которую указывает x. Java запрещает программисту манипулировать ячейками памяти, она дает доступ только к методам объекта, а не к месту памяти.
x = 5;
Cases или NullPointerException thrown
1) Вызов метода экземпляра nullPoint dot = null;
dot.getX();
Исключение в потоке "main" java.lang.NullPointerException2) Доступ к экземпляру пустого объекта или его изменение.
at Test.main(Test.java:27)
Точка точка = null;
dot.getX();
Исключение в потоке "main" java.lang.NullPointerException3) При использовании throw null
at Test.main(Test.java:38)
throw проверяет, что аргумент не равен NULL, А если он равен нулю, то он повышается. NullPointerException.
IOException nullException = null;
try {
throw nullException;
} catch (IOException e) {
e.printStackTrace();
}
char[] ch = null;5) При доступе к пустым местам, таким как array
int длина = длина канала;
Например, доступ к полям массива null.
char[] ch = null;
char c = ch[0];
6) При синхронизации null
Вы получаете NullPointerException Если вы пытаетесь синхронизировать объект null или поместите его внутрь синхронизированного блока.
Thread th=null;
synchronized(th){
System.out.print("этот поток синхронизирован");
}
Какие профилактики
- Лучший способ избежать такого рода исключений  В случае, если вы не создали объект самостоятельно проверяет, равен ли объект нулю. Код должен быть написан следующим образом:
void display(String phrase){В некоторых случаях это решение не является оптимальным, так как объект имеет значение null, поэтому в процедуре display() ничего не происходит.
//проверяем, не является ли предложение нулевым
if(phrase!=null)
System.out.print(phrase);
}
String string="";
//Declaration
Thread[] th=new Thread[3];
//Инициализация
th[0]=new Thread();
th[1]=new Thread();
th[2]=new Thread();