Stream은 다양한 데이터를 다루기 위한 라이브러리이다. Stream을 이용하면 배열뿐만 아니라 Collection도 다룰 수 있다. Stream을 활용한 연산 방법은 중간 연산과 최종 연산으로 나눌 수 있다. ex) stream.distinct().sorted().forEach(System.out::println); 위 예제에서 distinct()와 sorted()는 중간 연산이고 forEach()는 최종 연산이다. 보이는 것과 같이 중간 연산은 연속해서 사용할 수 있고 최종연 산은 한 번만 가능하다. 이제 Stream의 특징을 보자 1) 일회성이다. stream.sorted().forEach(System.out::println); stream.distinct().forEach(System.out::..
toString 메서드는 객체에 대한 정의를 보여주기 위해 존재하는 메서드로 문자열을 반환한다. 이런 toString 메서드는 Object 클래스의 메서드로써 Java의 모든 클래스는 Object 클래스를 상위 클래스로 두고 있기 때문에 모든 클래스는 toString 메서드를 갖게 된다. 만약 toString 메서드를 재정의(override) 하지 않고 그냥 사용하게 된다면 아래와 같은 문자열을 반환하게 된다. getClass().getName() + '@' + Integer.toHexString(hashCode()) // 클래스의 이름 + @ + hashCode ex) Test@2e817b38 이렇게 재정의되지 않은 toString 메서드는 유의미한 내용이 나오지 않는다. 때문에 사람이 읽기 쉽고 어떤..
let과 const는 ES6 (2015)에서 추가됐다. let과 const의 차이는 크지 않다. const는 상수이며 선언 시 초기화가 반드시 필요하고 let은 변수이며 초기화를 반드시 할 필요는 없으며 이 외에는 같다고 보면 된다. const a; // SyntaxError const b = 1; // ok b = 3; // TypeError let c; // ok let d = 1; // ok d = 3 // ok 이제 var과의 차이를 보면 let, const는 재선언이 불가능하고 var는 가능하다. let a = 1; let a = 2; // SyntaxError var b = 1; var b = 2; // ok let, const는 선언된 블록에 영향을 받는다. var는 선언된 함수에 영향을 받..