java.lang.nullpointerexception이 throw되는 경우
프로그램에서이 오류가 자주 발생합니다. java.lang.NullPointerException입니다. 이 버그는 다음과 같은 경우에 값이 없는 null 개체를 사용하려고 할 때 시작됩니다.- null 메서드 호출 instance.
- Access 또는 null 개체의 인스턴스를 수정합니다.
- 예외는 null 배열의 길이를 호출할 때 throw하기 위한 것입니다.
- li>
- 배열과 같은 널 위치에 액세스할 때.
- 널 객체를 동기화하거나 동기화된 블록 내에서 사용할 때.
객체는 java
객체는 클래스 인스턴스 또는 배열이고, 참조는 이러한 객체에 대한 포인터이며, 널 참조는 참고문헌 to no object.변수를 선언하면 Java는 x 변수를 0으로 설정하고 해당 객체를 참조하는 포인터가 작성됩니다. 예를 들어, 다음 코드에서는 변수 x:
int x;이 예제에서 변수 x는 기본적으로 0으로 설정되고 두 번째 줄인 값 5는 x가 가리키는 메모리 위치에 기록됩니다. Java는 프로그래머가 메모리 상자를 조작하는 것을 금지하고 메모리 위치가 아닌 객체의 메소드에만 액세스 할 수 있습니다.
x = 5;
Cases 또는 NullPointerException 발생
1) nullPoint dot = null;
dot.getX()를 호출합니다.
스레드 "main"의 예외 java.lang.NullPointerException2) null 객체의 인스턴스에 액세스하거나 수정합니다.
at Test.main(Test.java:27)
점 점 = null;
dot.getX()를 호출합니다.
스레드 "main"의 예외 java.lang.NullPointerException3) throw null
at Test.main(Test.java:38)
throw 를 사용할 때 인수가 null이 아닌지 확인합니다. 0이면 상승 NullPointerException .< / b>
< / b >< / div>4) 널 배열을 호출할 때 length
Eclipse 또는 Netbeans와 같은 IDE에서는 오류를 트리거한 줄의 번호가 표시됩니다. 이는 오류 유형을 식별하는 좋은 방법입니다. Variables는 이 코드의 String과 같은 기본값을 가질 수 있습니다.
배열을 선언한 후 체크박스를 초기화합니다.
부울 변수, 카운터를 사용합니다,... etc를 사용하여 코드를 최적화합니다.
< / b >< / div>
IOException nullException = null;
try {
nullException throw;
} catch (IOException e) {
e.printStackTrace();
}
char[] ch = null;5) array
int 길이 = ch.length;
와 같은 null 위치에 접근할 때, 예를 들어 null.
char[] ch = null;
char c = 채널[0];
6) null을 동기화할 때
당신은 얻는다 NullPointerException 객체를 동기화하려는 경우 null 또는 동기화 된 블록에 넣으십시오.
Thread th=null;
synchronized(th){
System.out.print("이 스레드는 동기화되었습니다.");
}
예방책은 무엇입니까
- 이러한 유형의 예외를 피하는 가장 좋은 방법 개체를 직접 만들지 않은 경우 객체가 0인지 확인하는 것입니다. 코드는 다음과 같이 작성해야 합니다.
void display(String phrase){이 솔루션은 객체가 null이므로 display() 프로시저에서 아무 일도 일어나지 않기 때문에 경우에 따라 최적이 아닙니다.
//문장이 null이 아닌지 확인
if(phrase!=null)
System.out.print(phrase);
}
String string="";
//Declaration
Thread[] th=new Thread[3];
//초기화
th[0]=new Thread();
th[1]=새 스레드();
th[2]=새 스레드();