[Android] 03. 코틀린 시작하기
03. 코틀린 시작하기
목차
- 03-1 코틀린 언어 소개
- 코틀린의 등장 배경
- 코틀린 파일 구성
- 코틀린 소스를 테스트하는 방법
- 03-2 변수와 함수
- 변수 선언하기
- 함수 선언하기
- 컬렉션 타입
- 03-3 조건문과 반복문
- 조건문 if~else와 표현식
- 조건문 when
- 반복문 for와 while
03-1 코틀린 언어 소개
✅ 코틀린의 등장 배경
- 코틀린은 젯브레인스(JetBrains)에서 오픈소스 그룹을 만들어 개발한 프로그래밍 언어
- 2017년 구글에서 안드로이드 공식 언어로 지정
- JVM에 기반을 둔 언어
- 코틀린의 이점
- 최신 언어 기법을 이용하면서 훨씬 간결한 구문으로 프로그램을 작성
- 코틀린은 널 안전성 null safety를 지원하는 언어
- 코틀린은 자바와 100% 호환합니다.
- 코루틴 coroutines이라는 기법을 이용하면 비동기 프로그래밍을 간소화할 수 있다.
✅ 코틀린 파일 구성
- 패키지 경로를 같게 작성한 예(Test.kt) 이다.
- com.example.test3 와 Test.kt 파일은 같은 폴더 위치에 존재한다.
- 패키지 경로를 다르게 작성한 예이다.
- 패키지 이름 ch3 폴더내에 작성한 코틀린 파일이다.
- import 하는 컴포넌트는 다른 패키지(com.example.test3)에 존재하는 경우이다.
- import는 c/c++의 .h 파일 정의해주는 내용과 유사하며, c/c++에서도 import처럼 .h를 include하는 것이아니라 점차 컴포넌트를 include하는 것으로 진화되고 있다. (참고: https://antinvestment.blogspot.com/2024/10/c-h.html)
✅ 코틀린 소스를 테스트하는 방법
- 테스트할 코틀린 소스 파일에는 main() 함수가 있어야 하며, 실행하면 main() 함수가 자동으로 실행됐다가 끝나면서 프로그램 종료가 된다.
03-2 변수와 함수
- 변수는 val, var 키워드로 선언
- val은 value의 줄임말로 초기값이 할당되면 바꿀 수 없는 변수를 선언한다.
- var는 variable의 줄임말로 초기값이 할당된 후에도 값을 바꿀 수 있는 변수를 선언한다.
- 타입 지정과 타입 추론
- 변수명 뒤에는 콜론(:)을 추가해 타입을 명시
- 대입하는 값에 따라 타임을 유추(타입 추론)할 수 있을 때는 생략
- 초기화 미루기
- lateinit 키워드는 이후에 초기값을 할당할 것임을 명시적으로 선언
- lateinit은 var 키워드로 선언한 변수에만 사용할 수 있다.
- Int, Long, Short, Double, Float, Boolean, Byte 타입에는 사용할 수 없다.
- by lazy { } 형식으로 선언하며, 소스에서 변수가 최초로 이용되는 순간 중괄호로 묶은 부분이 자동으로 실행되어 그 결과값이 변수의 초기값으로 할당된다.
- 데이터 타입
- 코틀린의 모든 변수는 객체이다.
- Int 타입에 null 대입 가능하다.
- Int 타입의 변수에도 .plus() 함수 사용 가능하다.
- Int, Short, Long, Double, Float, Byte, Boolean - 기초 타입 객체.
- Char, String - 문자와 문자열
- String 타입의 데이터는 문자열을 큰따옴표(")나 삼중 따옴표(""")로 깜싸서 표현.
- 문자열 템플릿: String 타입의 데이터에 변수값이나 어떤 연산식의 결과값을 포함해야 할 때는 $ 기호를 이용
- Any - 모든 타입 가능 (Auto와 유사)
- Unit - 반환문이 없는 함수 (void와 유사)
- 반환 타입이 없을 경우 생략할 수도 있다.
- Nothing - null이나 예외를 반환하는 함수
- 널 허용: 타입 뒤에 '?'를 붙인다.
- 불허용: 일반 타입형으로 설정시 null은 불허용된다.
✅ 함수 선언하기
- 함수를 선언하려면 fun이라는 키워드를 이용한다.
- 반환 타입을 선언할 수 있으며 생략하면 자동으로 Unit 타입이 적용된다.
- 함수의 매개변수에는 var 나 val 키워드를 사용할 수 없으며 val이 자동으로 적용된다.
- 함수의 매개변수에는 기본값 선언 가능
- 매개변수명을 지정하여 호출하는 것을 명명된 매개변수라고 하며, 이렇게 하면 함수 선언문의 매개변수 순서에 맞춰 호출하지 않아도 된다.
- Array - 배열 표현
- 배열은 Array 클래스로 표현
- 배열의 데이터에 접근할 때는 대괄호( [ ] )를 이용해도 되고, set()이나 get()함수를 이용할 수도 있다.
- 기초 타입의 배열
- 기초 타입이라면 Array를 사용하지 않고 BooleanArray, ByteArray, CharArray, DoubleArray, FloatArray, IntArray, LongArray, ShortArray클래스를 이용할 수도 있다.
- arrayOf()라는 함수를 이용하면 배열을 선언할 때 값을 할당할 수도 있다.
- 기초타입을 대상으로 하는 booleanArrayOf(), byteArrayOf(), charArrayOf(), floatArrayOf(), intArrayOf(), longArrayOf(), shortArrayOf() 함수를 제공한다.
- List, Set, Map
- List: 순서가 있는 데이터 집합으로 데이터의 중복을 허용한다.
- Set, 순서가 없으며 데이터의 중복을 허용하지 않는다.
- Map: 키와 값으로 이뤄진 데이터 집합으로 순서가 없으며 키의 중복은 허용하지 않는다.
- Collection 타입의 클랙는 가변 클래그와 불변 클래스로 나눈다.
- 불변 클래스는 초기에 데이터를 대입하면 더 이상 변경할 수 없는 타입이다.
- 가변 클래스는 초기값을 대입한 이후에도 데이터를 추가하거나 변경할 수 있다.
- Map 객체는 키와 값으로 이뤄진 데이터의 집합
- Map 객체의 키와 값은 Pair객체를 이용할 수도 있고, '키' to '값'형태로 이용할 수도 있다.
03-3 조건문과 반복문
✅ 조건문 if~else와 표현식
- 일반적인 if~else 문 사용 예이다. (일반 java나 c형태와 같다)
- 코틀린에서 if~else 는 표현식으로도 사용할 수 있다.
- 표현식이란 결과값을 반환하는 계산식을 말한다.
✅ 조건문 when
- when문은 select문과 유사하다.
- String 형태의 문자열 타입을 조건으로 사용할 수 있다.
- when 문에서는 조건을 데이터 타입, 범위 등으로 다양하게 명시할 수 있다.
- is는 타입을 확인하는 연산자이며, in은 범위 지정 연산자 이다.
- when은 if문과 마찬가지로 표현식으로도 사용할 수 있다.
- for문은 제어 변수값을 증감하면서 특정 조건이 참일 때까지 구문을 반복해서 실행한다.
- or 문의 조건에는 주로 범위 연산자인 in을 사용한다.
- for (i in 1..10) { ... } → 1부터 10까지 1씩 증가
- for (i in 1 until 10) { ... } → 1부터 9까지 1씩 증가(10은 미포함)
- for (i in 2..10 step 2) { ... } → 2부터 10까지 2씩 증가
- for (i in 10 downTo 1) { ... } → 10부터 1까지 1씩 감소
- 컬렉션 타입의 데이터 개수만큼 반복
- indices는 컬렉션 타입의 인덱스값을 의미
- 인덱스와 실제 데이터를 함께 가져오려면 withIndex() 함수를 이용
- while 문은 조건이 참이면 중괄호 { }로 지정한 영역을 반복해서 실행한다. (java나 c와 같은 형태)
✅ 마치며
[02 안드로이드 앱의 기본 구조] 👈 | 👉 [04 코틀린 객체지향 프로그래밍]
💬 남 탓, 날씨 탓
타인이 어리석고 둔감하며
무례하고 거만하며 경솔하고 아둔하다고
판단할 수도 있습니다. 그러고 나면 그 사람의
행동에 당신의 기분이 상하고 화가 날 수 있을
겁니다. 당신의 마음속에서 타인을 판단하는
행위가 일어난다고 칩시다. 그 판단으로
그들이 규정되는 게 아닙니다. 오히려
당신 자신을 타인을 판단할 수 있는
사람으로 규정하는 셈이 되지요.
- 웨인 다이어의 《웨인 다이어의 인생 수업》 중에서 -
* 살면서 조심할 것이
타인에 대한 섣부른 판단입니다.
특히 남 탓을 하는 것은 절대 경계해야 합니다.
바람이 분다고, 햇살이 뜨겁다고, 날이 춥다고
날씨 탓하며 일일이 불평해 봐야 소용없습니다.
다른 사람을 판단하고 탓하는 일이 이와
같습니다. 그 시간에 자신을 돌아보아
스스로를 갖추는 것이 내공이고
어른이 되는 길입니다.
댓글
댓글 쓰기