[Kotlin] 기본 문법

park_sujeong·2022년 8월 7일
0

Kotlin

목록 보기
3/5
post-thumbnail

오늘은 Kotlin 기본 문법에 대해 알아볼것이다. 참고 자료는 "코틀린 완벽 가이드" 책이다.



주석

Kotlin은 세 가지 주석(comment)을 지원하며, 코드를 문서화할 때 사용한다.

코드용도
//한 줄 주석으로 //로 시작하며 줄이 끝나면 주석도 끝난다.
/* */여러 줄 주석으로 /*로 시작하고 */로 끝난다.
/** */KDoc 여러 줄 주석으로 /**로 시작하고 */로 끝난다.
// 한 줄 주석

/* 
여러 줄 주석
*/

/** 
KDoc 여러 줄 주석
자바독(Javacdoc)과 비슷한 리치 텍스트 문서를 생성하기 위해 사용
*/



변수 정의

Kotlin에서 변수를 정의하는 가장 간단한 형태는 다음과 같다.

요소의미
val 키워드값을 뜻하는 value에서 유래
변수 식별자새 변수에 이름을 부여하고, 나중에 이를 가리킬 때 사용
변수 초기값= 기호 뒤에 초기값



예시

아래 함수처럼 a, b 변수는 val로 선언되었으며, 표준 입력으로 받아오는 값을 정수로 변환한 값이 초기값이 된다. 이때 a,b는 지역 변수라고 한다.


// 사용자에게 정수 두 개를 물어보고 그 두 수의 합을 표시하는 프로그램

fun main() {
    val a = readLine()!!.toInt()
    val b = readLine()!!.toInt()

    println(a + b)
}

visual studio code에서 실행할때 run code로 실행하면 출력에 입력값을 못넣기 때문에 터미널에서 명령어를 쳐서 실행했다.

빨간색 박스 안에 1과 10이 readLine()으로 입력한 값으로 파란색 박스 안은 그 두 개를 더한 값인 11이다.

코드용도
val불변(immutable) 변수의 키워드, 초기값에서 값 변경 불가능
readLine()표준 입력(standard input)에서 한 줄을 읽어서 문자열로 반환해주는 표준 코틀린 함수
!!readLine()뒤에 느낌표(!)가 두개 붙는것은 readLine의 결과가 null이 절대 아니라는 것을 의미(not-null assertion). 만약, null이 값으로 들어오면 예외를 발생시킴
toInt()코틀린 String 클래스가 제공하는 메서드(method)로, 메서드가 호출된 대상 문자열을 정수값으로 변환
println인자로 받은 값을 표준 출력에 출력



혹시 위 함수에서 어색한 점이 있는가?
보통 Java에서 변수 선언을 할때는 변수 타입을 같이 정의한다. 하지만 위 함수에서는 변수 타입이 정의되지 않았다. 이유는 Java와는 다르게 Kotlin은 타입 추론(type inference)라는 기능이 있기 때문이다. 타입 추론은 컴파일러가 코드의 문맥에서 타입을 도출해주는 언어 기능이다. 위 함수에서는 컴파일러가 toInt() 함수가 Int타입의 값을 반환한다는 사실을 알고 있으며, 이 결과를 변수에 대입했기 때문에 변수 타입 또한 Int로 추론한다.
타입 추론 덕분에 코틀린은 강한 타입 지정(strongly typed) 언어인 동시에 사용자가 불필요한 타입 정보를 코드에 추가해서 코드가 지저분해지는 일을 막을 수 있다.


그렇다면, 변수 타입을 명시하고 싶을때는 어떻게 하면 될까? 아래 예시처럼 하면 된다

val a: Int = 100
val b: String = "hello"





식별자

식별자는 변수나 함수 등 프로그램에 정의된 대상에 붙은 이름이다. 코틀린 식별자는 두 가지로 구분된다.

종류조건
임의의 문자열- 오직 문자, 숫자, 밑줄 문자(_)만 포함. 숫자로 식별자를 시작할 수는 없다.
- 밑줄로만 이뤄질 수도 있다. 하지만 이런 식별자(_,__,___ 등)는 모두 미리 예약된 식별자이므로 일반적인 식별자로는 사용될 수 없다.
- 하드 키워드(hard keyword: val, fun 등)를 식별자로 쓸 수는 없다.
작은역따옴표(`)로 감싼 식별자- 두 작은 역따옴표 사이에는 빈 문자열을 제외한 아무 문자열이나 와도 된다.
- 가독성을 위해 이런 기능은 피해야 하지만 자바에서 식별자로 사용할 수 있는 단어가 코틀린에서 키워드인데 코틀린에서 자바에서 정의한 식별자를 가져와 써야 할 때가 있기 때문에 존재한다.





가변 변수

val 키워드를 사용한 변수는 모두 불변(immutable) 변수다. 불변 변수는 한번 초기화하면 다시는 값을 대입할 수 없는 변수다. Java에서 final 변수와 비슷하다. 불변 변수를 사용하면 함수가 부수 효과를 일으키지 못하고, 함수형 스타일 코드를 장려할 수 있으며, 이로 인해 코드에 대한 추론시 쉬워지기 때문에 가능하면 불변 변수를 많이 사용해야 한다. 하지만 필요한 경우 val(immutable) 대신 var 키워드를 사용해 가변(mutable) 변수를 정의할 수 있다.

기본적인 문법은 불변 변수의 경우와 같으며, 변수 값을 바꾸고 싶다면 대입 연산(=)을 사용한다. 코틀린은 복합 대입 연산(argumented assignment)라는 대입과 +, -, *, /, % 등의 이항 연산을 조합한 연산도 제공한다.

// 기본 문법 
var sum = 1
sum = sum + 1
  
// 이항 연산자, sum = sum + 1과 같은 식  
sum += 1




JAVA와 Kotlin의 차이점

  • Kotlin은 Java와 다르게 변수 정의 뒤에 세미콜론(;)을 생략해도 된다.
  • Kotlin 식별자에는 달러 기호($)를 쓸 수 없다.





마치며

다음은 Kotlin의 기본 타입을 알아볼것이다.

profile
Android Developer

0개의 댓글