StreamJava 8에서 도입된 데이터 처리 추상화 API컬렉션, 배열, 파일 등의 데이터 소스를 선언적이고 함수형 프로그래밍 스타일로 처리데이터의 흐름(flow)을 처리하는 데 중점데이터를 직접 저장하지 않음데이터를 읽어 필요한 연산을 수행연산이 데이터에 적용되지 않으며, 새로운 데이터 흐름을 생성 선언형 접근: 데이터 처리 과정을 간단하고 직관적으로 표현.함수형 프로그래밍 지원: 람다 표현식과 잘 어울림.원본 데이터 불변성 유지: 데이터를 안전하게 처리 가능.Lazy Evaluation: 성능 최적화 가능.단일 소비: 한 번 사용된 Stream은 재사용 불가.Lazy Evaluation (게으른 연산)Stream의 중간 연산은 실제로 결과를 즉시 반환하지 않습니다. 대신 최종 연산이 호출될 때 모든..
이름 없는 익명 함수(Anonymous Function)로, 값처럼 취급되어 변수에 저장되거나 함수의 매개변수, 반환값으로 사용 가능.Lambda의 역할일급 시민(First-Class Citizen)으로서의 함수: 함수 자체를 값처럼 다룸.고차 함수 구현: 함수를 매개변수로 받거나 반환값으로 제공 가능.순수 함수 표현: 상태를 변경하지 않고 동일한 입력에 동일한 출력을 제공.스트림 API 활용: 선언적으로 데이터 필터링, 매핑, 집계 등을 수행.Lambda의 장점코드 간결성: 익명 클래스를 대체하여 짧고 간결한 코드 작성 가능.가독성 향상: 함수의 동작에 집중 가능해 이해하기 쉬운 코드 작성.함수형 프로그래밍 지원: 고차 함수와 조합 가능, 선언적 프로그래밍 구현.병렬 처리 용이: 스트림 API와 결합하..
객체 생성1단계: 메모리 할당new 키워드를 사용하여 Heap 영역에 메모리 할당2단계: 생성자를 사용하여 객체 초기화클래스 이름과 괄호를 사용Date now = new Date(); 객체 사용메소드 호출 등 객체 제거원시 메모리 회수메모리 할당 해제 final 클래스슈퍼 클래스로 동작하도록 설계하지 않은 클래스를 파생하는 것은 위험할 수 있음final로 선언된 클래스에서는 서브 클래스를 파생할 수 없음Java의 String, StringBuilder등의 클래스는 final로 선언됨
배열 자체를 넘기면 pass by reference배열에 있는 요소를 넘기면 pass by valuepublic class Sample { public static void changeSomething(int i) { i++; } public static void main(String[] args) { int[] i = {0}; changeSomething(i[0]); System.out.println(i[0]); }}>> 0 Enum Enum 사용 예시public enum Day { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, ..
추상화 (Abstraction)추상화는 불필요한 것을 선택하고 제거하는 것 추상화(abstraction)는 대상에 대해 맥락에서 필요한 것에 대한 최소한의 형태가 남을 때까지 불필요한 것을 제거하는 전략입니다. 좋은 추상화는 중요하지 않은 세부 사항을 제거하고 중요한 사항들에 집중할 수 있도록 합니다. 캡슐화 (Encapsulation) 데이터와 메소드의 결합데이터와 메소드를 하나의 캡슐로 결합캡슐 경계는 내부와 외부를 결정캡슐화(Encapsulation)에는 중요한 두 가지 관점이 있습니다.데이터와 기능을 단일 개체로 결합개체의 모든 멤버(메소드, 변수 등)에 대한 접근 가시성 제어 왜 캡슐화를 해야 하는가?제어 허용메소드를 통해서만 접근 가능하도록변경 허용private 데이터 타입이 변경되어도 ..
public class Sample { public static void method1() { System.out.println("Method 1"); } public void method2() { System.out.println("Method 2"); } public static void main(String[] args) { method1(); method2(); } } 위와 같이 메서드를 static으로 선언하거나 그냥 선언할 경우가 있는데,method1()은 정상 작동하지만, metho2()는 Cannot make a static reference to the non-static method metho..