이것이 안드로이드다 with 코틀린(고돈호 지음) 으로 공부한 내용을 정리한 글입니다.
변수란 값을 메모리에 저장하고 그 메모리 영역에 이름을 부여한 것으로 프로그래머는 변수의 이름을 통해 변수에 저장된 값을 사용합니다.
변수는 변수의 이름 앞에 var
를 입력하여 선언합니다.
var 변수명 = 값
ex) var myName = "홍길동"
변수에 저장되는 값의 형태에 따라 변수의 타입이 결정됩니다.
var 변수명: 타입
변수명 = 값
ex) var myAge: Int
myAge = 27
변수 선언만 할 경우에는 반드시 변수명 옆에 콜론(:
)을 붙이고 타입을 명시해야 합니다.
구분 | 데이터 타입 | 설명 |
---|---|---|
숫자형 | Double | 64비트 실수 |
숫자형 | Float | 32비트 실수 |
숫자형 | Long | 64비트 정수 |
숫자형 | Int | 32비트 정수 |
숫자형 | Short | 16비트 정수 |
숫자형 | Byte | 8비트 정수 |
문자형 | Char | 1개의 문자 |
문자형 | String | 여러 개의 문자 |
숫자형 | Boolean | true / false |
- Float : Double 과 구분하기 위해 숫자 끝에
F
를 붙여줌- Int : 가독성을 위해 언더바(
_
)로 자릿수를 구분해줄 수 있음- Long: Int 와 구분하기 위해 숫자 끝에
L
을 붙여줌
var myName = "홍길동"
var myAge: Int
myAge = 27
myAge = myAge + 1
Log.d("BasicSyntax", "myName = $myName, myAge = $myAge")
// 로그 출력: myName = 홍길동, myAge = 28
문자열 템플릿
- 문자열 내부에 달러(
$
) 기호를 넣으면 그 이후부터 공백 전까지 해당 영역이 문자가 아닌 코드라는 것을 알려줌- 중괄호(
{}
)로 영역을 구분하고 그 블록 내에서 연산을 수행할 수도 있음
상수는 변수처럼 값을 메모리에 저장하고 이름을 부여한 것이지만 변수와 달리 한 번 저장한 값을 변경할 수 없습니다.
val 상수 이름 = 값
ex) val PI = 3.141592F
상수는 값을 변경할 수 없으므로 다음과 같은 경우 에러가 발생합니다.
val constValue = 197
constaValue = 457 // Error
코딩 컨벤션(Coding Convetion) 이란 여러 사람이 협업하는 경우 일관된 코딩 스타일을 유지하여 코드의 가독성을 높이기 위해 사용하는 코드 작성 규칙을 말합니다. 대체로 코틀린의 네이밍 컨벤션은 캐멀 케이스(Camel Case)를 사용합니다.
캐멀 케이스(Camel Case): 이름을 띄어쓰기 없이 짓기 위한 네이밍 컨벤션 중 하나로 단어 전체적으로 소문자를 사용하지만, 각 합성어의 첫 글자만 대문자로 표기함
클래스명의 첫 글자는 대문자로, 나머지 글자는 소문자로 표기하되 중간에 새로운 단어가 나타나면 그 단어의 첫 글자를 대문자로 표기합니다.
class MainActivity {
}
함수명과 변수명 역시 캐멀 케이스를 따르지만 클래스명과 달리 맨 처음 글자는 소문자를 사용합니다.
fun onCreateActivity() {
var intValue: Int
}
상수명은 모두 대문자로 작성합니다.
val HELLO: String = "안녕"
상수명이 2개 이상의 단어로 이루어져 있다면 단어 사이를 언더바(_
)로 구분하는 스네이크 케이스를 사용할 수 있습니다.
val HOW_ARE_YOU: String = "어떻게 지내?"
새로운 코드 블록이 시작되면 스페이스바 또는 탭 키로 동일한 간격만큼 들여쓰기를 합니다. 일반적으로 공백 4칸 들여쓰기를 사용합니다.
class MainActivity {
var new Variable = 50
fun onCreateActivity () {
var variable = 10
}
}
조건문이란 어떤 코드를 실행할 것인지를 주어진 조건식의 결과가 참인지 거짓인지에 따라 결정하는 프로그래밍 문법입니다. 코틀린에서는 if
와 when
, 두가지 형태의 조건문을 사용할 수 있습니다.
if 조건식에는 비교 연산자(==, !=, <, >, >=, <=
)와 논리 연산자(&&, ||, !
)를 사용한 조건식만 사용 가능하며, 조건식의 결과는 Boolean 타입인 true
와 false
로 나타납니다.
if (조건식) {
// 조건식이 참일 경우 실행되는 코드 영역
}
ex) var outCount = 0
var strike = 3
if (strike > 2) {
outCount = outCount + 1
}
if (조건식) {
// 조건식이 참일 경우 실행되는 코드 영역
} else {
// 조건식이 거짓일 경우 실행되는 코드 영역
}
if (조건식 1) {
// 조건식 1이 참일 경우 실행되는 코드 영역
} else if (조건식 2) {
// 조건식 1이 거짓이고 조건식 2가 참일 경우 실행되는 코드 영역
} else {
// 조건식1, 2 모두 거짓일 경우 실행되는 코드 영역
}
코틀린에서는 if문의 결과를 변수에 대입할 수 있습니다. 이때 반드시 else
부분이 필요합니다.
var a = 5
var b = 3
var bigger = if (a > b) a else b
// bigger: 5
if문의 코드 영역이 여러 줄일 경우 마지막 줄까지 실행한 결과를 변수에 대입합니다.
var a = 5
var b = 3
var bigger = if (a > b) {
a = a - b
a
} else {
b = b - a
b
}
// bigger: 2
when 조건문은 다른 언어의 switch
문과 비슷합니다. 하지만 같은 값인지만을 비교하는 switch
문과 달리 범위 값도 처리할 수 있습니다.
switch
문과 비슷한 형태이지만 case
와 콜론(:
) 대신 화살표 연산자(->
)를 사용한다는 차이점이 있습니다.
when (파라미터) {
비교값 1 -> {
// 파라미터 값이 비교값 1과 같을 경우 실행되는 영역
}
비교값 2 -> {
// 파라미터 값이 비교값 2와 같을 경우 실행되는 영역
}
else {
// 파라미터 값이 비교값들과 모두 다를 경우 실행되는 영역
}
}
결과 처리가 동일한 비교값이 있다면 콤마(,
)로 구분하여 한 번에 비교할 수 있습니다.
when (파라미터) {
비교값 1, 비교값 2 -> {
// ...
}
else {
// ...
}
}
in x .. y
를 사용하여 파라미터 값이 특정 범위 내에 있는지 비교할 수 있습니다.
var age = 19
when (age) {
in 10..20 -> {
Log.d("Age", "10대")
}
!in 10..20 -> {
Log.d("Age", "10대가 아님")
}
else -> {
Log.d("Age", "알 수 없음")
}
}
when
다음에 오는 괄호를 생략하고 if문처럼 사용할 수도 있습니다.
var currentTime = 6
when {
currentTime == 5 -> {
// ...
}
currentTime > 5 -> {
// ...
}
else -> {
// ...
}
}
값을 특정할 수 있고, 개수가 많지 않은 경우에는 when 조건문을 사용하면 가독성 좋은 코드를 작성할 수 있습니다.
반면 값의 범위가 넓고 값을 특정할 수 없을 경우에는 if문을 사용하는 것이 바람직합니다.
Cool! What is the main reason for which you study Kotlin? Are there any powerful benefits over Java?