[Kotlin] 1장. 코틀린 문법 - 변수, 상수, 조건문

Hwichan Ji·2020년 12월 16일
0

Kotlin

목록 보기
1/11
post-thumbnail

이것이 안드로이드다 with 코틀린(고돈호 지음) 으로 공부한 내용을 정리한 글입니다.

변수와 상수

변수 var

변수란 값을 메모리에 저장하고 그 메모리 영역에 이름을 부여한 것으로 프로그래머는 변수의 이름을 통해 변수에 저장된 값을 사용합니다.

변수 선언

변수는 변수의 이름 앞에 var를 입력하여 선언합니다.

변수 선언과 동시에 초기화

var 변수명 = 값

ex) var myName = "홍길동"

변수에 저장되는 값의 형태에 따라 변수의 타입이 결정됩니다.

초기화 없이 변수 선언

var 변수명: 타입
변수명 = 값

ex) var myAge: Int
    myAge = 27

변수 선언만 할 경우에는 반드시 변수명 옆에 콜론(:)을 붙이고 타입을 명시해야 합니다.

데이터 타입

구분데이터 타입설명
숫자형Double64비트 실수
숫자형Float32비트 실수
숫자형Long64비트 정수
숫자형Int32비트 정수
숫자형Short16비트 정수
숫자형Byte8비트 정수
문자형Char1개의 문자
문자형String여러 개의 문자
숫자형Booleantrue / 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

상수는 변수처럼 값을 메모리에 저장하고 이름을 부여한 것이지만 변수와 달리 한 번 저장한 값을 변경할 수 없습니다.

상수 선언

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
    }
}

조건문

조건문이란 어떤 코드를 실행할 것인지를 주어진 조건식의 결과가 참인지 거짓인지에 따라 결정하는 프로그래밍 문법입니다. 코틀린에서는 ifwhen, 두가지 형태의 조건문을 사용할 수 있습니다.

if

if 조건식

if 조건식에는 비교 연산자(==, !=, <, >, >=, <=)와 논리 연산자(&&, ||, !)를 사용한 조건식만 사용 가능하며, 조건식의 결과는 Boolean 타입인 truefalse로 나타납니다.

if문 형태

기본적인 if문

if (조건식) {
    // 조건식이 참일 경우 실행되는 코드 영역
}

ex) var outCount = 0
    var strike = 3
    if (strike > 2) {
        outCount = outCount + 1
    }

if ~ else문

if (조건식) {
    // 조건식이 참일 경우 실행되는 코드 영역
} else {
    // 조건식이 거짓일 경우 실행되는 코드 영역
}

if ~ else if ~ else문

if (조건식 1) {
    // 조건식 1이 참일 경우 실행되는 코드 영역
} else if (조건식 2) {
    // 조건식 1이 거짓이고 조건식 2가 참일 경우 실행되는 코드 영역
} else {
    // 조건식1, 2 모두 거짓일 경우 실행되는 코드 영역
}

변수에 직접 if문 사용하기

코틀린에서는 if문의 결과를 변수에 대입할 수 있습니다. 이때 반드시 else 부분이 필요합니다.

var a = 5
var b = 3
var bigger = if (a > b) a else b

// bigger: 5

if문의 마지막 값을 반환값으로 사용하기

if문의 코드 영역이 여러 줄일 경우 마지막 줄까지 실행한 결과를 변수에 대입합니다.

var a = 5
var b = 3
var bigger = if (a > b) {
    a = a - b
    a
} else {
    b = b - a
    b
}

// bigger: 2

when

when 조건문은 다른 언어의 switch문과 비슷합니다. 하지만 같은 값인지만을 비교하는 switch문과 달리 범위 값도 처리할 수 있습니다.

when 조건문 형태

기본적인 when 조건문

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 사용하기

when 다음에 오는 괄호를 생략하고 if문처럼 사용할 수도 있습니다.

var currentTime = 6
when {
    currentTime == 5 -> {
        // ...
    }
    currentTime > 5 -> {
        // ...
    }
    else -> {
        // ...
    }
}

if문과 when 조건문

값을 특정할 수 있고, 개수가 많지 않은 경우에는 when 조건문을 사용하면 가독성 좋은 코드를 작성할 수 있습니다.

반면 값의 범위가 넓고 값을 특정할 수 없을 경우에는 if문을 사용하는 것이 바람직합니다.

profile
안드로이드 개발자를 꿈꾸는 사람

1개의 댓글

comment-user-thumbnail
2020년 12월 17일

Cool! What is the main reason for which you study Kotlin? Are there any powerful benefits over Java?

답글 달기