본문 바로가기

kotlin39

Kotlin - 기타기능(확장함수,형변환,형체크) Kotlin - 기타기능(확장함수, 형변환, 형 체크)유용한 기타 기능 - 확장 함수 : 원래 있던 클래스에 기능을 추가하는 함수- 형변환 : 숫자형 자료형끼리 쉽게 형변환 가능- 형 체크 : 변수의 형이 무엇인지 검사하는 기능- 고차 함수 : 인자로 함수를 전달하는 기능- 동반 객체 : 클래스의 인스턴스 생성 없이 사용할 수 있는 객체- let() 함수 : 블록에 자기 자신을 전달하고 수행된 결과를 반환하는 함수- with() 함수 : 인자로 객체를 받고 블록에서 수행된 결과를 반환하는 함수- apply() 함수 : 블록에 자기 자신을 전달하고 이 객체를 반환하는 함수- run() 함수 : 익명함수처럼 사용하거나, 블록에 자기 자신을 전달하고 수행된 결과를 반환하는 함수 확장 함수코틀린은 확장 함수 기.. 2019. 1. 3.
Kotlin - 람다식, SAM변환 Kotlin - 람다식, SAM변환 람다식코틀린은 자바 8과 같이 람다식을 지원합니다. 람다식은 하나의 함수를 표현하는 방법으로 익명 클래스나 익명 함수를 간결하게 표현할 수 있어서 매우 유용합니다. 람다식은 코드를 간결하게 해주는 장점이 있지만 디버깅이 어렵고 남발할 경우 오히려 코드의 가독성이 떨어져 주의해야 합니다. 먼저 두 인수를 받아서 더해주는 add() 메소드입니다.fun add(x:Int,y:Int):Int{ return x+y} 위의 코드는 아래처럼 표현할 수 있습니다. 반환 자료형을 생략하고 블록{}과 return을 생략할 수 있습니다.fun add(x:Int,y:Int)=x+y 또한 아래처럼 표현할 수도 있습니다. 코틀린의 람다식은 다음과 같이 항상 중괄호로 둘러싸여 있습니다. 내용으로.. 2019. 1. 3.
Kotlin - 컬렉션(리스트,맵,집합) Kotlin - 컬렉션(리스트, 맵, 집합)컬렉션은 개발에 유용한 자료구조를 말합니다. 안드로이드 개발에서도 리스트나 맵은 자주 사용되는 구조입니다. 리스트리스트는 배열처럼 같은 자료형의 데이터들을 순서대로 가지고 있는 자료구조입니다. 중복된 아이템을 가질 수 있고 추가, 삭제, 교체 등이 쉽습니다. 요소를 변경할 수 없는 읽기 전용 리스트는 listOf() 메소드로 작성할 수 있습니다.val foods:List = listOf("라면","갈비","밥") 형 추론으로 자료형을 생략할 수 있습니다.val foods=listOf("라면","갈비","밥") 요소를 변경하는 리스트를 작성할 때는 mutableListOf() 메소드를 사용하여 작성합니다. 자바와 다른 점은 특정 요소에 접근할 때 대괄호 안에 요소.. 2019. 1. 3.
Kotlin - null값아님보증(!!), 안전한호출(?.), 엘비스 연산자(?:) Kotlin - null값아님보증(!!), 안전한호출(?.), 엘비스 연산자(?:) null값이 아님을 보증(!!)변수 뒤에 !!를 추가하면 nulll값이 아님을 보증하게 됩니다. 다음과 같이 null 값이 허용되는 name 변수의 경우 String? 타입이기 때문에 String 타입으로 변환하려면 !!값을 붙여서 null 값이 아님을 보증해야 합니다 val name: String?="키다리" val name2: String=name //에러val name3: String?=name //OKval name4: String=name!!//OK 안전한 호출 (?.)메소드 호출 시 점(.) 연산자 대신 ?. 연산자를 사용하면 null 값이 아닌 경우에만 호출됩니다. 다음 코드는 str 변수의 값이 null이 .. 2019. 1. 3.
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.