본문 바로가기
2023년 이전/kotlin

코틀린(Kotlin)의 기초

by JeongUPark 2019. 8. 21.
반응형

[출처 -  Kotlin In Action] [아래 내용들은 Kotlin In Action을 공부하면서 스스로 정리한 내용입니다] 

 

Kotlin 프로그래밍에 대해 공부를 시작해 보려 합니다.

 

Kotlin에 대한 설명 혹은 장점 사용처 등은 다른 글에서 쓰도록 하겠습니다.

 

아래는 흔한 Hellow World 문입니다.

 

fun main(args:Array<String>){
    println("Hello, World")
}

 

위의 결과는 Hello, World가 나올 것이고, 위의 code를 통해 간단한 Kotlin 프로그래밍 특징을 보면,

 

1. 함수를 선언할 때는 fun을 사용한다.
2. 파라미터 이름 뒤에 그 파라미터의 타입을 쓴다. ex) args:Array<String>
3. 자바와 달리 꼭 클래스 안에 함수를 넣어야 할 필요가 없다.

4. 배열도 일반적인 클래스와 마찬가지다. 코틀린은 배열 처리를 위한 문법이 따로 존재하지 않는다.
5. system.out.println 할 필요 없이 println으로 출력할 수 있다. 이 외에도 자바와 다르게 간결하게 쓸 수 있는 함수들이 존재한다.
6. 세미콜론(;)을 안 붙여도 된다.

 

정도의 특징을 확인할 수 있습니다.

먼가 좀 더 직관적이고 간결하고 편의성이 많이 제공된 느낌입니다.

 

그럼 kotlin에서 함수의 특징을 java와 비교해보면

 

Int max(a, b){
  return (a > b) a ? b ;
}

 

JAVA의 경우 위와 같이 값 비교를 통해 큰 값을 반환한다면, kotlin의 경우 

 

fun max(a : Int,  b:Int) : Int {
    return if(a>b) a else b
}

 

위와 같이 fun으로 함수라 표시해주고, 입력 값 타입 및 더 직관적으로 작성됩니다. 또한,

 

1. fun max(a : Int , b : Int) : Int = if(a > b) a else b
2. fun mxa(a : Int , b : Int ) = if(a > b) a else b

 

위와 같이 간결하게 생략할 수 있습니다.

 

이렇게 생략이 가능한 이유는 Kotlin에서 if는 문(statement)이 아니라 식(expression)이기 때문에 가능합니다. 그리고
2번 같이 반환인 Int가 생략 가능한 이유는, 식이 본문인 경우 반환 타입을 적지 않아도 complier가 반환 타입을 정해준다. 이런 기능을 type inference라고 한다. 식이 본문인 경우만 가능하다. 블록인 경우에는 return문을 통해 값을 반환해야 한다.

 

그리고 kotlin에서 변수  특징을 본다면, Kotlin에서는 변수의 타입을 따로 지정하지 않아도 상관이 없습니다.

 

val a = "가나다라마바사"
val b = 42
var c:Int = 42

 

c처럼 그 타입을 Int로 명시를 할 수 있지만, a와 b처럼 따로 명시를 하지 않더라도,  complier가 분석하여 지정해주기 때문입니다.

 

var a :int
a = 42      // 올바른 선언

var b ;
b  =  42 // error

 

단, 위의 b와 같이 초기화 식을 사용하지 않고 변수를 선언하면 변수에 저장될 값을 모르기 때문에 complier가 타입을 추론할 수 없습니다. ( 작성자 생각 : 아마 초기화 식을 통하여 complier가 타입을 추론하는 것 같습니다 다.)

그리고 한번 선언된 변수의 타입은 고정되어 바뀌지 않습니다.

 

var a = 42
a = "abcdefg"  

 

위의 경우 a가 42로 Int 타입으로 선언되어 a = "abcdefg"인 문자열로 선언될 수 없습니다.

 

그리고 위에 적혀 있는 변수 관련 code 들을 보면 val, 과 var 두 가지 타입이 있는데, 이는 

   

   val : 자바의 final과 같다고 생각하면 쉽다.

   var : 자바의 일반 변수

 

로 설명할 수 있습니다. 

 

마지막으로, 문자열 템플릿 사용은 다음과 같이 사용하면 됩니다.

 

fun main(args:Array<String>){
    var name = "kotlin"
    println("Hellow $name")
}

 

위와 같이 작성하면 $name에 kotlin이 적용됩니다. 즉, 자바의 ("Hellow " + name)와 같습니다. 만약 '$'을 사용하고 싶다면 println("\$x")를 사용하면 결과 값이 $x로 출력됩니다.

다음과 같이 사용하면 복잡한 식도 적용할 수 있다.

 

fun main(args:Array<String>{
   println("Hellow ${args[0]}")
}
fun main(args:Array<String>{
   println("Hellow ${if(args.size>0) args[0] else "nobody"}")
}

 

, 중괄호{}를 사용하면 됩니다.

 

kotlin의 기초에 대해서 작성해 보았습니다.

반응형