🚀 null
이란?
null
은 Java에서 "아무것도 없는 상태"를 의미하는 특별한 값입니다.
즉, 참조형(객체) 변수가 메모리에 어떤 객체도 가리키지 않고 있는 상태입니다.
✅ 1️⃣ null
이 적용되는 대상
null
은 참조형 변수(객체)에만 적용되며, 기본형(int
, double
, boolean
등)에는 적용되지 않습니다.
📌 예제 (참조형 변수에 null
적용 가능)
String text = null; // ✅ 문자열 변수가 어떤 객체도 가리키지 않음
Integer number = null; // ✅ 래퍼 클래스(참조형)에서는 사용 가능
📌 기본형 변수에는 null
을 사용할 수 없음
int num = null; // ❌ 오류 발생 (기본형 변수에는 `null` 사용 불가)
✔ 기본형(int
, double
, boolean
)은 null
을 가질 수 없음.
✔ 대신 기본형 대신 Integer
, Double
, Boolean
등의 래퍼 클래스 사용 가능.
✅ 2️⃣ null
의 특징
1️⃣ null
을 가진 변수는 어떤 객체도 참조하지 않음.
2️⃣ null
인 객체에서 메서드를 호출하면 NullPointerException (NPE)
발생.
3️⃣ 기본형에는 null
을 사용할 수 없음.
4️⃣ 배열이나 컬렉션에도 null
요소가 포함될 수 있음.
5️⃣ null
을 방지하는 습관이 중요함!
✅ 3️⃣ null
로 인해 발생할 수 있는 문제점
📌 1. NullPointerException
발생
String text = null;
System.out.println(text.length()); // ❌ NullPointerException 발생
✔ 해결 방법: null
체크 후 실행
if (text != null) {
System.out.println(text.length());
} else {
System.out.println("text is null");
}
📌 2. null
을 안전하게 다루는 방법
"값".equals(변수)
패턴 사용 (null
방지)String name = null; if ("Java".equals(name)) { // ✅ NullPointerException 방지 System.out.println("Match!"); }
Optional
사용 (null
방지하는 최선의 방법!)import java.util.Optional;
Optional
System.out.println(text.orElse("Default Value")); // ✅ "Default Value"
---
## **🚀 결론**
✔ `null`은 **객체가 존재하지 않는 상태**를 의미.
✔ 기본형에는 사용할 수 없으며, **참조형 변수에만 적용 가능**.
✔ `null`을 조심하지 않으면 `NullPointerException`이 발생할 수 있음.
✔ `null`을 방지하기 위해 **`if` 체크, `"값".equals(변수)`, `Optional` 등을 활용**하면 안전한 코드 작성 가능! 🚀
### **🚀 Java에서 `null`로 인해 발생할 수 있는 오류들 & 해결 방법 (팩트 체크 & 수정)**
`null`은 **객체가 존재하지 않음을 의미하는 값**입니다.
초급 웹 개발자로서 **데이터를 안정적으로 다루려면 `null` 관련 오류를 예방하는 것이 중요합니다.**
---
---
## **✅ 1️⃣ `NullPointerException` (NPE)**
가장 흔한 `null` 관련 오류는 **`NullPointerException(NPE)`**입니다.
- **객체가 `null`인 상태에서 메서드 호출이나 필드 접근을 시도할 때 발생**합니다.
### **📌 예제 코드 (`NullPointerException` 발생)**
```java
public class Example {
public static void main(String[] args) {
String text = null;
System.out.println(text.length()); // ❌ NullPointerException 발생
}
}
💡 해결 방법
✔ null
체크 (if
문 사용)
✔ Objects.requireNonNull()
사용
✔ Optional
활용
if (text != null) {
System.out.println(text.length());
} else {
System.out.println("text is null!");
}
✅ 2️⃣ ArrayIndexOutOfBoundsException
vs NullPointerException
✔ 배열이 null
이면 NullPointerException
발생.
✔ 잘못된 인덱스로 접근하면 ArrayIndexOutOfBoundsException
발생.
📌 예제 코드 (NullPointerException
발생)
public class Example {
public static void main(String[] args) {
String[] arr = null;
System.out.println(arr.length); // ❌ NullPointerException 발생
}
}
✔ arr
자체가 null
이므로 .length
에 접근하면 NullPointerException
발생.
📌 예제 코드 (ArrayIndexOutOfBoundsException
발생)
public class Example {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]); // ❌ ArrayIndexOutOfBoundsException 발생
}
}
✔ numbers[5]
는 배열 크기(3)를 초과하는 인덱스이므로 ArrayIndexOutOfBoundsException
발생.
💡 해결 방법
✔ null
체크 후 배열 접근
if (arr != null) {
System.out.println(arr.length);
}
✔ 인덱스 범위 확인
if (numbers.length > 5) {
System.out.println(numbers[5]);
}
✅ 3️⃣ NumberFormatException
✔ 문자열이 null
이거나 숫자로 변환할 수 없는 경우 발생.
📌 예제 코드 (NumberFormatException
발생)
public class Example {
public static void main(String[] args) {
String number = "abc"; // 숫자가 아닌 문자열
int value = Integer.parseInt(number); // ❌ NumberFormatException 발생
}
}
💡 해결 방법
✔ null
체크 후 변환
✔ 예외 처리 (try-catch
) 사용
if (number != null) {
try {
int value = Integer.parseInt(number);
} catch (NumberFormatException e) {
System.out.println("Invalid number format");
}
}
✅ 4️⃣ NullPointerException
을 발생시키는 equals()
사용
✔ 객체가 null
일 때 .equals()
를 호출하면 NullPointerException
이 발생.
📌 예제 코드 (NullPointerException
발생)
public class Example {
public static void main(String[] args) {
String name = null;
if (name.equals("Java")) { // ❌ NullPointerException 발생
System.out.println("Match!");
}
}
}
💡 해결 방법
✔ "값".equals(변수)
패턴 사용 → null
안전한 방식
if ("Java".equals(name)) { // ✅ NullPointerException 방지
System.out.println("Match!");
}
✅ 5️⃣ Optional
을 사용하여 null
방지하기
✔ Optional
은 null
을 방지하는 강력한 도구.
✔ Optional.ofNullable(value)
을 사용하면 null
일 경우 안전하게 감싸줌.
✔ orElse(defaultValue)
→ null
일 때 기본값 제공.
📌 Optional
예제
import java.util.Optional;
public class Example {
public static void main(String[] args) {
Optional<String> text = Optional.ofNullable(null);
System.out.println(text.orElse("Default Value")); // ✅ "Default Value" 출력
}
}
🚀 결론: null
을 안전하게 다루는 방법
✔ 1️⃣ null
체크 (if
문 사용)
✔ 2️⃣ .equals()
호출 시 `"값".equals(변수)" 패턴 사용
✔ 3️⃣ 배열과 리스트는 null
체크 후 .length
나 .size()
호출
✔ 4️⃣ 숫자 변환 시 예외 처리 (try-catch
)
✔ 5️⃣ Optional
을 사용하여 null
방지
📌 초급 웹 개발자로서 데이터를 다룰 때 null
을 반드시 체크하는 습관을 들이면 안전한 코드를 작성할 수 있습니다! 🚀
'자바' 카테고리의 다른 글
매개변수가 없는 메서드와 매개변수가 없는 생성자 비교를 통한 생성자 이해 (0) | 2025.02.08 |
---|---|
final 키워드 특징 (0) | 2025.02.08 |
잘못된 메서드 사용 예시 (0) | 2025.02.08 |
가변인자와 배열인자 (0) | 2025.02.08 |
동기 처리와 비동기 처리 (1) | 2025.02.07 |