코틀린(Kotlin) 기본 문법(자료형, 형변환, 배열)

Notepad96

·

2020. 9. 15. 23:50

300x250

 

 

 
 

1. Kotlin 자료형

 

코틀린은 자바와 100% 호환이 가능하며 그에 따라서 문법적으로 유사한 점이 많이 있다.

 

대신 코틀린은 세미콜론( ; )을 사용하지 않으므로 들여 쓰기, 불필요한 공백을 주의해야 한다.

 

 

 

1-1. 변수 선언 - VAR vs. VAL

변수를 선언하기 위해서는 2가지 방법이 있다.

 

간단하게 정의하자면 var은 변수 val은 상수이다.

 

- var : 값을 초기화 한 이후 또 다시 여러 번 값을 변경할 수 있다.

 

- val : 한번 값을 할당하면 값을 변경하거나 할 수 없다.

 

 

따라서 고정된 값을 갖는 것은 val로 선언함으로써 의도치 않은 에러를 줄일 수 있다.

 

 

 

 

1-2. 자료형

 

기본 자료형은 Byte, Short, Int, Long, Float, Double, Char, Boolean처럼 자바와 같다.

 

각 자료형의 Size 등 자세한 내용은 아래 사이트를 참고하면 된다.

 

https://kotlinlang.org/docs/reference/basic-types.html

 

Basic Types: Numbers, Strings, Arrays - Kotlin Programming Language

 

kotlinlang.org

 

변수 선언 시 자료형을 명시해 주어도 되고 명시하지 않아도 된다.

 

하지만 특정한 경우가 아니면 의도치 않은 에러를 줄이기 위해서는 명시해 주는 것을 추천한다.

 

 

 

 

1-3. 별칭(typealias)

 

typealias를 사용하여서 이미 존재하는 타입의 별명을 부여할 수 있다.

 

typealias Str = String 

fun main() { 
   var s:Str = "abc" 
   println(s) 
   println(s is String) 
}

 

위에서는 String 타입의 Str로 별명을 준 후 사용하는 예이다.

 

 

 

 

1-4. 예제

(직접 수정해보며 실행해볼 수 있다. 로드가 안된다면 새로고침 or play.kotlinlang.org/)

 

 

- 숫자 사이 _ 을 넣어서 구분자처럼 사용할 수 있다. ( 1000 단위로 구분하기 위하여 _ 사용 )

 

 

- 코틀린에서는 기본적으로 non-null type이다. 에러 발생을 줄이기 위해 null을 집어넣을 수 없다.

ㄴ null을 사용할 수 있게 하려면 예제의 "Char?"처럼 자료형 뒤에 "?"를 붙여준다.

 

 

- 다중 라인 문자열을 할당하기 위해서는 위 예제처럼 따옴표를 3개 사용해 준다.

 

 

- val은 한번 값을 할당한 후 변경할 수 없기 때문에 e = 30 구문을 실행한다면 error가 발생한다.

 

 

- 문자열을 출력할 때 $a처럼 값을 출력할 수도 있고 ${e+e}처럼 계산을 할 수도 메소드를 실행할 수도 있다.

 

 

 

 

 


2. Kotlin 형변환


형변환은 어느 자료형을 다른 자료형으로 변환하는 과정이다.

 

형변환 메소드들은 toChar(), toInt(), toString()와 같이 to___() 형식으로 되어있다. 

 

단, 자바와 같은 다른 언어들과 다르게 형변환 시 발생할 수 있는 오류를 막기 위하여 자동(강제) 형변환은 없다.

 

 

 

 

2-1. 형변환 메소드

Int형으로 변환하고 싶다면 toInt()처럼 직관적으로 알 수 있게 메소드 이름이 되어있다.

 

toByte(), toShort(), toInt(), toLong(), toFloat(), toDouble(), toChar(), toString()

 

사이즈가 큰 데이터 형에서 작은 데이터 형으로 형변환 시에는 값이 손상될 수 있으므로 범위에 유의하여야 한다.

 

 

toInt(), toLong()와 같은 메소드 경우 보면 괄호안의 Int를 넣는 것과 안 넣는 것이 있는데 이는 해당 문자열을 N진수의 수일 경우에 이를 10진수로 변환한 값을 리턴해준다.

 

 

toChar() 은 숫자를 유니코드의 문자로 변환해준다. (String 형 데이터의 사용불가)

 

 

(직접 수정해보며 실행해볼 수 있다. 로드가 안된다면 새로고침 or play.kotlinlang.org/)

 

- a 를 보면 toInt(4)를 해주어서 int형으로 변환하였다.

 

따라서 문자열 "123"을 4진수로 보고서 10진수로 변환한다면 (16*1) + (4*2) + (1*3) = 27 이 된다.

 

 

- 타입을 확인할 때는 "변수 is 타입" or "변수 !is 타입" 식으로 확인한다. 참이면 true, 거짓은 false를 리턴한다.

 

 

- sum을 보면 Int형 a와 Long형 b를 더했더니 Size가 더 큰 Long 타입을 갖게 된다.

 

 

- sum2를 보면 Short형인 2개의 값을 더하였더니 자바와 동일하게 Int형으로 계산되어 저장되었다.

 

단, sum2 선언 시 따로 타입을 지정해주지 않아서 타입이 변환된것처럼 보이는 것 뿐이지 주석된 sum2 = a + b부분을 실행한다면 이미 sum2는 Int형이므로 error가 발생한다.

 

 

- toChar 메소드를 사용하여서 65를 'A'로, 97를 'a'로 변환하였다.

 

 

- toString 메소드를 사용하면 String으로 변환할 수 있다.

 

 

- 0x로 시작하는 것은 16진수를, 0b로 시작하는 것은 2진수를 나타낸다. 이러한 형태의 문자열을 toDouble()를 사용하여 형변환을 해주면 10진수로 변환된 수를 얻을 수 있다.

 

 

 

 

 


3. Kotlin 배열(Array)

 

배열은 초기화 후 값을 추가하거나 삭제할 수 없는 고정된 크기를 갖지만 값이 메모리에 연속되어 저장되어 있어 빠르다

 

따라서 일정한 개수의 값들을 저장한다면 Array를 사용하면 좋다.

 

 

 

3-1. Array 생성

 

Array를 생성하기 위해서는 제네릭 타입을 명시하여 Array<Int>, Array<String> 선언할 수 있다.

 

이 경우 Array<Int>(4) 처럼 뒤에 size를 지정해주어야 한다.

 

만약 여기서 초기화 해줄 값을 지정해주고 싶다면 뒤에 { }를 사용하여서 지정해준다.

 

 

 

ex) 크기가 4인 배열을 0으로 초기화한다.    =>    Array<Int>(4) {0}

 

ex) 크기가 5인 배열을 각 index값으로 초기화한다.    =>    Array<Int>(5) {it}

 

 

 

3-2. 기본형 타입 Array

 

여기서 기본형이란 Int, char, short, long, double 등등을 말한다.

 

이 같은 기본형은 배열을 생성할 시 (기본형) Array(4)처럼 배열을 생성할 수 있다.

 

Int형이라면 IntArray(3), double형이라면 DoubleArray(6) 처럼 생성할 수 있다.

 

 

 

 

 

3-3. 예제

(직접 수정해보며 실행해볼 수 있다. 로드가 안된다면 새로고침 or play.kotlinlang.org/)

 

 

- forEach 문을 사용하여 간단한 for문을 돌려 결과를 확인하였다.

(값을 딱히 지정해주지 않아여도 기본적으로 it로 접근할 수도 있다.)

 

 

- 배열의 길이를 확인하기 위해서는 .size 를 하면 된다.

 

 

- arrayOf() 를 사용하여서 직접 값을 지정해 넣어줄 수도 있다.

 

 

- 값을 초기화할 시 사용하는 it는 해당 원소의 index값을 갖는다.

 

 

- 배열 생성 시 제네릭 타입을 지정할 시 타입이 확실치 않다면 Any를 사용할 수 있다. Any는 어느 타입이든 호환되는 타입이다.

 

 

 

 

 

 


4. 참 조

 

 

Basic Types: Numbers, Strings, Arrays - Kotlin Programming Language

 

kotlinlang.org

 

 

 

 

300x250