Java에서 null 리터럴은 값이 없음을 나타내는 데 사용해요.
Java의 기본형은 모두 기본값을 가지고 있어서 절대 null이 될 수 없어요.
관례적으로 기본형은 소문자로 시작해요. 예를 들어 int가 있어요.
참조형은 객체의 메모리 주소를 담고 있으며 null 값을 가질 수 있어요.
참조형은 일반적으로 대문자로 시작해요. 예를 들어 String이 있어요.
기본형 변수에 null 값을 할당하려고 하면 컴파일 오류가 발생해요. 변수는 항상 할당된 타입의 기본형 값을 가지기 때문이에요.
//Throws compile time error stating the required type is int, but null was provided
int number = null;
참조형 변수에 null 값을 할당해도 컴파일 오류가 발생하지 않아요. 참조형 변수는 null을 허용하기 때문이에요.
//No error will occur as the String variable str is nullable
String str = null;
이 연습 문제에서는 공장 직원들의 이름 배지를 출력하는 코드를 작성해요.
직원에게는 ID, 이름, 부서 이름이 있어요. 직원 배지 라벨은 다음과 같은 형식이에요: "[id] - name - DEPARTMENT".
직원의 배지 라벨을 반환하도록 Badge.print() 메서드를 구현해요:
Badge badge = new Badge();
badge.print(734, "Ernest Johnny Payne", "Strategic Communication");
// => "[734] - Ernest Johnny Payne - STRATEGIC COMMUNICATION"
라벨에서는 부서 이름을 대문자로 표시해야 해요.
컴퓨터 시스템의 특이한 점 때문에, 새로 입사한 직원은 공장에서 일을 시작할 때 아직 ID가 없는 경우가 가끔 있어요.
배지는 필수이기 때문에, 이들은 ID 접두사가 없는 임시 배지를 받아요. 아직 ID가 없는 새 직원을 지원하도록 Badge.print() 메서드를 수정해요:
Badge badge = new Badge();
Badge.print(null, "Jane Johnson", "Procurement");
// => "Jane Johnson - PROCUREMENT"
공장 사장도 항상 배지를 달아야 해요.
그런데 사장에게는 부서가 없어요. 이 경우 라벨에는 부서 이름 대신 "OWNER"가 출력되어야 해요.
사장의 라벨을 출력하도록 Badge.print() 메서드를 수정해요:
Badge badge = new Badge();
badge.print(254, "Charlotte Hale", null);
// => "[254] - Charlotte Hale - OWNER"
사장이 새로 입사한 직원일 수도 있다는 점에 유의해요:
Badge badge = new Badge();
badge.print(null, "Charlotte Hale", null);
// => "Charlotte Hale - OWNER"
Exercism에 가입하고 Java 트랙을 개념 26개연습 문제 158개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.