일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 백준
- 빅데이터청년인재
- 딥러닝
- 소켓통신
- sending 404
- flownet
- 청년인재
- 머신러닝
- DataBinding Error
- cuda-10.2
- kotiln
- nvcc
- 이것만보면돼
- 안드로이드
- 코틀린
- 데이터청년캠퍼스
- 넥스터즈
- 인공지능
- ubuntu18.04
- utuntu
- 알고리즘
- 빅데이터
- Android
- IT연합동아리
- resample2d_cuda
- NEXTERS
- 빅데이터청년캠퍼스
- ubuntu
- 자바
- clean architecture
- Today
- Total
보초의 코딩일기장
코틀린을 이용한 안드로이드 프로그래밍 실습 -1 본문
코틀린을 이용한 안드로이드 프로그래밍 실습 - 안드로이드 소개 및 개발환경 설정
코틀린으로 코드 작성시 MinSdk는 21 , TargetSdk는 26
online : https://try.kotlinlang.org/
* 2017년 5월 구글 I/O 행사에서 안드로이드의 공식 언어로 코틀린을 지정
* 구글이 오라클의 소송에서 패소했기 때문에 라이센스를 지불해야 함
* 자바, 안드로이드와 100% 호환
* 함수형 언어, Lambdas, Extension, Null Safety 등 최신 언어의 트랜드 지원
* 안드로이드 코드 알파벳 순서대로 진행됨
안드로이드P 부터는 코틀린 코드에 대한 성능이 최적화
* 함수형 언어는 객체, 절차지향언어보다 배우기 힘듦
* 자바와 100%호환되지만 같이 사용할 때 미묘한 차이가 존재할 수 있음
*Menu->Code->Convert Java file to Kotlin file 을 이용해 자동 변환 제공 (일차변환 후 수정 필요)
*Tool->Kotlin->Show Kotlin Bytecode 로 코틀린의 바이트코드 볼 수 있음 , 디컴파일해서 자바로 확인 가능함
Kotlin 의 특징1 - 편리함 / 간소화 -> 코드의 양이 줄어듦
생각할 시간이 줄어든다는 의미도 들어있음
* 자바의 불편한 점을 개선하고 간소화 하는 방향으로 발전
*세미콜론( ; ) 의 불필요
* 정적타입언어지만 강력한 타입추론을 지원함
* 제어식 지원
제어문을 식으로 사용할 수 있다.
정수형 i를 선언하고 수를 넣어준 후 조건문을 사용한다면
코틀린은 선언과 동시에 조건문을 바로 사용할 수 있다.
* 여러가지 오퍼레이터를 지원한다
?, ?. , ?:, !!
* C++보다 강력한 디폴트 파라메터를 지원한다.
f(int a, int b) 라는 함수가 가정되었을 때,
f(1,2) , f(1), f() 가 전부 가능하다.
Kotlin의 특징2 - 객체지향, 함수형, 제너릭
* 객체지향형 프로그래밍 지원
* 함수형 프로그래밍 지원
고차함수를 지원함
* 메타프로그래밍 지원
Kotlin [ Hello World ]
* 변수명 타입 순으로 입력
fun main(args: Array<String>) {
println("Hello, world!")
}
* fun: 함수임을 나타내는 키워드
* main: 함수 이름 ( 여기서는 엔트리포인트가 되는 메인 함수
class 필요 없음 – 탑 레벨 함수 정의 가능.
* (args: Array<Sting>): 함수인자 "변수명: 타입"
* println("Hello, world!"): System.out.println을 println으로 간단하게 사용
* 표준 자바 라이브러리 함수를 간소화해주는 wrapper를 제공
* ; (세미콜론) 불필요
* 코틀린 파일이름과 클래스가 같지 않아도 되고 코틀린 파일 내부에 클래스가 존재하지 않아도 된다.
Kotlin - 변수
* 변수선언시 val( or var) 변수명 : 타입 = 값
* val(value)는 불변 변수 (get, set X) -> setter가 없는 프로퍼티이지 상수는 아니다!
* var(variable)은 가변 변수 (get,set 존재)
* 타입 추론 지원 ( 타입 생략 가능)
보통 NULL을 사용하지 않기 때문에 값을 넣어주어야 한다.
ex: var str : String ->오류 : null을 가질 수 없기 때문에
var str : String ? -> null을 의미
var str : String = "s1" 과 var str = "s1" 은 같은 의미이다.
* 처음에 변수에 어떤 값을 넣을지 모를 때 우선 null을 선언 후에
나중에 변수에 값을 넣어야 할 때 lateinit을 사용한다.
* """ 으로 멀티라인 스트링 표현 가능
* 문자열 템플릿으로 사용 가능
var s1="s1" 이 선언 되었을 때
println("s1=",s1) == println("s1=$s1") 같은 의미이다.
* 상수표현은 const 사용
* val로 선언한 변수의 초기값을 변경할 수는 없지만, 일반적인 상수변수와는 다르다.
* 최상위레벨로 선언할때만 const를 사용 가능하다.
*?.
a?. length -> a가 null이 아니라면 length를 반환
a?.name?.length ->a가 null이 아니고 name도 null이 아니면 length를 반환, 그렇지 않으면 null을 반환
*!!
Non-null 타입으로 강제 캐스팅
*?:
엘비스 연산자라고 불림
코틀린은 3항연산자가 존재하지 않아 이 연산자를 이용해 3항연산을 수행한다.
*as?
ClassCastExecption이 발생해야 하는 상황에 에러 발생 없이 Null이 리턴된다.
Kotlin - 함수
fun 함수명 (매개변수명 : 타입) : 리턴타입 {}
*매개변수에는 var,val 선언 불가, 오직 변수명 타입 순으로 쓴다.
*Unit(void) 반환값 생략가능
*탑레벨 함수 선언 가능
*함수 내에 함수 선언 가능
대신 그 함수가 쓰이기 전에 함수가 선언되어야 한다.
*가변인수(변수가 몇개인지 모를 때) 사용 가능 : vararg
*재귀함수 : Tailrec
*확장함수가 가능하다.
class int. { } 라는 클래스가 존재하고 int 안에 addex 라는 함수를 새로 만들고 싶다면
fun int.addex(){ }로 생성해주면 된다.
'Android > Kotlin' 카테고리의 다른 글
코틀린을 이용한 사진 관리 어플 만들기 (1) (2) | 2020.01.07 |
---|---|
코틀린 이것만 보면 돼 : 3일차 (0) | 2020.01.07 |
코틀린 이것만 보면 돼 : 2일차 (0) | 2020.01.07 |
코틀린 이것만 보면 돼 : 1일차 (0) | 2020.01.07 |
코틀린을 이용한 안드로이드 프로그래밍 실습 -3 (0) | 2018.07.04 |