반응형

Programming/Java 25

[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 프로그래밍] 09. 자바 객체지향 - more

Static 클래스에 선언된 메소드나 멤버변수는 반드시 객체화시켜야 사용 가능 메소드의 사용 조건 Calculator(클래스) calculator(객체) = new Calculator( 10, 50 ); (생성자) int result = calculator.f (50); => calculator 객체를 사용해서 Calculator 클래스 내부의 f 메소드를 호출. f(x) 메소드를 인스턴스화 시키지 않고 사용하고 싶다면, static을 사용 (객체 변수를 만들고싶지 않다면 = 인스턴스화 시키지 않고 싶다면) static method public class Calculator { public static int f (int x) { } } => 이렇게 되면 객체 만들지 않고 바로 클래스에 접근할 수 있다...

Programming/Java 2020.03.19

[Java9 프로그래밍] 08. 객체지향 모델링

객체지향이란? 데이터 타입을 별도로 만들어 데이터를 처리한다. 객체(Object)로 프로그램을 작성 전체 어플리케이션을 객체로 분리하여 보델링 ex) 학생 관리타입을 만들고자 한다. 학생의 학번, 이름, 주소, 현재 학년 등에 대한 정보를 가지고 있는게 ‘학생’이다. 학생에 대한 이러한 정보를 하나의 타입에 넣어서 캡슐화시켜서 만든것이 타입, 객체다. 홍길동이라는 학생은 이름이 홍길동, 나이가 20, 성별 남자, 주소는 서울이다. 이 네가지 정보를 가지고 있는 것이 홍길동이라는 객체다. 이 학생 개개인의 객체를 만들기 위해서는 이름, 나이, 성별, 주소 데이터를 가지고 있어야 함. 모든 객체들이 똑같은 타입, 똑같은 구조로 만들어지는 것을 지원하는게 “클래스”이다. 자바는 클래스와 객체 모두를 사용한다...

Programming/Java 2020.03.13

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

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

Programming/Java 2020.03.13
반응형