본문 바로가기

Java21

[Java 심화] 스트림(Stream) (매-우 기초적인 부분만) 스트림(Stream) 배열, 컬렉션 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있게 해주는 반복자 스트림을 사용하게되면 List, Set, Map, 배열 등 다양한 데이터 소스로부터 스트림을 만들 수 있고 표준화된 방법으로 다룰 수 있게된다 데이터 소스를 다루는 다양한 메소드를 제공하기 때문에 잘만 활용한다면 많은 데이터에 복잡한 연산을 수행하면서도 가독성과 재사용성이 높은 코드를 작성할 수 있다 선언형으로 데이터 소스를 처리하는데 무슨 말이냐면, 선언형 프로그래밍 : 어떻게 수행하는지 보다는 무엇을 수행하는지 관심을 두는 패러다임 이라고 할 수 있다 명령형 방식에서는 절차대로 따라가야 코드를 이해할 수 있는 반면 선언형 방식에서는 코드를 작성하면 내부 동작 원리를 모르더라도 코드가 무슨 일을 하.. 2022. 6. 6.
[Java 심화] 람다(Lambda) 람다(Lambda) 객체 지향 프로그래밍 언어 중 하나인 자바는 기존의 함수형 프로그래밍들보다 현업에서 많이 사용하고 선호하는 경향이 있었다 그러나 병렬 처리, 이벤트 지향 프로그래밍에 함수형 프로그래밍이 다시금 손을 들고 있는 추세라서 자바는 기존의 객체 지향 프로그래밍에 함수형 프로그래밍을 첨가하며 새로운 패러다임을 만들었다 이른 바, 람다식(Lambda Expressions)을 지원하면서 기존 코드 패턴이 달라진 것이다 수학에서 쓰이는 람다 계산법에서 사용된 식이고 이를 프로그래밍에 도입했다는 것 프로그래밍에선, 익명 함수를 생성하기 위한 식으로 객체 지향 언어라기보다는 함수 지향 언어다 자바에서 이걸 수용한 이유는 자바 코드가 간결해지고 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집.. 2022. 6. 6.
[Java 심화] 애너테이션(Annotation) (소스코드 미수록) 애너테이션(Annotation) 주석과 같은 개념 주석이나 애너테이션 둘다 소스 코드에는 영향을 주지 않고 정보를 제공한다 차이점이라고 한다면 누구에게 정보를 제공하는가 이다 주석은 소스코드를 읽는 사람에게 정보를 제공하는 것이고 애너테이션은 프로그램에게 정보를 제공하는 것이다 컴파일러에게 문법 에러를 체크하도록 정보를 제공하거나 프로그램 빌드할 때 코드 자동 생성할 수 있도록 정보를 제공하고 런타임에 특정 기능을 실행하도록 정보를 제공하는 역할을 하고 있다 표준 애너테이션 @Override 컴파일러에게 메소드를 오버라이딩하는 것이라 알림 : 만약 오타라도 나서 오버라이딩이 안될 경우에 에러를 발생시켜서 알려달라고 마크해놓는 것이라고 보면 편하다 @Deprecated 앞으로는 사용하지 않을 대상이라는 것.. 2022. 6. 1.
[Java 심화] Enum Enum 열거형 서로 관련이 있는 것들만 모아서 번호를 매겨놓은 것, 서로 연관된 상수들의 집합이다 enum 열거형이름 { 상수명1, 상수명2 . . . } 상수명은 대소문자 다 작성가능하지만 관례적으로 대문자로 작성한다 열거하는 상수도 객체이기 때문에 enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} 위의 Day는 7개의 열거 객체로 구성된다 enum에 정의된 상수는 클래스의 static 변수를 참조하는 것과 동일한 방법으로 사용 가능하다 열거형이름.상수명 enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} public class Enum.. 2022. 6. 1.
[Java 컬렉션] 내부 클래스 (Inner Class) 내부 클래스 (Inner Class) 클래스 내부에 선언된 클래스 외부 클래스와 내부 클래스가 서로 연관 있을 때 사용하며 내부 클래스는 외부 클래스의 멤버들을 쉽게 접근할 수 있고 코드 복잡성을 줄일 수 있다 선언하는 위치나 예약어에 따라 크게 4가지 유형으로 구분할 수 있다 종류 선언 위치 사용 가능한 변수 인스턴스 내부 클래스 (instance inner class) 외부 클래스의 멤버변수 선언위치에 선언(멤버 내부 클래스) 외부 인스턴스 변수, 외부 전역 변수 정적 내부 클래스(static inner class) 외부 클래스의 멤버변수 선언위치에 선언(멤버 내부 클래스) 외부 전역 변수 지역 내부 클래스(local inner class) 외부 클래스의 메소드나 초기화 블럭 안에 선언 외부 인스턴스.. 2022. 6. 1.
[Java 컬렉션] 컬렉션 프레임워크(Collection Framework) Java 컬렉션 프레임워크 구조 제네릭 부분에서도 언급한 거지만 배열을 예시로 들어보면 배열을 사용하는데 있어서 여러 비효율적인 문제가 생기는데 크기가 고정적이라는 치명적인 단점이 있다 배열의 크기는 생성할 때 결정되고 그 크기를 넘어가게 되면 더는 데이터를 저장할 수 없다 그리고 데이터를 삭제하기라도 하면 그 인덱스 데이터가 비어있어서 메모리의 낭비가 굉장히 심하다 그래서 익히 알려져있는 여러 자료구조를 바탕으로 객체나 데이터들을 효율적으로 관리할 수 있는 자료구조들을 만들어놓은 이 라이브러리를 컬렉션 프레임 워크라고 한다 컬렉션 프레임워크의 주요 인터페이스는 List, Set, Map 정도가 있다 List, Set은 객체 추가, 삭제, 검색하는 방법에 공통점이 많다 그래서 이 인터페이스들의 공통된 메.. 2022. 6. 1.