Java의 Null 포인터 예외 : 구현 및 예



이 기사는 Java에서 Null Pointer Exception이 어떻게 작동하는지에 대한 상세하고 포괄적 인 지식을 제공합니다.

코드의 원활한 실행을 위해 예외가 필요하며 프로그래머가 해결해야 할 오류를 알 수 있습니다. 이 기사에서는 다음 순서로 Java의 Null Pointer Exception에 중점을 둘 것입니다.

Java에서 Null 포인터 예외는 무엇입니까?





Java의 널 포인터 예외는 런타임 예외입니다. Java의 세계에서는 객체 참조에 특별한 null 값이 할당됩니다. Null 포인터 예외는 프로그램이 null 값을 가진 개체 참조를 사용하려고 할 때 발생합니다. 다음 중 하나 일 수 있습니다.

  • null 개체에서 특정 메서드를 호출합니다.
  • null 개체의 필드에 액세스하거나 수정합니다.
  • 널의 길이를 배열 인 것처럼 고려하여.
  • null 개체의 슬롯에 액세스하거나 수정하는 동안.
  • 던질 수있는 값처럼 null을 던집니다.
  • null 개체를 통해 동기화하려고합니다.

null 값이 필요한 이유는 무엇입니까?



Null은 Java에서 사용되는 고유 한 값입니다. 참조 변수에 값이 할당되지 않았 음을 나타내는 데 Null이 사용됩니다. null의 주요 응용 프로그램은 연결 목록 및 트리와 같은 데이터 구조를 구현하는 데 있습니다. 일부 다른 응용 프로그램에는 null 개체 패턴 및 단일 패턴이 포함됩니다. 싱글 톤 패턴은 하나의 클래스 인스턴스 만 시작할 수 있음을 지정하고 객체에 대한 전역 액세스 지점을 제공하는 것을 목표로합니다.

클래스의 인스턴스를 하나 이상 만드는 가장 쉽고 간단한 방법은 모든 생성자를 전용으로 선언하는 것입니다. 그런 다음 클래스의 고유 한 인스턴스를 반환하는 공용 메서드를 만듭니다.

리눅스에서 클래스 경로 설정
// randomUUID 함수를 사용합니다. import java.util.UUID import java.io. * class Singleton {// 여기서 우리는 single과 ID의 값을 null로 초기화합니다. private static Singleton single = null private String ID = null private Singleton () {/ * Singleton 클래스의 새 인스턴스 생성을 방지하기 위해 private로 만듭니다. * / // 임의의 ID 생성 ID = UUID.randomUUID (). toString ()} public static Singleton getInstance () {if (single == null) single = new Singleton () return single} public String getID () {return this.ID}} // 드라이버 코드 public class TestSingleton {public static void main (String [] args) {Singleton s = Singleton.getInstance () System.out.println (s.getID ())}} //

산출:



null-pointer

위의 예는 싱글 톤 클래스의 정적 인스턴스입니다. 인스턴스는 Singleton get Instance 메서드 내에서 최대 한 번 초기화됩니다.

자바 원격 메소드 호출 예제

Java에서 Null 포인터 예외를 피하는 방법은 무엇입니까?

Java에서 Null Pointer Exception을 방지하려면 사용하기 전에 모든 개체가 제대로 초기화되었는지 확인해야합니다. 참조 변수가 선언되면 객체가 null이 아닌지 확인해야하며 객체에서 메서드 나 필드를 요청하기 전에도 확인해야합니다. 다음은 해당 문제를 극복하기위한 해당 솔루션의 몇 가지 문제입니다.

// 메소드 호출을 보여주는 프로그램 // null에서 NullPointerException 발생 import java.io. * class GFG {public static void main (String [] args) {// null 값으로 문자열 변수 초기화 String ptr = null // ptr.이 null인지 또는 제대로 작동하는지 확인합니다. try {//이 코드 줄에서 NullPointerException이 발생합니다. // ptr이 null이기 때문에 // if (ptr.equals ( 'gfg')) System.out.print ( 'Same') else System.out.print ( 'Not Same')} catch (NullPointerException e) {System.out.print ( 'NullPointerException Caught')}}}

산출:

메서드의 인수 확인 유지

항상 새 메서드의 본문을 실행하기 전에 null 값에 대한 인수를 확인하고 메서드 실행을 계속해야합니다. 인수가 제대로 확인 된 경우에만. 그렇지 않으면 'IllegalArgumentException'이 발생하고 전달 된 인수에 문제가 있다는 호출 메서드를 호출합니다.

// 매개 변수를 사용하기 전에 // 매개 변수가 null인지 여부를 확인하는 프로그램입니다. import java.io. * class GFG {public static void main (String [] args) {// String s set an empty string and calling getLength () String s = ''try {System.out.println (getLength (s) )} catch (IllegalArgumentException e) {System.out.println ( 'IllegalArgumentException catch')} // String s를 값으로 설정하고 getLength () 호출 s = 'GeeksforGeeks'try {System.out.println (getLength (s) )} catch (IllegalArgumentException e) {System.out.println ( 'IllegalArgumentException catch')} // s를 null로 설정하고 getLength () 호출 s = null try {System.out.println (getLength (s))} catch ( IllegalArgumentException e) {System.out.println ( 'IllegalArgumentException catch')}} // 문자열 길이를 반환하는 함수 s. s가 null이면 // IllegalArgumentException이 발생합니다. public static int getLength (String s) {if (s == null) throw new IllegalArgumentException ( 'The argument cannot be null') return s.length ()}}

산출:

삼항 연산자 사용

삼항 연산자는 NullPointerException을 방지하는 데 사용됩니다. 부울식이 확인되고식이 참이면 value1이 반환되고 그렇지 않으면 value2가 반환됩니다. 널 포인터를 처리하기위한 삼항 연산자를 사용할 수 있습니다. 오른쪽 이미지는 해당 출력입니다.

// NullPointerException을 피하기 위해 삼항 연산자를 // 사용할 수 있음을 보여주는 Java 프로그램. import java.io. * class GFG {public static void main (String [] args) {// null 값으로 문자열 변수 초기화 String str = null String message = (str == null)? '': str.substring (0,5) System.out.println (message) str = 'Edureka_Java_Blog'message = (str == null)? '': str.substring (0,5) System.out.println (메시지)}}

산출:

에듀 렉

이것으로 Java의 Null Pointer Exception이 끝났습니다. Null Pointer Exception에 대한 아이디어를 얻었기를 바랍니다.

확인 전 세계에 걸쳐 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 작성했습니다. Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Java 개발자가 되고자하는 학생과 전문가를 위해 설계되었습니다. 이 과정은 Java 프로그래밍을 시작하고 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

goto C ++ 사용 방법

질문이 있으십니까? 이 'Java의 Null Pointer Exception'블로그의 의견 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.