Kotlin 이 2017 Google I/O 에서 Android 정식언어로 지정되기 전부터 관심을 가지고 공부를 하고 있었는데,

오늘 GDG 관련 행사에서도 Kotlin 에 대한 관심이 많이 높아 졌음을 다시 한 번 느낄 수 있었다. 


실제로 Kotlin을 사용해서 개발을 하다 보면 편리하거나 간결한 방법 보다는 기존의 Java와 같은 스타일로 코드를 작성하게 되는데

Basic Syntax를 정리하면서 새로운 문법들을 활용해서 보다 간결한 소스 코드를 작성 할 수 있도록 해야겠다. 



Kotlin을 사용함으로 인해서 얻을 수 있는 장점은 다음과 같다. 

1. Null Safe를 통한 코드 안정성 증가 

2. LOC(Line Of Coverage)  감소

3. Modern Program Language 스타일 코딩 


Kotlin의 Basic Syntax를 활용하는 것 만으로도 저 세개를 모두 만족 시킬 수 있을거 같다.



Kotlin Basic Type



Numbers


Kotlin의 built-in Type은 자바와 매우 비슷하다.

Type

Bit width

Double

64

Float

32

Long

64

Int

32

Short

16

Byte

8


Underscores in numeric literals


숫자형 상수의 경우에 가독성이 좋도록 "_" 언더바를 활용하여 표현 할 수 있다. 


fun test() {

val salary = 5_000_000
val bankAccount = 1234_5679_124L
val salaryHex = 0xFF_EE_AA

}

상수의 길이가 길어지거나 의미부여가 필요할때 활용하면 좋을거 같다.




Explicit Conversion


숫자형의 다른 표현방법 때문에 작은타입(예: Int) 가 큰 타입(예:Long)의 자식타입이 아니다. 

아래와 같이 Long 타입인 b 변수는 Int 타입의 변수 a 변수를 담을 수 없다. 


fun test() { // 컴파일 에러
val a : Int = 100
val b : Long? = a
}

fun test() { // 컴파일 성공
val a : Int = 100
var b : Long? = a.toLong() //명시적으로 호출
}



Operations


Kotlin에서는 기본적인 수학연산자들을 제공한다. 

fun test() {
// 2를 왼쪽시프트 2만큼 하고 0x00FF와 bitwise xor 연산을 해라
val x = (2 shl 2) xor 0x00FF
}


  • shl(bits) – signed shift left (Java's <<)
  • shr(bits) – signed shift right (Java's >>)
  • ushr(bits) – unsigned shift right (Java's >>>)
  • and(bits) – bitwise and
  • or(bits) – bitwise or
  • xor(bits) – bitwise xor
  • inv() – bitwise inversion



Arrays


Kotlin에서의 배열은 Array 클래스로 나타낸다. 이 클래스는 get과 set function을 가지고 있고 배열 형태로 나타낸다. 

배열을 만들때는 arrayOf() 를 이용해서 값을 가지고 생성하거나 arrayOfNulls()를 활용해서 Null Element 들을 가지고 배열을 생성할 수도 있다.

fun test() {

var numberArray : Array<Int> = arrayOf(1,2,3,5,6) // Create [1,2,3,5,6]
var nullArray= arrayOfNulls<Int>(10) // create with null element
val firstElement = numberArray.get(0)
var arryaSize = numberArray.size

}


또다른 방법은 Factory Function을 이용해서 생성을 하는 방법인데, 배열의 사이즈를 가지고 각 인덱스를 기반으로 초기 값을 셋팅 할 수 있다. 

fun test() {
// Create String Array ["0","2","4","6","8"]
val asc = Array( 5 , { index -> (index*2).toString() })
}




Strings


String은 immutable 하며  character 인덱스를 가지고 접근이 가능하다. (for-loop로 문자열 순회가 가능 : 자바와 동일)


fun test() {
//String Literals
val s = "Hello, world!\n"

//raw string delimited
val text = """
var i : Int = 0
while(true){
i++
}
"""
}



String Templates


String에는 템플릿 표현식이 들어갈 수 있다. 이는 처리된 결과 값이 문자열에 포함되어 있음을 의미 한다. 이를 표현하기 위해서 $ 를 붙여서 표현한다. 

또는 { } 를 붙여서도 표현이 가능하다. $s.length 와 ${s.length} 는 다르게 표현될 수 있다.


fun test() {
val i = 10
val s = "i = $i" // evaluates to "i = 10"

val l = "abc"
val str = "$l.length is ${l.length}" // evaluates to "abc.length is 3"
}

다음 포스팅에서는 Kotlin 의 Control Flow 에 대해서 설명하겠다.

'Programming' 카테고리의 다른 글

Kotlin Syntax (3) - Null Safe  (0) 2017.07.07
Kotlin Syntax (2) - Control Flow  (0) 2017.07.05
Java8 Lambda 최대값 갯수 표현식  (0) 2017.06.04
[JavaScript] Switch - Fall Through  (0) 2017.05.28
RecyclerView, Cardview Example  (0) 2017.05.28

+ Recent posts