kotlin

kotlin 문법 정리 (1)

이나주니 2023. 6. 17. 16:40
반응형

특징

자바를 대체 하기 위한 개발 언어

자바의 몇몇 약점들을 개선

자바 가상머신과 호환 되도록 제작


클래스 이름의 표기법은 파스칼 표기법

ClassName

함수 변수 이름 카멜 표기법

functionName


코틀린으느 두가지 방식으로 변수를 선언

var

일반 적인 변수

언제든지 읽기 쓰기 가능

val

런타입 변수로 한번 실행되면 수정 되지 않음

  • 클래스에 선언된 변수
  • Property
  • 이외에 Scope 내에 선언된 변수
  • Local Variable(로컬 변수)

※ 코틀린은 기본적으로 NUll을 허용하지 않음

 

fun main() {
     var a : Int
    
    println(a)
		// Variable 'a' must be initialized
		// 에러 발생
}

fun main() {
     var a : Int = 123
    
    println(a)
		// 123
 
}

만약 null을 허용하고 싶다면 아래럼 null을 허용 해줄수 있음

※ 꼭 필요한 경우에만 사용해주자!

var a:Int? = null

 

코틀린 기본자료형 (자바와 동일)

정수형

Byte = 8bits

Short = 16bits

int = 32bits

Long = 64bits

 

var intValue:Int = 123
var LongValue:Long = 123L // 뒤에 L 표기
var intValueByHex:Int = 0x1af // 16 진수의 경우 앞에 0x 붙여줘야함
var intValueByBin:Int = 0b10110110 // 2진수의 경우 0b 를 앞에 붙여 준다

//코틀린은 8진수의 표기는 지원하지 않음

 

실수형

Float 32bits

Double 64bits

 

var intValue:Double = 123.5
var LongValueWithExp:Double = 123.5e10 // 지수 표기법 추가 
var floatValue:Float = 123.5f // 뒤에 소문자 또는 대문자 F를 붙여주면 됨

 

형변환

// 형 변환 함수
toByte()
toShort()
toInt()
toLong()
toFloat()
toDouble()
toChar()

ex)
var a:Int = 123
var b:Long = a.toLong()

 

※ 코틀린은 명시적 형변환 만 지원함

다른 언어들이지원하는 암시적 형변환은 지원하지 않음

  • 명시적 형변환 : 변환될 자료형을 개발자가 직접 지정함
  • 암시적 형변환 : 변수를 할당할 당시 자료형을 지정하지 않아도 자동으로 형 변환 됨

 

 

배열

// 배열에 값 지정 
var intArr = arrayOf(1,2,3,4,5)
// 비어있는 배열을 선언하고 싶으면
var nullArr = arrayOfNulls<Int>(5)

// 자바와 마찬가지로 intArr[2] = 8 
// println(intArr[4])
// 특정 배열 위치에 값을 할당, 쓰기가 가능

 

타입 추론

val StringValue:String = "test"
val StringValue = "test"

함수

fun main() {    
    println(add(5,6,7))
// 18 출력
}

// 뒤에 return 타입 지정
// void 와 같이 리턴 타입 없으면 return 타입 안적어 줘도 됨
fun add(a: Int, b: Int, c: Int): Int {
    return a + b + c
}

단일 표현식 함수 (반환형의 타입 추론 가능 함)

fun main() {    
    println(add(5,6,7))
// 18 출력
}
fun add(a: Int, b: Int, c: Int) = a + b + c

조건문 (다른 언어들과 같음)

  • if 문
fun main() {
    var a = 7
    if (a > 10) {
    	println("a가 10보다 크다")    
    } else {
        println("a가 10보다 작다") 
    }
}
  • when 문 (switch문 개념)
fun main() {
    doWhen(1)
    doWhen(12L)
    doWhen(3.233)
}
fun doWhen(a: Any) {
    when(a) {
        1 -> println("정수 1입니다")
        is Long -> println("Long 타입입닌다")
        !is String -> println("String 타입이 아닙니다")
    }
}

 

반복문

  • while 문
fun main() {
 	var a = 0
    while(a < 5) {
        println(a)
        a++
    }
}

0
1
2
3
4
  • for 문
fun main() {
    for(i in 0..4) { // 0에서 4까지
        println(i)
    }
}
0
1
2
3
4

// 증가 값을 1이 아닌 다른값으로 하고 싶다면
//step 사용
fun main() {

    for(i in 0..9 step 3) {
        println(i)

    }
}
0
3
6
9

// 감소 연산자 사용
fun main() {
    for(i in 0..9 step 3) { // 0에서 9까지
        println(i)
    }
}

4
3
2
1
0

//char 형으로도 반복문 사용가능
fun main() {
    for(i in 'a'..'e') {
        println(i)
    }
}
a
b
c
d
e

 

 

반응형