본문 바로가기
728x90

[스파르타코딩클럽]/Java 문법 종합반13

Chapter 13. 모던 자바(람다, 스트림, Optional) 함수형 프로그래밍 순수 함수: 수학의 함수처럼 특정한 데이터에 의존하지 않고, 관련없는 데이터를 변경하지도 않으며, 결과값이 오직 입력값에만 영향을 받는 함수 효용 검증이 쉽다 성능 최적화가 쉽다 동시성 문제를 해결하기 쉽다 모던 자바 : 자바 8 변경점 함수형 프로그래밍 아이디어 1: 함수를 일급 값(일급 객체)으로 일급 객체 특징 함수에 인자로 넘길 수 있다. 함수의 결과로 반환할 수 있다. 값을 수정할 수 있다. 값을 변수에 대입할 수 있다. 결론: 메서드 참조 기능 도입 함수형 프로그래밍 아이디어 2: 람다(익명함수) 익명함수란 이름이 없는 함수를 뜻하며 일급 객체로 취급됨 함수를 값으로 사용할 수 있으며 파라미터에 전달 가능 연산 가능 스트림 데이터 처리연산을 지원하도록 소스에서 추출된 연속된 .. 2023. 10. 18.
Chapter 12. 스레드 프로세스: 운영체제로부터 자원을 할당받는 작업의 단위. "실행 중인 프로그램" OS가 프로세스를 할당할 때 프로그램 Code와 Data, 메모리 영역(Stack, Heap)을 함께 할당 프로세스 구조 Data: 프로그램이 실행 중 초기화된 데이터를 저장하는 공간(전역 변수, static 변수, 상수) Stack: 지역 변수, 매개변수 리턴 변수를 저장하는 공간 Heap: 동적으로 필요한 변수를 저장하는 공간 스레드: 프로세스가 할당받은 자원을 이용하는 실행의 단위 프로세스가 작업 중인 프로그램에서 실행 요청이 들어오면 스레드를 만들어 명령 처리 스레드는 프로세스 내 메모리공간(Heap)을 공유받음 스레드는 자신만의 메모리공간(Stack)도 할당받음 Java 스레드: JVM 프로세스 안에서 실행되는 스레드.. 2023. 10. 18.
Chapter 11. 제네릭(Generic) 제네릭의 효용 중복되거나 필요없는 코드를 줄여줌 그러면서도 타입 안정성을 해치지 않음 자바에서는 똑같은 로직을 수행하는 함수를 타입을 지정해야 한다는 이유로 여러번 구현해야 함 -> Object를 사용? 이 경우 타입 안정성을 침해받게 됨 -> 단항 연산자를 사용 x. 두 객체의 타입이 다르다면? 로직과 다른 순서의 타입들이 들어오게 된다면? 등등 제네릭 문법 예시로 살펴보기 // 1. 2. public class Generic { // 3. private T t; public T get() { return this.t; } public void set(T t) { this.t = t; } public static void main(String[] args) { // 4. Generic stringGen.. 2023. 10. 17.
Chapter 10. 예외처리 오류(Error): 일반적으로 회복이 불가능한 문제 시스템 레벨에서, 또는 주로 환경적인 이유로 발생 에러가 발생한 경우 어떠한 에러로 프로그램이 종료되었는지 확인하고 대응 예외(Exception): 일반적으로 회복이 가능한 문제 코드레벨에서 할 수 있는 문제상황에 대한 대응은 "예외처리"에 속함 예외의 종류 코드실행 관점에서 컴파일: 프로그래밍 언어로 작성한 코드를 컴퓨터가 이해할 수 있는 언어로 변환하는 것(.java -> .class) 컴파일 에러: 언어의 규칙을 지키지 않아서 발생. 문법에 맞게 다시 작성 런타임 에러: 컴파일은 잘 되었지만 프로그램 실행 도중 발생 예외처리 관점에서 확인된 예외(Checked Exception): 컴파일 시점에 확인하는 예외. 반드시 예외 처리를 해야함. 미확인된.. 2023. 10. 17.
Chapter 9. 인터페이스 인터페이스의 역할: 상속 관계가 없는 다른 클래스들이 메서드를 구현해야 할 때 인터페이스는 구현 클래스들의 동일한 사용 방법과 행위를 보장해줄 수 있음 인터페이스 선언: public, default 접근 제어자 지정 가능 public interface 인터페이스명 { } 인터페이스 구성 모든 멤버변수는 public static final이어야 하며, 생략 가능 모든 메서드는 public abstract이어야 하며, 생략 가능 생략된 제어자는 컴파일러가 자동으로 추가 public interface 인터페이스명 { public static final char A = 'A'; static char B = 'B'; final char C = 'C'; char D = 'D'; void turnOn(); // pu.. 2023. 10. 17.
Chapter 8. 상속 클래스 간의 관계와 상속 부모 클래스의 필드와 메서드를 자식 클래스에게 물려줌 코드의 중복 제거, 재사용성 증가로 생산성과 유지보수성에 유리해짐 상속 public class 자식클래스 extends 부모클래스 { } 클래스간의 관계 상속관계: is - a ("~은 ~이다.") 포함관계: has - a ("~은 ~을 가지고 있다.") Java는 다중상속을 허용하지 않음 final 클래스: final class 클래스명으로 선언 더 이상 상속할 수 없음 final 메서드: final 반환타입 메서드명()으로 선언 더 이상 오버라이딩 할 수 없음 Object 클래스: Java 내 모든 클래스들의 최상위 부모 클래스 모든 클래스는 Object의 메서드를 사용할 수 있음 부모 클래스가 없는 자식 클래스는 컴파일러.. 2023. 10. 16.