본문 바로가기

분류 전체보기274

Kotlin - null 가능성, lateinit ,lazy Kotlin - null 가능성, lateinit, lazy null 가능성기본적으로 객체를 불변으로 보고 null값을 허용하지 않습니다.null값을 호용하려면 별도의 연산자가 필요하고 null을 허용한 자료형을 사용할 때도 별도의 연산자들을 사용하여 안전하게 호출해야 합니다. null 허용?코틀린에서 기본적으로 null 값을 허용하지 않습니다 .따라서 모든 객체는 생성과 동시에 값을 대입하여 초기화 해야합니다. 아래 코드는 초기화 하지 않아 에러가 발생합니다. val a:String에러 Property must be initialized or be abstractCompilation Error 다음 코드는 null 값으로 초기화 해서 에러가 발생합니다. val a: String =nullNull can.. 2019. 1. 3.
Kotlin - 인터페이스 Kotlin - 인터페이스 인터페이스인터페이스는 미구현 메소드를 포함하여 클래스에서 이를 구현합니다.추상 클래스와 비슷하지만 클래스가 단일 상속만 되면 반면 인터페이스는 다중 구현이 가능합니다. 주로 클래스에 동일한 속성을 부여해 같은 메소드라도 다른 행동을 할 수 있게 하는데 사용합니다. 주로 클래스에 동일한 속성을 부여해 같은 메소드라도 다른 행동을 할 수 있게 하는데 사용합니다. 코틀린의 인터페이스는 자바와 거의 사용법이 같습니다 인터페이스의 선언아래와 같이 인터페이스에 추상 메소드를 포함할 수 있습니다. 원래 추상 클래스에서 추상 메소드는 abstract 키워드가 필요한데 인터페이스에서는 생략할 수 있습니다.interface Runnable{ fun run()} 인터페이스는 구현이 없는 메소드 뿐.. 2019. 1. 3.
Kotlin - 클래스의 상속, 내부 클래스, 추상 클래스 Kotlin - 클래스의 상속, 내부 클래스, 추상 클래스 클래스의 상속코틀린에서는 클래스는 기본적으로 상속이 금지됩니다. 상속이 가능하게 하려면 open키워드를 클래스 선언 앞에 추가합니다.아래는 Animal 클래스를 상속받는 Dog 클래스를 나타냅니다.open class Animal { } class dog:Animal(){ } 만약 상속받을 클래스가 생성자를 가지고 있다면 다음과 같이 상속받을 수 있습니다.open class Animal(var name:String) { } class Dog(name:String):Animal(name){ } 부모 클래스의 생성자 프로퍼티를 자식클래스의 생성자로 받아야 합니다. 내부클래스내부 클래스 선언에는 inner를 사용합니다. 내부 클래스는 외부 클래스에 대한.. 2019. 1. 3.
Kotlin - 프로퍼티, 접근제한자 Kotlin - 프로퍼티, 접근제한자 프로퍼티클래스의 속성을 사용할 때는 멤버에 직접 접근하며 이를 프로퍼티라고합니다.아래 코드에서 Pserson 클래스는 name 프로퍼티를 가지고 있습니다. 프로퍼티에 값을 쓰려면 = 기호로 값을 대입합니다. 값을 읽을때는 프로퍼티를 참조합니다.//클래스 선언class Person(var name:String){ } //인스턴스 생성val person =Person("멋쟁이")person.name ="키다리" // 쓰기println(person.name) //읽기 자바로 작성된 클래스의 게터/세터 메소드는 코틀린에서 사용할 때 기존의 게터/세터를 사용할 수 있고 프로퍼티로 사용할 수도 있습니다. 자바에서는 private 접근지정자로 은닉화된 멤버 변수에 게터/세터 메소.. 2019. 1. 3.
Kotlin - 클래스 Kotlin - 클래스,생성자 클래스클래스는 붕어빵 틀에 비유할 수 있고 인스턴스는 클래스로 생성한 객체의 실체인 붕어빵에 비유할 수 있습니다. 코틀린에서 클래스는 자바와 역할은 유사하지만 더 간결합니다 클래스선언다음은 클래스를 선언하고, 생성한 클래스로 인스턴스를 생성하는 방법입니다.//클래스선언class Person { } //인스턴스 생성val person =Person() 자바에서는 new 키워드로 객체를 생성하지만 코틀린에서는 new 키워드를 사용하지 않습니다. 생성자생성자를 가지는 클래스는 다음과 같이 표현할 수 있습니다. 이 코드는 빈 생성자를 가지는 클래스입니다.class Person(var name:String){ }// 빈생성자를 가지는 클래스 in Kotlin 생성자에서 초기화 코드를.. 2019. 1. 3.
Kotlin - 제어문 Kotlin - 제어문 제어문은 크게 if, when, for, while의 4가지로 나뉩니다. When문은 제외하고는 자바와 거의 같습니다 1) if실행할 문장이 한 줄이면 블록을 생략할 수 있습니다. if -else 문의 사용법도 자바와 완전히 같습니다.위와 같이 if문 식처럼 사용할 수도 있습니다. 2) when when문은 자바의 switch문에 대응합니다. when문을 사용하는 다양한 방법은 다음과 같습니다.값이 하나인 경우는 물론 콤마( , ) 나 in 연산자로 값의 범위를 자유롭게 지정하는 것이 특징입니다. 그 밖의 경우에는 else를 사용하여 나머지에 대한 경우를 처리합니다. 코드를 작성할 때 블록으로 코드를 감쌀 수 있습니다.val x= 1 when(x){ 1->println("x == .. 2019. 1. 3.
Kotlin - 기본 자료형,배열 Kotlin 기본 자료형, 배열 코틀린의 기본 자료형은 모두 객체입니다. 자바가 프리미티브자료형( int, double)과 같은 자료형으로 분류 되는 것과 다릅니다. 숫자형코틀린에서 숫자를 표현하는 자료형은 아래와 같습니다 - Double : 64비트 부동 소수점- Float : 32비트 부동 소수점- Long : 64비트 정수- Int : 32비트 정수- Short : 16 비트 정수- Byte : 8 비트 정수 리터럴이란 자료형을 알 수 있는 표기방식을 말합니다. 리터럴에 따라 코틀린 컴파일러는 자료형을 추론합니다. 문자형코틀린에서 문자를 나타내는 자료형은 다음과 같이 두 가지 입니다. Char가 숫자형이 아니라는 점이 자바와 다릅니다. - String : 문자열- Char : 하나의 문자 문자열의 .. 2019. 1. 3.
Kotlin - 기본 구문(변수와 상수, 함수) Kotlin 기본 구문(변수와 상수, 함수) 변수와 상수코틀린에서 변수는 var로 상수는 val로 선언합니다 변수와 상수 초기화 하기var a: Int = 10 // var 변수명 : 자료형 = 값val b: Int = 20 // val 변수명 : 자료형 = 값 하지만, 코틀린은 자료형을 지정하지 않아도 추론하는 형 추론을 지원하여 자료형을 생력할 수 있습니다. b는 상수로 선언하여 값을 재지정 할 수 없습니다. 함수 함수(Function)은 일정 동작을 수행하는 특정 형식의 코드 뭉치를 의미합니다. 함수는 자바의 메소드에 해당합니다. 함수를 선언하는 방법은 아래와 같습니다. fun 함수명(인수:자료형, 인수2:자료형):반환자료형 아래는 하나의 문자열을 인수로 받고 println() 메소드로 출력하는 g.. 2019. 1. 1.
Kotlin - Scratch 사용하기 스크래치(Scratch) 사용하기안드로이드 스튜디오는 REPL보다 더 편리한 스크래치(Scratch)를 제공합니다. REPL은 한줄 단위로 코드를 실행할 때는 편리하지만 복잡한 코드 테스트 때는 불편합니다.스크래치를 사용하면 복잡한 코틀린 코드도 쉽게 테스트 할 수 있습니다. 프로젝트를 열고 안드로이드 스튜디오 상단 메뉴에서 [File]->[New]->[Scratch File] 을 클릭합니다. 다음과 같이 언어를 선택하는 화면이 표시되면 kotiln을 선택합니다. 에디터 창에 scratch.kts 파일이 열립니다. 여기서 자유롭게 코틀린을 연습할 수 있습니다. 자동완성이 지원되고 주석도 작성할 수 있어 연습후 기록용으로 사용해도 좋습니다 . 윈도우 자동완성을 사용하려면 아래 내용을 추가후 시도해보는 것이.. 2019. 1. 1.
Kotlin - REPL 사용하기 REPL(Read-eval-print loop) 사용하기코틀린을 개발언어로 사용하면,안드로이드 스튜디오에서 제공하는 코드를 한줄씩 실행하는 셸인 REPL(Read-eval-print loop)을 사용할 수 있습니다. 새로운 언어를 학습할 때 직관적으로 한 줄씩 실행할 수 있기 때문에 아주 유용합니다. 프로젝트가 열린 상태로 안드로이드 스튜디오 상단의 [Tools]->[Kotlin]->[Kotlin REPL]을 클립합니다. 아래와 같이 하단에 Kotlin REPL 창이 표시됩니다. 여기에서 println("Hello")를 입력하고단축기 [Ctrl]+[Enter]를 누르면 잠시후 하단에 결과가 표시됩니다. 2019. 1. 1.
Kotlin 알아보기 Kotlin이란 ? "자바가 아니라 코틀린을 사용하는 이유는 ?" - 코틀린은 2017 구글 I/O에서 정식으로 안드로이드 개발언어로 추가되었습니다.- 코틀린은 JVM 위에서 동작하며 자바와 100%호환됩니다. 자바의 수많은 라이브러리를 그대로 사용하면서 코드는 더 간결하게 작성할 수 있습니다. 즉 같은 기능을구현하더라도 자바에 비해서 더 적은 코드만 작성합니다. - 2018 구글 I/O에서는 대부분의 예제를 코틀린으로 설명하고 있습니다. 코틀린의 특징- 간결한 코드 : 상용구 코드양을 대폭 줄여줍니다. 예를 들어 자바에서는 단순한 클래스를 작성할 때 게터 및 세터를 잔뜩 만들고 equals(), hashcode(), toString()을 재정의해 수십 줄의 코드를 작성하게 됩니다. 하지만 코틀린에서는 .. 2019. 1. 1.
RxJava 테스팅과 Flowable-5( Flowable을 활용한 배압 이슈 대응하기) 본 내용은 필자가 학습한 내용을 정리하는 내용입니다.대부분 의 내용이 아래 책의 내용이므로 원서를 구매해서 직접보시는걸 추천드립니다!RxJava 프로그래밍 리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에유동환 , 박정준 지음 | 한빛미디어 | 2017년 09월 04일 출간http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788968488658&orderClick=LAV&Kc= 저자님의 블로그https://brunch.co.kr/@yudong#info Flowable을 활용한 배압 이슈 대응하기Flowable에서 추가로 제공하는 배압 이슈에 대응하는 함수는 다음과 같습니다 . - onBackPres.. 2019. 1. 1.
RxJava 테스팅과 Flowable-4( Flowable 클래스) 본 내용은 필자가 학습한 내용을 정리하는 내용입니다.대부분 의 내용이 아래 책의 내용이므로 원서를 구매해서 직접보시는걸 추천드립니다!RxJava 프로그래밍 리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에유동환 , 박정준 지음 | 한빛미디어 | 2017년 09월 04일 출간http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788968488658&orderClick=LAV&Kc= 저자님의 블로그https://brunch.co.kr/@yudong#info Flowable 클래스고급 주제인 배압과 Flowable에 대해서 알아보겠습니다. Flowable은 RxJava 2.x에 새로 도입된 클래스입니다. .. 2019. 1. 1.
RxJava 테스팅과 Flowable-3(비동기 테스트) 본 내용은 필자가 학습한 내용을 정리하는 내용입니다.대부분 의 내용이 아래 책의 내용이므로 원서를 구매해서 직접보시는걸 추천드립니다!RxJava 프로그래밍 리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에유동환 , 박정준 지음 | 한빛미디어 | 2017년 09월 04일 출간http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788968488658&orderClick=LAV&Kc= 저자님의 블로그https://brunch.co.kr/@yudong#info 비동기 코드 테스트RxJava는 스케줄러를 활용해 다양한 상황에서 비동기 코드를 직관적으로 작성할 수 있습니다. 하지만 비동기 코드를 테스트 하는 것.. 2019. 1. 1.
RxJava 테스팅과 Flowable-2(TestObserver 클래스) 본 내용은 필자가 학습한 내용을 정리하는 내용입니다.대부분 의 내용이 아래 책의 내용이므로 원서를 구매해서 직접보시는걸 추천드립니다!RxJava 프로그래밍 리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에유동환 , 박정준 지음 | 한빛미디어 | 2017년 09월 04일 출간http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788968488658&orderClick=LAV&Kc= 저자님의 블로그https://brunch.co.kr/@yudong#info 테스팅과 Flowable이제 JUnit 5 기반으로 RxJava 테스트 코드를 작성합니다 .앞에서 부터 RxJava의 연산자 들의 마블 다이어 그램을.. 2019. 1. 1.
RxJava 테스팅과 Flowable-1(JUnit 5) 본 내용은 필자가 학습한 내용을 정리하는 내용입니다.대부분 의 내용이 아래 책의 내용이므로 원서를 구매해서 직접보시는걸 추천드립니다!RxJava 프로그래밍 리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에유동환 , 박정준 지음 | 한빛미디어 | 2017년 09월 04일 출간http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788968488658&orderClick=LAV&Kc= 저자님의 블로그https://brunch.co.kr/@yudong#info 테스팅과 Flowable소프트웨어의 품질은 테스트에서 결정됩니다. 개발 부서에서는 정해진 스펙에 맞게 기능을 구현하고 품질 부서에서는 사용자 관점에서.. 2019. 1. 1.
RxJava 흐름제어 -5(debounce 함수) 본 내용은 필자가 학습한 내용을 정리하는 내용입니다.대부분 의 내용이 아래 책의 내용이므로 원서를 구매해서 직접보시는걸 추천드립니다!RxJava 프로그래밍 리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에유동환 , 박정준 지음 | 한빛미디어 | 2017년 09월 04일 출간http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788968488658&orderClick=LAV&Kc= 저자님의 블로그https://brunch.co.kr/@yudong#info debounce() 함수debounce() 함수는 빠르게 연속 이벤트를 처리하는 흐름 제어 함수입니다. POJO java와 같이 콘솔에서는 크게 활용.. 2019. 1. 1.
RxJava 흐름제어 -4(window 함수) 본 내용은 필자가 학습한 내용을 정리하는 내용입니다.대부분 의 내용이 아래 책의 내용이므로 원서를 구매해서 직접보시는걸 추천드립니다!RxJava 프로그래밍 리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에유동환 , 박정준 지음 | 한빛미디어 | 2017년 09월 04일 출간http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788968488658&orderClick=LAV&Kc= 저자님의 블로그https://brunch.co.kr/@yudong#info window() 함수window() 함수는 groupBy() 함수와 개념적으로 비슷합니다. groupBy() 함수는 특정 조건에 맞는 입력값들을 그룹.. 2019. 1. 1.
RxJava 흐름제어 -3(throttleFirst 함수 ,throttleLast함수) 본 내용은 필자가 학습한 내용을 정리하는 내용입니다.대부분 의 내용이 아래 책의 내용이므로 원서를 구매해서 직접보시는걸 추천드립니다!RxJava 프로그래밍 리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에유동환 , 박정준 지음 | 한빛미디어 | 2017년 09월 04일 출간http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788968488658&orderClick=LAV&Kc= 저자님의 블로그https://brunch.co.kr/@yudong#info throttleFirst() 와 throttleLast() 함수throttle은 영어로 '조절판'이라는 뜻입니다. 그것에 맞게 throttleFirs.. 2019. 1. 1.
RxJava 흐름제어 -2( Buffer) 본 내용은 필자가 학습한 내용을 정리하는 내용입니다.대부분 의 내용이 아래 책의 내용이므로 원서를 구매해서 직접보시는걸 추천드립니다!RxJava 프로그래밍 리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에유동환 , 박정준 지음 | 한빛미디어 | 2017년 09월 04일 출간http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788968488658&orderClick=LAV&Kc= 저자님의 블로그https://brunch.co.kr/@yudong#info 흐름제어흐름제어는 Observable이 데이터를 발행하는 속도와 옵서버가 데이터를 받아서 처리하는 속도 사이의 차이가 발생할 때 사용하는 함수입니다... 2018. 12. 31.
RxJava 흐름제어 -1( sample ) 본 내용은 필자가 학습한 내용을 정리하는 내용입니다.대부분 의 내용이 아래 책의 내용이므로 원서를 구매해서 직접보시는걸 추천드립니다!RxJava 프로그래밍 리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에유동환 , 박정준 지음 | 한빛미디어 | 2017년 09월 04일 출간http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788968488658&orderClick=LAV&Kc= 저자님의 블로그https://brunch.co.kr/@yudong#info 흐름제어흐름제어는 Observable이 데이터를 발행하는 속도와 옵서버가 데이터를 받아서 처리하는 속도 사이의 차이가 발생할 때 사용하는 함수입니다... 2018. 12. 31.
RxJava 디버깅과 예외처리 -4 (retry, retryUntil, retryWhen 함수) 본 내용은 필자가 학습한 내용을 정리하는 내용입니다.대부분 의 내용이 아래 책의 내용이므로 원서를 구매해서 직접보시는걸 추천드립니다!RxJava 프로그래밍 리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에유동환 , 박정준 지음 | 한빛미디어 | 2017년 09월 04일 출간http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788968488658&orderClick=LAV&Kc= 저자님의 블로그https://brunch.co.kr/@yudong#info retry() 함수예외 처리의 다른 방법은 재시도 입니다. 예를 들어 서버와 통신할 때 인터넷이 일시적으로 안되거나 서버에 일시적인 장애가 발생하면 .. 2018. 12. 31.
RxJava 디버깅과 예외처리 -3 ( onErrorReturn, onErrorReturnItem, onErrorResumeNext 함수) 본 내용은 필자가 학습한 내용을 정리하는 내용입니다.대부분 의 내용이 아래 책의 내용이므로 원서를 구매해서 직접보시는걸 추천드립니다!RxJava 프로그래밍 리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에유동환 , 박정준 지음 | 한빛미디어 | 2017년 09월 04일 출간http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788968488658&orderClick=LAV&Kc= 저자님의 블로그https://brunch.co.kr/@yudong#info 예외처리RxJava 프로그래밍에서 예외처리는 어떻게 할까요 ? 지금까지 onError 이벤트를 전달 받아서 예외처리를 한다고 했었습니다. 원래 자바에.. 2018. 12. 31.
RxJava 디버깅과 예외처리 -2 ( 디버깅, doOnEach ,doOnsubscribe, doOnDispose, doOnLifeCycle, doOnTerminate ,doFinally 함수) 본 내용은 필자가 학습한 내용을 정리하는 내용입니다.대부분 의 내용이 아래 책의 내용이므로 원서를 구매해서 직접보시는걸 추천드립니다!RxJava 프로그래밍 리액티브 프로그래밍 기초부터 RxAndroid까지 한 번에유동환 , 박정준 지음 | 한빛미디어 | 2017년 09월 04일 출간http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788968488658&orderClick=LAV&Kc= 저자님의 블로그https://brunch.co.kr/@yudong#info doOnEach() 함수doOnEach() 함수입니다 . onNext, onComplete, onError 이벤트를 각각 처리하는 것이 아니라 한번에.. 2018. 12. 31.