반응형

STEP 12

[Java9 프로그래밍] 16. 스트림 활용과 Optional

스트림(Stream)이란? filter(중간연산) : predicate를 인자로 받아서 true인 요소만을 반환 스트림 API의 활용 - 필터링/슬라이싱 distinct(중간 연산) : 유일한 값을 반환한다. limit (중간 연산) : 지정된 숫자만큼 반환한다. => 처음 3개까지만 뽑아서 새로운 스트림 만들어라. => 최종 연산에는 우리가 사용할 데이터 타입으로 리턴해준다. 스트림 API의 활용 - 매핑 map (중간 연산) : 스트림의 T 객체를 U로 변환. 파라미터로 Function를 사용. => map은 기존의 스트림에서 엘레먼트의 수는 그대로 유지하되 엘레먼트의 성격이 달라짐. 그 전엔 Dish라는 스트림이었는데 map 연산을 거치면 map의 파라미터로 들어오는 함수가 각각의 엘레먼트에 어플라..

Programming/Java 2020.03.30

[Java9 프로그래밍] 15. 스트림

스트림이란? 스트림(Stream)의 정의 Java8부터 추가된 컬렉션(배열 포함)의 저장 요소(Element)를 하나씩 참조해서 람다식(함수적-스타일, functional-style)으로 처리할 수 있도록 해주는 반복자 => 기존엔 포문을 돌려서 words라는 String 컬렉션을 처리할 때 반복문을 사용해서 엘레먼트를 하나씩 접근해서 처리했었음. => Stream 방식을 사용하면 word를 스트림으로 바꾼 후 (words.stream()) filter 함수를 적용해 파라미터로 바로 람다식이 들어간다. 필터링한 후 카운트를 해주게 된다. => words의 엘레먼트가 굉장히 많을 경우 parallelStream을 통해 병렬 처리가 가능하다. 병렬 처리는 cpu의 코어를 이야기한다. 컬렉션을 4개로 쪼개서 ..

Programming/Java 2020.03.30

[Java9 프로그래밍] 14. 제네릭과 컬렉션

제네릭 다양한 타입에도 동작하는 메소드와 클래스 작성이 필요할 때가 있음 ArrayList는 임의의 클래스 T를 요소로 저장 - ArrayList의 클래스 : 제네릭 클래스 - T : 타입 파라미터 제네릭의 타입 파라미터(T)는 기본 타입은 지원하지 않음 제네릭 클래스 타입 파라미터를 한 개 이상 받는 클래스 키/값 쌍을 저장하는 클래스 class Entry { private K key; private V value; public Entry(K key, V value) { this.key = key; this.value = value; } public K get Key() { return this.key; } public V getValue() { return this.value; } } 클래스 뒤 안에..

Programming/Java 2020.03.29

[Java9 프로그래밍] 13. 예외 처리

예외 처리를 해주는 상황 : 메소드가 해야 할 일을 수행할 수 없는 상황에 부딪힐 때 예외와 에러는 다르다. 에러는 복구가 불가능하고, 예외는 복구가 가능한 에러다. 예외라는것은 메소드에서 발생하는데, 이 때 에러코드 (001, 002 등)을 반환한다. 자바에서 쓰이는 예외처리 메커니즘은 C++, 파이썬 등의 언어에서도 유사하게 쓰인다. 예외 클래스 계층 구조 우리가 처리하는 대상은 Exception이다. Exception의 종류 RuntimeException (예외처리가 옵션이다) checked exception (반드시 예외처리가 필요) 예외 처리 방식 메소드 내부에서 예외가 발생할 때 처리할 수 있는 두 가지 방식 예외를 직접 처리 (try ~ catch 사용) - try를 사용하여 예외를 직접 잡..

Programming/Java 2020.03.21

[Java9 프로그래밍] 12. 람다 표현식

함수형 인터페이스 Comparator 인터페이스 int compare(T first, T second); // T는 어떠한 타입이 와도 된다는 이야기. Runnable 인터페이스 void run(); // thread에서 많이 사용한다. 사용자 인터페이스 콜백 void handle(ActionEvent e); 함수형 인터페이스란? 추상 메소드 하나만 포함하는 인터페이스 Comparator 인터페이스 예제 Comparator 인터페이스를 구현한 클래스 class LengthComparator implements Comparator { public int compare(String first, String second) { return first.length() - second.length(); } } =>..

Programming/Java 2020.03.21

[Java9 프로그래밍] 11. 인터페이스

인터페이스 선언 서비스 공급자(서버)와 사용자(클라이언트) 간의 계약을 표현하는 메커니즘 인터페이스 구성 필드, member variable 인터페이스에서 정의된 모든 필드는 final static이 생략된 상수로 강주된다. 메소드 추상 메소드 : 반드시 구현 클래스에서 구현 필요 디폴트 메소드 : 구현클래스에서 구현 필요 없음(디폴트로 사용한다는 의미) 정적 메소드 : static 메소드, 객체 없이 바로 호출 가능 => 원래는 추상메소드만 가능했으나 java8에 와서는 디폴트 메소드와 정적 메소드가 추가되고 java9에 와서 private 메소드까지 추가 가능해짐. public interface shoppingService { // fields double TAX_RATE = 0.005; // abs..

Programming/Java 2020.03.21

[Java9 프로그래밍] 10. 상속

상속 - 클래스 확장 기존의 클래스들을 효율적으로 재사용하여 프로그래밍을 하는것이 중요하다. 여러 클래스들을 재사용하는 방안으로는 상속 결합 슈퍼클래스(상속을 주는 부모클래스)와 서브클래스(상속을 받는 자식클래스) Employee 클래스의 몇 가지 기능을 보유하면서 관리자가 어떻게 다른지 명시 extends를 통해 슈퍼클래스를 상속받는다. public class Manager extends Employee { 추가된 필드 추가된 메소드 또는 오버라이딩된 메소드 } => Employee 클래스에 있는 모든 필드와 메소드를 Manager 클래스에 가져온다. 서브 클래스 메소드 정의와 상속 Manager 클래스에 상여금 인스턴스 변수와 메소드 추가 public class Manager extends Emplo..

Programming/Java 2020.03.21

[Java9 프로그래밍] 07. 함수(메소드)

함수와 메소드 Java에서 함수와 메소드는 동일하게 사용 메소드가 좀더 기술적으로 맞는 용어 클래스 내부에 있는 함수를 특별히 메소드라고 함 (자바는 모든 것이 클래스로 구성) main 메소드가 길어지면 클래스로 분리 또는 여러 함수로 분리 가능 메소드 구조 반환값의 타입 (없으면 void) 메소드 이름 파라미터 타입과 이름 메소드 구현부 - 구현할 내용 작성 반환할 결과가 있으면 return public class 클래스 { 접근제한자 반환타입 메소드명 (파라미터타입 파라미터명, ,,,) { …수식… return 반환변수 혹은 값 혹은 수식 } } => 접근제한자 : 메소드는 클래스 내부에서 정의가 되는데, 메소드가 모든 사람이 사용할 수 있는지, 특별한 사람만 사용할 수 있는지 메소드 사용 권한과 관..

Programming/Java 2020.03.13

[Java9 프로그래밍] 05-06. 데이터 구조, ArrayList, Map

배열의 선언과 초기화 배열 : 여러개의 데이터를 한꺼번에 처리할 때 사용 char[] arrayVar = new char[7]; // => 캐릭터 배열 타입 //=> 7개짜리 캐릭터 배열을 만든다. => 네모 하나가 char 타입의 변수다. 7개가 들어가는 캐릭터 배열을 만들었다. 빈 배열. 크기만 할당. 배열에 값 넣기 arrayVar[2] = ‘c’; // 2번 인덱스에 'c' 문자 할당 arrayVar = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’}; // 모든 문자 할당 배열 안의 하나하나를 element/item, 요소라고 말한다. Java에서는 배열을 생성하면 엘레먼트의 값이 디폴트 값으로 초기화됨. Int[] arrayVar = new int[7]; => 인트형 배열의 경..

Programming/Java 2020.03.13

[Java9 프로그래밍] 04. 제어 흐름 (Control Flow)

분기와 루프 구조적으로 프로그래밍을 지원하는 if (분기), for (루프, 반복) 과거에는 goto라는 분기문을 사용했다. 특정 라인으로 바로 점프할 수 있지만 코드가 복잡해지면서 코드의 유지보수가 힘들어짐. 이것을 수학적으로 증명한 것이 구조적 프로그래밍. 문법은 C++과 자바스크립트, 파이썬, Kotlin, Swift와 유사. 분기, Branching if문은 괄호 안에 조건이 들어가고, 그 뒤에 한 문장 또는 중괄호로 감싼 문장이 옴. if (boolean 혹은 condition){ statement; } 비교 연산자의 결과 값은 모두 boolean 타입 크다 : x>y 작다 : x=y 작거나 같다 : x 이런 비교연산자의 결과값은 항상 참이나 거짓, boolean타입이다. age변수의 데이터를 ..

Programming/Java 2020.03.13
반응형