s.equals(v) , Object.equals(s,v), s==v의 차이s.equals(v): 특정 객체의 메서드로서 객체의 내용을 비교하지만, 호출하는 객체가 null인 경우 NullPointerException이 발생할 수 있다.Object.equals(s,v): null-safe한 유틸리티 메서드로, 두 객체를 비교할 때 하나 또는 둘 다 null인 경우에도 안전하게 비교할 수 있다.s == v는 기본 데이터 타입(primitive types)일 때 실제 값을 비교하고, 참조 데이터 타입(reference types)일 때는 두 객체가 동일한 메모리 주소를 가리키는지 확인하는데, 해당 코드는 배열을 for문으로 하나씩 순회 하면서 기본 데이터 타입인 int를 비교하기 때문에 == 연산자로 값을 비교할 수 있다.→ (결론) 기본 데이터 타입을 비교할 때는 ==연산자사용, 객체 자체(reference type)을 비교할 때는 equals()랑 Objects.equals()를 사용하는데, 두 객체가 null일 때도 비교하고 싶다면 Objects.equals()를 쓴다!
buffer.write()와 buffer.flush()의 차이buffer.write()
write() 메서드는 데이터를 출력 스트림에 직접 쓰는 것이 아니라, 일시적으로 버퍼에 저장한다. 이 버퍼는 메모리 상의 공간으로, 데이터를 모아서 한 번에 출력 스트림에 쓰기 위해 사용된다.buffer.flush()
flush() 메서드는 현재 버퍼에 저장된 모든 데이터를 출력 스트림으로 강제로 내보낸다. 이를 통해 버퍼에 남아있는 데이터가 유실되지 않도록 한다.→ (결론) buffer.write()는 데이터를 버퍼에 쓰는 메서드이고, 버퍼에 있는 데이터를 실제로 출력하는 메서드는 buffer.flush()이다. BufferedWriter 객체의 close() 메서드를 호출하면, 스트림을 닫기 전에 자동으로 flush()가 호출된다. 따라서 flush()를 명시적으로 호출하지 않아도 스트림을 닫으면 남아있는 버퍼의 내용이 모두 출력 스트림으로 전송하게 된다!
getOrDefault()V getOrDefault(Object key, V defaultValuekey)에 대응하는 값이 맵에 존재하면 그 값을 반환하고, 그렇지 않으면 기본값(defaultValue)을 반환한다.0을 반환하여 쉽게 초기화할 수 있다.