Coding Memo

Kotlin 기본 (memo#1) 본문

Language/Kotlin

Kotlin 기본 (memo#1)

minttea25 2020. 12. 29. 15:11

*이 글은 완전 초보가 작성한 메모장 용 글입니다!*

(혹시 오류나 잘못된 점이 있으면 댓글로 알려주시면 정말 감사하겠습니다!)

 

Kotlin은 JetBrains에서 공개한 언어로 JVM에서 동작 가능한 언어이다.

안드로이드 앱 개발에서 Java와 함께 사용되고 있다.

 

확장자: .kt, .kts

 

인코딩 방식: UTF-16 BE

 

다른 언어와 비슷하게 클래스 이름은 대문자로(파스칼 표기법), 함수 이름과 변수 이름은 소문자로(카멜 표기법) 시작하게 만들면 된다.


주석 처리

 

Java나 C 등과 동일하게

한 줄 주석처리는 '//'을 이용하고

여러 줄 주석처리는 /* */'를 이용한다.

주석처리

 


타입 종류

 

Java와 거의 동일하다.

 

숫자형

정수: Byte, Short, Int, Long

실수: Float, Double

 

그 외에 Char, String 등이 있고 Java와 동일하게 Boolean 타입도 지원한다.

 

Long 타입을 나타내기 위해서는 값 뒤에 'L'을 붙이고

Float 타입을 나타내기 위해서는 값 뒤에 'f'를 붙인다.

 

참고

코틀린은 10진수, 16진수, 2진수 만을 지원한다. (8진수는 지원하지 않는다고 한다.)

16진수 표기: 값 앞에 '0x' 붙이기

2진수 표기: 값 앞에 '0b' 붙이기

여러가지 타입

참고: 실제로 추론되는 타입이 어떤 타입인지 확인은 추후에 'is' 함수를 써서 확인해보겠다.


변수의 선언

 

var : variable, 값 변경 가능 (mutable)

val : value, 값 변경 불가능 (immutable)

 

val 값 재할당 오류

 

단, val은 값 자체를 변경 불가능하지만 참조하는 객체 내의 값은 변경이 가능하다.

(가리키고 있는 주소가 가지고 있는 값만 변경이 불가능하다고 생각하면 될 것 같다.)

 

코틀린은 타입 추론을 한다. (Javascript와 비슷하다.)

단순히 'var a = 10' 으로 변수를 선언해도 a를 Integer 형이라고 추론하여 타입을 지정한다.

물론 프로그래머가 직접 타입을 지정해 줄 수 있다.

변수 이름 뒤에 ':[type]'을 붙여주면 된다.

ex)

var a:Int = 10

var b:Double = 1.1;

var c:String = "Hello"

 

 

코틀린은 기본적으로 숫자형에 대해 null 값을 허용하지 않는다.

만약 null을 할당하게 되거나 값을 초기화해주지 않으면 문법 에러가 발생하여 컴파일이 되지 않는다.

 

null 값을 허용하게 하려면 변수 이름 뒤에 '?'를 붙여주면 된다.

ex) var a:Int? = null

null 값 허용
null 결과


함수 선언

 

예를 보는 게 빠를 것 같다.

function example
function example result

함수를 선언할 때는 'fun'을 이용해 함수를 선언할 수 있다.

 

인자에는 Java와 다르게 (var a, var b) 이렇게 작성하는 것이 아니라 var을 생략하고 ':'를 이용해 반드시 타입을 지정해주어야 한다.

argument error

return 타입은 특이하게 이름 뒤에 :로 구분하여 타입을 지정해준다. 만약 return 타입이 없다면 따로 지정하지 않아도 된다.

return type error

(return 타입도 추론이 될까 해보았는데 return 값이 있다면 반드시 알맞은 타입을 지정을 해주어야 하는 것 같다.)

 

코틀린은 위의 예시와 같이 간단한 함수를 한 줄로 바꿔서 작성할 수 있는 단일 표현식 함수(single-expression function)로 작성 가능하게 해 준다.

single-expression function

결과는 '3'으로 동일하다.

'Language > Kotlin' 카테고리의 다른 글

Kotlin 인터페이스  (0) 2021.01.02
Kotlin 고차 함수 / 람다 함수  (0) 2020.12.31
Kotlin 클래스  (0) 2020.12.30
Kotlin 접근 제어자  (0) 2020.12.30
Kotlin 조건문/반복문  (0) 2020.12.30