반응형

java 32

[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 프로그래밍] 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 프로그래밍] 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 프로그래밍] 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

[Java9 프로그래밍] 03. 변수와 타입의 이해 2

Java에서 변수명을 짓는 방법 변수의 의미와 목적이 분명히 나타나야 한다. 비슷한 이름은 사용하지 않는다. 단축어 사용을 지양한다. 숫자로 시작할 수 없다. 띄어쓰기를 할 수 없다. 특수기호를 사용하지 않는다. 예약어를 사용하지 않는다. Camel Case를 지킨다. => 단어와 단어사이엔 대문자로 표시. 대소문자를 구분한다. Camel Case 사용 변수명의 머리글자는 소문자로 시작한다. 다음 나타나는 단어의 머리글자는 대문자로 한다. ex) int resultOfCalculateTwoNumbers = 10 + 50; => 장황해보일순 있지만 복잡한 애플리케이션과 비즈니스에선 이런식으로 써주는게 고수로 가는 길이다. UTF-8 인코딩이란? 유니코드 한 문자를 나타내기 위해 1바이트에서 4바이트까지를 ..

Programming/Java 2020.03.13
반응형