본 포스팅은 '코틀린' 프로그래밍 언어를 학습한 내용을 개인적으로 복습하는 목적의 포스팅입니다.
1. 코틀린 (Basic)
1-1. 코틀린에 대하여..
01 코틀린의 등장 배경
▶ 코틀린의 이점 (↔ JAVA)
- 표현력 & 간결함
- 안전한 코드 ☞ 널 안전성
- 상호운용성
- 구조화 동시성 ☞ 코루틴
02 코틀린 파일 구성
- 확장자 : .kt
- 구성 : 패키지 / 임포트 / 변수 / 함수 / 클래스
- 패키지 경로
- 같다면 ⇒ 다른 코틀린 파일에서 import 없이 멤버(변수, 함수, 클래스) 사용 가능
- 다르다면 ⇒ 사용할 멤버를 import 구문으로 지정 必
- 최상위 멤버
- JAVA : only 클래스 (∵ 객체지향언어 ☞ 모든 것을 '클래스'로 묶어야 함)
- 코틀린 : 클래스 + 변수, 함수 (∵ 객체지향만을 목적으로 하지 않음)
- 파일명 <--(상관없음; 일치 안해도 됨)--> 클래스명
- 코틀린 ---> JAVA
☞ 코틀린의 최상위 변수 및 함수
⇒ JAVA의 '파일명+Kt'라는 이름의 클래스 (자동 생성)
☞ 코틀린의 최상위 클래스
⇒ JAVA의 클래스
03 코틀린 소스의 테스트 방법
▶ main() 함수
1-2. 변수 & 함수
01 변수 선언하기
☞ val(불변) & val(가변)
val/var 변수명 : 타입 = 값
ⓐ 타입 지정 & 타입 추론
val data1 : Int = 10
val data2 = 10
ⓑ 초기값 할당
- 최상위 변수 ⇒ 선언 + 초기값 설정 必
- 함수 내 변수 ⇒ 선언 / 초기값 설정
ⓒ 초기화 미루기
☞ lateinit 또는 lazy 키워드
▶ lateinit 키워드
- : "나중에" 초기값을 할당할 것임을 명시적으로 선언
- 규칙 (2가지)
- (1) lateinit var ☞ val로는 선언 불가
- (2) 기초 타입 객체(Int, Long, Short, Double, Float, Boolean, Byte)에는 사용 불가
lateinit var data3 : String
▶ lazy 키워드
- : 변수가 최초로 이용되는 순간 by lazy {}의 중괄호로 묶은 부분이 자동으로 실행되어 그 결과값이 변수의 초기값으로 할당됨
val data4 : Int by lazy {
println("lazy 중괄호 내부입니다~~")
10
}
02 데이터 타입
- 코틀린의 모든 변수 ☞ "객체"
- 객체
- '기초 데이터 타입' X
- null 대입 가능, 메서드 호출 가능
- null : 객체가 선언만 되고, 메모리 할당이 되지 않았음을 의미
ⓐ 기초 타입 객체 : Int, Long, Short, Double, Float, Byte, Boolean
- <정수> : Int, Long, Short
- <실수> : Double, Float
- <이진수> : Byte
- <true/false> : Boolean
ⓑ 문자 & 문자열 : Char, String
- Char(''), String("" 또는 """""")
- ▶ .trimIndent()
- ▶ 문자열 템플릿 ☞ $ 기호
ⓒ 모든 타입 가능 : Any
ⓓ 반환문 無 : Unit
ⓔ null 또는 예외 반환 함수 : Nothing
ⓕ 널 허용/불허용 : ?
03 함수 선언하기
☞ fun 키워드
fun 함수명(매개변수명 : 타입) : 반환타입 {
...
}
- ▶ 매개변수
- val/var 키워드 X ☞ val로 자동 적용 ⇒ 함수 안에서 매개변수 값 변경 불가
- 기본값(default value) 선언 가능
- 명명된 매개변수
04 컬렉션 타입
- : 여러 개의 데이터를 표현하는 방법
- : Array, List, Set, Map
ⓐ Array
☞ Array 클래스 / arrayOf() 함수
- ▶ 선언 방법 (2가지)
- i) <기본> : Array<T> / arrayOf<T>()
- ii) <기초 타입의 배열> : 타입Array<T> / 타입ArrayOf<T>()
val 변수명 : Array<T> = Array(배열의 크기, 초기값 설정 함수)
val data1 : Array<Int> = Array(3, { 0 })
val 변수명 = arrayOf<T>(초기값들)
val data2 = arrayOf<Int>(10, 20, 30)
val 변수명 : 타입Array = 타입Array(배열의 크기, 초기값 설정 함수)
val data1 : IntArray = IntArray(3, { 0 })
val 변수명 = 타입ArrayOf(초기값들)
val data2 = intarrayOf(10, 20, 30)
- ▶ 데이터 접근 방법 ☞ [ ] (대괄호) / set( ) / get( )
ⓑ Collection 타입의 클래스 : List, Set, Map


- Map 객체의 키 & 값 ☞ Pair 객체 / 키 to 값
var map = mapOf<String, String>(Pair("one", "hello"), "two" to "world")
1-3. 조건문 & 반복문
01 조건문
02 반복문
2. 코틀린 (Advanced): OOP(객체지향 프로그래밍)