본문 바로가기
Development/Kotlin

코틀린(Kotlin) 문법 뽀개기 - 2. 기본 문법(변수, 제어문, 반복문)

by du.it.ddu 2020. 6. 9.
반응형

코틀린의 변수, 제어문, 반복문을 알아보자.

다른 프로그래밍 언어를 해 보았다면 큰 문제없이 이해가 될 것이다.


1. 변수 선언

// 변수 선언
var intVar: Int = 3
val intVal: Int = 3

intVar = 4 // var은 변경 가능
intVal = 4 // val은 변경 불가능, 컴파일 에러가 발생한다.

우선 변수 선언은 var과 val이 있다.

var은 변경 가능한 변수다. 위의 코드에서 intVar = 4는 정상 동작한다.

val은 변경 불가능한 변수다. 그래서 intVal = 4는 IDE에서 빨간 줄을 그어 줄 것이며, 컴파일 에러가 발생한다.

var 변수명: 변수타입 = 값 

val 변수명: 변수타입 = 값 과 같이 선언한다.

//  val stringVar1: String = "string"
val stringVar1 = "string" // 타입 추론으로 인해 변수명 뒤의 타입 선언 생략 가능

하지만 위 처럼 타입추론으로 인해 변수타입을 생략할 수 있다. 할당된 값을 보고 Int 인지 String인지 확인해서 알아서 변수타입을 결정한다.

// 문자열 안에 $ 기호로 변수를 사용할 수 있음(String Interpolation)
val stringVal2 = "intVar : $intVar, intVal : $intVal"

// {}를 사용하여 식도 가능함
val stringVal3 = "intVar + intVal = ${intVar + intVal}"

변수들을 조합하여 문자열을 만들거나 로그를 찍기위해 출력을 한다거나 할 때 위와 같이 편하게 사용할 수 있다.

C언어에서 printf("%d %f %s", a, b, c) 를 좀 더 편하게 쓰는 기분이랄까?


2. 제어문

// if ~ else if ~ else
if(intVar > 3) {
    print("intVar > 3")
} else if(intVar < 2) {
    print("intVar < 2")
} else {
    print("What is intVar?")
}

제어문은 비슷하게 사용하면 된다.

// in을 사용해 어떤 범위안에 있는지도 체크 가능
if(intVal in 0..3) {
    // Do something
}

in 키워드를 사용하면 어떤 범위안에 있는지 체크할 수도 있다. 

// when. switch를 생각해보자.
when(intVar) {
    0 -> print("int Var is 0")
    1, 2 -> print("int Var is 1 or 2")
    3 -> print("int Var is 3")
    else -> print("What is intVar?")
}

switch문은 when으로 사용한다. 

switch와 비슷하게 생겼다.

위 처럼 케이스를 나누는 것 외에도 다양하게 활용할 수 있다. 다음에 알아보자.


3. 반복문

// for loop
for(i in 0 until 10) {
    print("i :: $i")
}

// Colletion을 활용할 수도 있음
val strs = listOf("a", "b", "c", "d")
for(str in strs) {

}

for문은 위 처럼 사용한다. for(i = 0; i < 10; i++) 이나 for i in range(10) 이나.. 뭐 이런것과 조금 다르게 생겼지만 비슷비슷하다.

나중에 자세히 다루겠지만 Collection을 활용할 수 있다.

// while loop
var index = 0
while(index < 10) {
    print("Index :: $index")
    index++
}

while문은 익숙한 느낌이다.

사실 for문을 거의 사용하고 while은 잘 안써봤다. 하지만 기본적으로 위와 같이 생겼고 활용하기 나름같다.


기본적인 문법만 정리하다 보니 영 느낌이 없긴 하다.

하지만 앞으로 할 내용은 굉장히 많다. 작성하면서도 공부를 많이 해야할 것 같다.

후.. 화이팅..!

반응형