본문 바로가기

Java8

[Java] Optional Optional 0. 시작하기에 앞서 - 출처 이 글은 책 "자바의 정석" 과 다음 3개의 링크를 참고해서 요약해 쓰는 글이다. 더 자세한 정보를 얻고 싶다면 "자바의 정석"과 다음 링크를 읽어보는 것을 추천한다(내 글보다 훨씬 좋다!). 자바8 Optional 1부: 빠져나올 수 없는 null 처리의 늪 자바8 Optional 2부: null을 대하는 새로운 방법 자바8 Optional 3부: Optional을 Optional답게 또 람다식과 Stream 에 대한 기본 지식이 없으면 이 글을 읽는 의미가 반감된다. 람다식과 스트림에 대해 잘 모른다면 아래 링크를 읽어본 뒤 이 글을 읽기 바란다. 람다식(Lambda Expression) Stream 1. java.lang.Optional Optional.. 2022. 10. 19.
[Java] Stream Stream 0. 시작하기에 앞서 Stream 을 더 깊이 이해하고, Stream 의 장점을 피부로 느끼기 위해서는 람다식(Lambda Expression) 에 대한 이해가 필요하다. 람다식에 대해서 잘 모른다면 아래 링크를 참고하길 바란다. 람다식(Lambda Expression) 1. Stream 이란 무엇인가? 스트림은 단어 그대로 데이터의 흐름이다. JDK 1.8 에서 스트림이 등장하기 전에는, 많은 양의 데이터를 다룰 때 Collection 이나 배열에 데이터를 담고, for 문이나 Iterator 를 사용해서 각각의 데이터에 접근했다. 하지만 for 와 Iterator 를 사용해 접근해서 데이터를 처리하는 코드는 너무 길고, "반복을 위한 코드" 때문에 "데이터를 처리 하는 핵심 로직"을 한 .. 2022. 10. 13.
[Java] 람다식(Lambda Expression) Lambda Expression 서론 - 함수형 프로그래밍 언어 Java는 객체지향언어로 만들어졌지만, JDK 1.8 부터 추가된 다양한 기능으로 인해 객체지향언어인 동시에 함수형 언어가 되었다. Lambda expression, Stream 등을 잘 활용하면 Java에서도 함수형 프로그래밍이 가능하다. 함수형 언어가 무엇인지, 그리고 함수형 언어의 장점이 무엇인지 궁금하다면 아래 링크를 참조하면 되겠다. 함수형 프로그래밍 언어가 대체 무엇일까? 함수형 프로그래밍이란? 위 링크들의 핵심 키워드만 정리하자면 다음과 같다. 순수 함수 (함수 외부로 Side-effect가 없음) Stateless (함수에 상태가 존재하지 않음. 따라서 같은 인자가 들어오면 항상 같은 결과를 반환함) Immutable (데이터.. 2022. 10. 12.
Exception 관련 클래스의 계층 구조 (Unchecked Exception/Checked Exception) 1. Exception class와 Error class의 계층 구조 Exception class와 Error class의 계층 구조는 다음과 같다. 두 클래스 모두 Throwable class를 상속받았다. Error가 발생하면 프로그램의 비정상 종료를 막을 수 없다. 하지만 Exception은 예외 처리를 통해 프로그램의 비정상 종료를 막을 수 있다. 2. RuntimeException class Exception class의 자식 클래스는 크게 RuntimeException과 나머지 클래스로 구분할 수 있다. RuntimeException class와 그 자식 클래스들은 주로 프로그래머의 실수에 의해서 발생될 수 있는 예외들이다. 배열의 범위를 벗어난다던가(ArrayIndexOutOfBoundsEx.. 2022. 3. 31.
변수의 초기화 클래스의 멤버 변수의 초기화 방법에는 3가지 종류가 있다. 명시적 초기화(Explicit initialization) 생성자(Constructor) 초기화 블럭(Initialization block) 인스턴스 초기화 블럭 클래스 초기화 블럭 1. 명시적 초기화(Explicit initialization) 변수를 선언과 동시에 초기화 하는 방법 class Car { int door = 4; Engine e = new Engine(); } 2. 생성자(Constructor) class Car { int door; Engine e; Car() { door = 4; e = new Engine(); } } 3. 초기화 블럭(Initialization block) 클래스 초기화 블럭: 클래스변수의 복잡한 초기화에 .. 2022. 1. 20.