본문 바로가기

Develop/Java41

.toString() vs String.valueOf() Object 형태의 값을 String으로 변환할 때, 사용하는 메서드들이다. 하지만, 두 메서드는 다음과 같은 차이점이 존재한다. toString() 대상 값이 null이면 Null PointerException(NPE)이 발생한다. String.valueOf() 매개 변수가 null이면 문자열 "null"을 만들어서 반환한다. 2022. 9. 30.
Null과 isEmpty()의 차이 ArrayList example = new ArrayList(); 위 코드와 같이, example이라는 이름을 가진 ArrayList를 하나 생성했다고 전제하자. 1. Null example이라는 인스턴스가 생성되지 않은 상태로, example이 메모리에 아무런 주소값도 참조하지 않은 상태이다. 2. isEmpty() example이라는 인스턴스가 생성되었지만, example.size() = 0인 상태이다. 즉, ArrayList에 ""이라는 값이 들어가 있는 상태이다. ArrayList에 값이 없을 경우, Null로 체크하면 안되고, isEmpty()로 체크하는 것이 맞다. 2022. 9. 24.
isEmpty()와 isBlank() 차이 isEmpty() Java 6 이후 추가된 메서드이다. 문자열의 길이가 0인 경우에, true를 반환한다. isBlank() Java 11 이후 추가된 메서드이다. 문자열의 길이가 0이거나, 빈 공백으로만 이루어진 문자열인 경우에, true를 반환한다. 2022. 9. 20.
컬렉션과 스트림 차이점 컬렉션 스트림 주된 목적 특정 자료구조로 데이터를 저장하는 것 데이터 가공 처리 데이터 수정 여부 데이터 추가 및 삭제 가능 데이터 추가 및 삭제 불가능 오로지 데이터 소스를 읽어서 소비하기만 함 Iteration 형태 for문 같은 걸로 외부 반복 operation 메서드 내부에서 보이지 않게 반복 탐색 횟수 여러 번 탐색 가능 한 번만 탐색 가능 데이터 처리 방식 Eager Lazy & Short-Circuit 2022. 9. 18.
Map 인터페이스를 구현한 클래스에서 Iterator 사용하기 모든 Collection 인터페이스를 구현하는 클래스(ArrayList, HashSet, TreeSet...)들은 iterator() 메서드를 사용할 수 있다. 그러나, Map 인터페이스를 구현하는 클래스(HashMap, TreeMap...)들은 사용이 불가하다. 그래서, 다음 예시 코드처럼 Set의 형태로 바꾼 후, iterator() 메서드들을 사용하도록 한다. 자료 구조의 체계를 다시 확인해보고 싶다면 https://jaeyoungb.tistory.com/103를 참고하자. 다음 예시 코드를 참고해서 사용해보자. 2022. 9. 18.
요소를 순회하는 Iterator 요소의 순회란 컬렉션 프레임워크에 저장된 요소들을 하나씩 차례대로 참조하는 것이다. 순서가 있는 List 인터페이스의 경우는 따로 Iterator를 사용하지 않고 get() 메서드로 순회할 수 있다. Set 인터페이스의 경우는 get() 메서드가 제공되지 않으므로, Iterator를 활용해서 순회한다. 주요 메서드 boolean hasNext() : 이후에 요소가 있는지 체크하는 메서드, 있다면 true를 반환한다. E next() : 이후의 요소를 반환한다. ArrayList에서 iterator() 메서드를 활용한 요소 순회 및 요소 제거 예시 코드 일부분이다. 참고해서 사용해보자. 2022. 9. 18.
컬렉션 프레임워크(Collection Framework) 컬렉션 프레임워크란 프로그램 구현에 필요한 자료구조를 구현해놓은 JDK 라이브러리로, java.util 패키지에 구현되어 있다. Collection 인터페이스 하나의 객체를 관리하기 위한 메서드가 선언된 인터페이스이다. 하위에 List, Set 인터페이스가 존재한다. List 인터페이스 객체를 순서에 따라 저장하고 관리하는데 필요한 메서드가 선언된 인터페이스이다. 자료구조 리스트(배열, 연결리스트)의 구현을 위한 인터페이스이다. 중복을 허용한다. Set 인터페이스 순서와 관계 없이 중복을 허용하지 않고 유일한 값을 관리하는데 필요한 메서드가 선언된 인터페이스이다. 저장된 순서와 출력되는 순서는 다를 수 있다. Map 인터페이스 쌍(pair)으로 이루어진 객체를 관리하는데 사용하는 메서드들이 선언된 인터페.. 2022. 9. 18.
문자열 비교 - 비교 연산자(==)와 equals() 메서드 차이 문자열을 비교하는 방법에는 비교 연산자(==)를 사용하는 방법과 equals() 메서드를 사용하는 방법 등이 있다. 먼저, equals() 메서드를 활용해서 문자열을 비교하는 예시 코드를 보자. equals() 메서드는 최상위 클래스인 Object 클래스에 정의되어 있는 메서드이다. 일반적으로, 문자열을 비교할 때는 이 equals() 메서드를 쓰는게 안정적이다. 왜인지는, 다음 비교 연산자를 통해 문자열을 비교하는 방법을 보면서 확인하자. 비교 연산자 == 는 같은 객체인지를 비교한다. str4와 str5는 둘 다 동일한 문자열 "Hi"를 가리키기 때문에, 같은 객체이다. 그러나, str6 같은 경우에는 new String()으로 객체를 생성했기 때문에, 위 두 문자열과는 다른 객체라고 할 수 있다. .. 2022. 9. 15.
break의 범위 반복문이나 조건문을 사용하면서, break문을 한 번쯤은 봤을 것이다. 문득, 코드를 짜면서 break가 반복문이나 조건문을 빠져나오는 건 알겠는데, 어떤 범위까지 유효할까 라는 생각이 들었다. 평상시에 break문을 보면, 코드를 대충 이해하고 '아 여기 break문이 있네? 하면서 뭐 이쯤에서 끝나는 거겠지' 했다. 알고리즘 문제를 풀면서, break문을 신중하게 써야될 때가 생기니까, 정확한 범위가 알고 싶어졌다. 다음 예시 코드를 보면서, break문의 유효 범위를 알아보자. break의 범위를 정확히 알고자, 이중 for문으로 예시를 들었다. 다음은 코드의 결과이다. 원래 출력은 위 결과가 i가 200이 되기 전까지 반복되는 출력이 나오지만, 출력 모두를 캡쳐해 담을 수가 없어서 안쪽 루프가 한.. 2022. 9. 13.