코틀린(Kotlin) 기본 문법(자료형, 형변환, 배열)
Notepad96
·2020. 9. 15. 23:50
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
변수 선언 시 자료형을 명시해 주어도 되고 명시하지 않아도 된다.
하지만 특정한 경우가 아니면 의도치 않은 에러를 줄이기 위해서는 명시해 주는 것을 추천한다.
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. 참 조
'Kotlin > Syntax' 카테고리의 다른 글
Kotlin 접근 지정자(= 가시성 지정자, Visibility Modifiers) (0) | 2020.10.01 |
---|---|
Kotlin null, nullable 타입 (0) | 2020.09.23 |
Kotlin 예외(Exception) 처리 (0) | 2020.09.21 |
코틀린(Kotlin) 클래스 (0) | 2020.09.18 |
코틀린(Kotlin) 제어문(for, if, when, while) (0) | 2020.09.17 |