소개
이 랩에서는 Java 배열에 null 요소가 있는지 확인하는 방법을 배우게 됩니다. null 값 처리는 NullPointerException과 같은 일반적인 오류를 방지하기 위한 Java 프로그래밍의 기본 기술입니다. 우리는 세 가지 다른 방법을 탐구할 것입니다: 루프를 사용하여 배열을 반복하는 방법, Stream API 의 강력함을 활용하는 방법, 그리고 배열에 존재하는 null 요소의 수를 세는 방법입니다. 이 랩을 마치면 Java 배열 내에서 null 값을 효과적으로 식별하고 관리하는 실용적인 기술을 갖추게 될 것입니다.
Null 확인을 위한 배열 루프
이 단계에서는 Java 배열의 요소를 반복하여 null 값을 확인하는 방법을 배우겠습니다. Java 에서 null 값을 처리하는 것은 흔한 오류인 NullPointerException을 방지하는 데 매우 중요합니다.
Java 에서 null 값은 변수가 어떤 객체도 참조하지 않음을 의미합니다. null인 변수의 메서드나 필드에 접근하려고 하면 NullPointerException이 발생하여 프로그램이 충돌합니다.
배열을 반복하고 null 요소를 확인하는 방법을 보여주는 간단한 Java 프로그램을 만들어 보겠습니다.
WebIDE 편집기에서
HelloJava.java파일을 엽니다. 열려 있지 않은 경우 왼쪽의 파일 탐색기에서project폴더 내에서 찾을 수 있습니다.HelloJava.java의 기존 코드를 다음 코드로 바꿉니다.public class HelloJava { public static void main(String[] args) { String[] names = new String[5]; // 크기가 5 인 String 배열 선언 names[0] = "Alice"; names[1] = "Bob"; names[2] = null; // null 값 할당 names[3] = "Charlie"; names[4] = null; // 다른 null 값 할당 System.out.println("Checking array for null values:"); // 배열 반복 for (int i = 0; i < names.length; i++) { // 현재 요소가 null 인지 확인 if (names[i] == null) { System.out.println("Element at index " + i + " is null."); } else { System.out.println("Element at index " + i + " is: " + names[i]); } } } }이 코드의 새로운 부분을 살펴보겠습니다.
String[] names = new String[5];: 이 줄은 5 개의String객체를 저장할 수 있는names라는 배열을 선언합니다. 이처럼 객체 배열을 만들면 요소가 자동으로null로 초기화됩니다.names[2] = null;및names[4] = null;: 인덱스 2 와 4 의 요소에 명시적으로null을 할당하고 있습니다.for (int i = 0; i < names.length; i++): 이것은 첫 번째 요소 (인덱스 0) 부터 마지막 요소 (names.length - 1) 까지 배열을 반복하는 표준for루프입니다.if (names[i] == null): 루프 내에서 이if문은 현재 인덱스i의 요소가null과 같은지 확인합니다.System.out.println("Element at index " + i + " is null.");: 요소가null이면 이 줄이 실행됩니다.System.out.println("Element at index " + i + " is: " + names[i]);: 요소가null이 아니면 이 줄이 실행되어 요소의 값을 출력합니다.
HelloJava.java파일을 저장합니다 (Ctrl+S 또는 Cmd+S).이제 수정된 프로그램을 컴파일합니다. WebIDE 하단의 터미널을 열고 다음 명령을 실행합니다.
javac HelloJava.java오류가 없으면 컴파일이 성공적으로 완료된 것입니다.
마지막으로 컴파일된 프로그램을 실행합니다.
java HelloJava다음과 유사한 출력을 볼 수 있습니다.
Checking array for null values: Element at index 0 is: Alice Element at index 1 is: Bob Element at index 2 is null. Element at index 3 is: Charlie Element at index 4 is null.이 출력은 프로그램이 배열에서
null요소를 성공적으로 식별하고 보고했음을 보여줍니다.
이 단계에서는 간단한 if 조건을 사용하여 Java 배열을 수동으로 반복하고 각 요소의 null 값을 확인하는 방법을 배웠습니다. 이것은 잠재적인 NullPointerException을 처리하기 위한 기본적인 기술입니다.
Stream API 를 사용하여 Null 감지
이전 단계에서는 전통적인 for 루프를 사용하여 배열에서 null 값을 확인했습니다. Java 8 은 배열을 포함한 데이터 컬렉션을 처리하는 보다 기능적이고 종종 더 간결한 방법을 제공하는 Stream API 를 도입했습니다. 이 단계에서는 Stream API 를 사용하여 null 요소를 감지하는 방법을 배우겠습니다.
Stream API 를 사용하면 선언적 방식으로 일련의 요소에 대한 작업을 수행할 수 있습니다. 즉, for 루프와 같이 어떻게 할 것인지가 아니라 무엇을 할 것인지 설명합니다.
null 요소를 찾고 출력하기 위해 HelloJava.java 프로그램을 수정해 보겠습니다.
WebIDE 편집기에서
HelloJava.java파일을 엽니다.기존 코드를 다음 코드로 바꿉니다.
import java.util.Arrays; // Arrays 클래스 가져오기 import java.util.Objects; // Objects 클래스 가져오기 public class HelloJava { public static void main(String[] args) { String[] names = new String[5]; names[0] = "Alice"; names[1] = "Bob"; names[2] = null; names[3] = "Charlie"; names[4] = null; System.out.println("Checking array for null values using Stream API:"); // 배열을 Stream 으로 변환 Arrays.stream(names) // null 요소 필터링 .filter(Objects::isNull) // 각 null 요소 출력 (또는 null 을 나타내는 메시지) .forEach(name -> System.out.println("Found a null element.")); } }새로운 부분을 자세히 살펴보겠습니다.
import java.util.Arrays;:stream()메서드를 사용하려면Arrays클래스를 가져와야 합니다.import java.util.Objects;: 객체가null인지 확인하는 편리한 방법인isNull()메서드를 사용하기 위해Objects클래스를 가져옵니다.Arrays.stream(names): 이 줄은names배열을String객체의Stream으로 변환합니다..filter(Objects::isNull): 이것은 중간 연산입니다. 스트림을 필터링하여 조건Objects.isNull(element)이 true 인 요소 (즉,null인 요소) 만 유지합니다.Objects::isNull은 람다 표현식name -> Objects.isNull(name)의 축약형인 메서드 참조입니다..forEach(name -> System.out.println("Found a null element."));: 이것은 터미널 연산입니다. 스트림에 남아 있는 각 요소 (필터링 후의null요소) 에 대해 작업을 수행합니다. 이 경우 발견된 각null에 대해 "Found a null element."를 출력합니다.
HelloJava.java파일을 저장합니다.터미널에서 프로그램을 컴파일합니다.
javac HelloJava.java프로그램을 실행합니다.
java HelloJava다음과 유사한 출력을 볼 수 있습니다.
Checking array for null values using Stream API: Found a null element. Found a null element.이 출력은 Stream API 가 배열에서 두 개의
null요소를 성공적으로 식별했음을 확인합니다. 스트림을 사용하면 컬렉션 필터링 및 처리와 같은 특정 작업에 대해 코드를 더 읽기 쉽고 표현력 있게 만들 수 있습니다.
Null 요소 개수 세기
이전 단계에서는 for 루프와 Stream API 를 모두 사용하여 배열에서 null 요소를 식별하는 방법을 배웠습니다. 때로는 null 요소를 식별하는 것 외에도 배열에 정확히 얼마나 많은 null 요소가 있는지 알아야 할 수 있습니다. 이 단계에서는 Stream API 를 사용하여 null 요소의 수를 세는 방법을 배우겠습니다.
Stream API 는 스트림에 적용될 때 해당 스트림의 요소 수를 반환하는 count()라는 편리한 메서드를 제공합니다. 이전에 사용했던 filter() 연산과 결합하여 null 요소만 계산할 수 있습니다.
null 요소의 수를 세고 총 개수를 출력하기 위해 HelloJava.java 프로그램을 다시 한 번 수정해 보겠습니다.
WebIDE 편집기에서
HelloJava.java파일을 엽니다.기존 코드를 다음 코드로 바꿉니다.
import java.util.Arrays; import java.util.Objects; public class HelloJava { public static void main(String[] args) { String[] names = new String[5]; names[0] = "Alice"; names[1] = "Bob"; names[2] = null; names[3] = "Charlie"; names[4] = null; System.out.println("Counting null values using Stream API:"); // 배열을 Stream 으로 변환 long nullCount = Arrays.stream(names) // null 요소 필터링 .filter(Objects::isNull) // 나머지 요소 (null) 개수 세기 .count(); System.out.println("Total number of null elements: " + nullCount); } }다음은 새로운 내용입니다.
long nullCount = ... .count();: 스트림을 필터링하여null요소만 포함시킨 후count()터미널 연산을 호출합니다. 이 연산은 필터링된 스트림의 요소 수를long값으로 반환하며, 이를nullCount변수에 저장합니다.System.out.println("Total number of null elements: " + nullCount);: 이 줄은null요소의 최종 개수를 출력합니다.
HelloJava.java파일을 저장합니다.터미널에서 프로그램을 컴파일합니다.
javac HelloJava.java프로그램을 실행합니다.
java HelloJava다음 출력을 볼 수 있습니다.
Counting null values using Stream API: Total number of null elements: 2이 출력은 프로그램이 배열에서 두 개의
null요소를 올바르게 계산했음을 보여줍니다. Stream API 의filter()및count()메서드를 함께 사용하면null값을 포함하여 컬렉션에서 특정 유형의 요소 수를 세는 효율적이고 읽기 쉬운 방법입니다.
이제 Java 배열에서 null 값을 처리하는 세 가지 다른 방법을 배웠습니다. 각 요소를 확인하기 위해 전통적인 for 루프를 사용하는 방법, Stream API 를 사용하여 null 요소를 필터링하고 식별하는 방법, 그리고 Stream API 를 사용하여 null 요소를 필터링하고 개수를 세는 방법입니다. 이러한 기술은 NullPointerException을 방지하는 강력한 Java 코드를 작성하는 데 필수적입니다.
요약
이 랩에서는 다양한 접근 방식을 사용하여 Java 배열에서 null 요소를 확인하는 방법을 배웠습니다. 먼저, 배열을 반복하고 if 조건을 사용하여 각 요소가 null 값인지 명시적으로 확인하는 전통적인 루프를 구현했습니다. 이 방법은 null 을 식별하는 명확하고 기본적인 방법을 제공하며, 배열에서 null 처리에 대한 기본 개념을 이해하는 데 유용합니다.
그런 다음 null 감지를 위한 보다 현대적이고 간결한 기술을 탐구했습니다. 이 랩에서는 Java Stream API 를 활용하여 null 을 효율적으로 확인하는 방법을 보여주었습니다. 이 접근 방식은 스트림 연산을 사용하여 배열 요소를 처리하고 보다 기능적인 스타일로 null 의 존재를 확인합니다. 마지막으로, 배열 내의 null 요소 수를 세는 방법을 배워 null 값의 존재 범위를 정량화하는 방법을 배웠습니다. 이러한 방법은 Java 배열에서 null 을 처리하기 위한 다양한 수준의 표현력과 효율성을 제공합니다.



