250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 요시
- 계층형
- 패키지구조
- Spring
- 내일배움캠프
- 사전캠프
- 스파르타코딩클럽
- springboot
- 캡슐화
- 깃
- 메모리구조
- 함바그
- 자바
- 레퍼클래스
- 키오스크
- 깃헙
- 스터디카페
- optional
- jvm
- 도메인별
- 프레임워크
- Framework
- 스파르타사전캠프
- static
- Java
- 스프링부트
- 스파르타코딩클럽 #사전캠프
- 스파르타코딩클럽 #개발자 #백엔드
- Til
- til #데이터베이스 #sql
Archives
- Today
- Total
John's Code Journey
[JAVA] Optional - Null 다루기 본문
728x90
🌱 Optional 쉽게 이해하기
✅ 1. Optional이 뭐야?
Optional은 값이 있을 수도 있고, 없을 수도 있다는 걸 감싸는 상자(Box) 같은 거
- 값이 있으면 → 상자 안에 들어 있음
- 값이 없으면 → 비어 있음 (null 아님!)
이 상자를 쓰는 이유는 null 때문에 프로그램이 갑자기 죽는 걸 막기 위해서
✅ 2. Optional이 없을 때 예시 (나쁜 예)
public class Main {
public static String getName() {
return null; // 값이 없을 수도 있어!
}
public static void main(String[] args) {
String name = getName();
System.out.println(name.length()); // 💥 여기서 에러! NullPointerException
}
}
✅ 3. Optional이 있으면? (좋은 예)
import java.util.Optional;
public class Main {
public static Optional<String> getName() {
return Optional.ofNullable(null); // 값이 없을 수도 있어!
}
public static void main(String[] args) {
Optional<String> name = getName();
if (name.isPresent()) {
System.out.println(name.get().length()); // 값이 있으면 안전하게 꺼내서 사용
} else {
System.out.println("이름이 없습니다.");
}
}
}
📦 Optional 사용법
✔ Optional.of()
Optional<String> name = Optional.of("홍길동");
- 절대 null 넣으면 안 됨
- null 넣으면 오류 발생
✔ Optional.ofNullable()
Optional<String> name = Optional.ofNullable(null); // null 넣어도 OK!
- null이 들어가면 내부적으로 "빈 상자"가 됨
- 값이 있으면 넣고, 없으면 비워놓을 수 있어
✔ Optional.empty()
Optional<String> name = Optional.empty(); // 아예 빈 상자
✔ isPresent()
if (name.isPresent()) {
System.out.println("값이 있음");
}
- 값이 있으면 true
- 값이 없으면 false
✔ get()
if (name.isPresent()) {
String realName = name.get(); // 안전하게 꺼낼 수 있음
System.out.println(realName);
}
- 꼭 isPresent()로 체크하고 써야 함
✔ orElse()
String result = name.orElse("기본값");
System.out.println(result);
- 값이 있으면 그 값 사용
- 값이 없으면 "기본값" 사용
🎁 예제: 학생 이름 가져오기
import java.util.Optional;
public class Main {
public static Optional<String> getStudentName(int id) {
if (id == 1) {
return Optional.of("철수");
} else {
return Optional.empty(); // 이름 없음
}
}
public static void main(String[] args) {
Optional<String> name = getStudentName(2);
if (name.isPresent()) {
System.out.println("학생 이름: " + name.get());
} else {
System.out.println("학생 이름이 없습니다.");
}
}
}
💡 기억하면 좋은 팁
상황 | 방법 |
값이 무조건 있음 | Optional.of(값) |
값이 있을 수도 없음 | Optional.ofNullable(값) |
빈 상태로 만들기 | Optional.empty() |
값 꺼낼 때 | isPresent() + get() |
값 없을 때 기본값 쓰기 | orElse("기본값") |
'IT공부 > JAVA' 카테고리의 다른 글
[JAVA] 다형성(Polymorphism) (2) | 2025.04.23 |
---|---|
[JAVA] 캡슐화(Encapsulation) (0) | 2025.04.23 |
[JAVA] interface - 표준화의 시작 (1) | 2025.04.23 |
[JAVA] final - 변하지 않는 값 (0) | 2025.04.23 |
[JAVA] Static - 클래스가 공유하는 공간 (0) | 2025.04.23 |