본문 바로가기
Kotlin

Kotlin - 기본 문법1

by sinabeuro 2023. 3. 27.
728x90

1. 함수 선언

함수를 선언하려면 fun이라는 키워드를 이용

반환 타입을 선언할 수 있으며 생략하면 자동으로 Unit 타입이 적용

함수의 매개변수에는 var나 val 키워드를 사용할 수 없으며 val이 자동으로 적용

=> 매개변숫값은 변경 불가능하다.

 

함수의 매개변수에는 기본값 선언 가능

fun main() {
	fun some(data1: Int, data2: Int = 10): Int {
		return data1 * data2
    }
}

 

매개변수명을 지정하여 호출하는 것을 명명된 매개변수라고 하며, 이렇게 하면 함수 선언문의 매개변수 순서에 맞춰호출하지 않아도 됩니다.

some(date2 = 20, data1 = 10)

 

2. 컬렉션 타입

List, Set, Map

  • List: 순서가 있는 데이터 집합으로 데이터의 중복을 허용합니다.
  • Set: 순서가 없으며 데이터의 중복을 허용하지 않습니다.
  • Map: 키와 값으로 이루어진 데이터 집합으로 순서가 없으며 키의 중복은 허용하지 않습니다.

 

Collection 타입의 클래스는 가변 클래스와 불변 클래스로 나뉩니다.

불변 클래스는 초기에 데이터를 대입하면 더 이상 변경할 수 없는 타입입니다.

가변 클래스는 초깃값을 대입한 이후에도 데이터를 추가하거나 변경할 수 있습니다.

 

 

컬렉션 타입 - Array 배열 표현

배열의 데이터에 접근할 때는 대괄호([])를 이용해도 되고 set()이나 get() 함수를 이용할 수도 있습니다.

fun main() {
	val data1: Array<Int> = Array(3, { 0 })
    data1[0] = 10
    data2[1] = 20
    data1.set(2, 30)
    
    
   println(
   	"""
    	array size : ${data1.size}
        array data : ${data1[0]}, ${data[1]}. ${data1.get(2)}
	"""
   )
}

 

 

기초 타입이라면 Array를 사용하지 않고 BooleanArray, ByteArray, CharArray, DoubleArray, FloatArray, IntArray, LongArray, ShortArray클래스를 이용할 수도 있습니다.

arrayOf()라는 함수를 이용하면 배열을 선언할 때 값을 할당할 수도 있습니다.

기초 타입을 대상으로 하는 booleanArrayOf(), byteArrayOf(), char ArrayOf(), doubleArrayOf(), floatArrayOf(), intArrayOf(), longArrayOf(), shortArrayOf() 함수를 제공

 

주로 arrayOf() 를 쓰게 될 것이다.

fun main() {
	val data1 = arrayOf<Int>(10, 20, 30)
    println(
    	"""
        array size : ${data1.size}
        array data : ${data1[0]}, ${data1[1]}, ${data1.get(2)}
        """
    )
}

 

 

컬렉션 타입 - Map 표현

Map 객체는 키와 값으로 이루어진 데이터의 집합

Map 객체의 키와 값은 Pair 객체를 이용할 수도 있고 ‘키 to 값’ 형태로 이용할 수도 있습니다.

fun main() {
	var map = mapOf<String, String>(Pair("one", "hello"), "two" to "world")
    println(
        """
        map size : ${map.size}
        map data : ${map.get("one")}, ${map.get("two")}
        """
    )
}

 

3. 조건문

&&, || 기호 사용

 

코틀린에서 if~else는 표현식으로도 사용할 수 있습니다.

표현식이란 결괏값을 반환하는 계산식을 말합니다.

val result = if (data > 0) {
	println("data > 0")
    true
} else {
	println("data <=0 ")
    false
}

 

조건문 when

when 문의 조건으로 정수가 아닌 다른 타입의 데이터를 지정할 수도 있습니다

fun main() {
	var data = 10
    when (data) {
    	10 -> println("data is 10")
        20 -> println("data is 20")
        else -> {
        	println("data is not valid data")
        }
    }
}

 

when 문에서는 조건을 데이터 타입, 범위 등으로 다양하게 명시할 수 있습니다.

is타입을 확인하는 연산자이며 in범위 지정 연산자입니다.

fun main() {
	var data:Any = 10
    when (data) {
    	is String -> println("data is String")
    	20, 30 -> println("data is 20 or 30")
        in 1..10 -> println("data is 1..10")
        else -> println("data is not valid")
    }
}

 

when은 if 문과 마찬가지로 표현식으로도 사용할 수 있습니다.

fun main() {
	var data = 10
    val result = when {
    	data <= 0 -> "data is <= 0"
    	data > 100 -> "data is > 100"
        else -> "data is valid"
    }
    println(result)
}

 

4. 반복문

반복문 for와 while

for 문은 제어 변숫값을 증감하면서 특정 조건이 참일 때까지 구문을 반복해서 실행합니다.

or 문의 조건에는 주로 범위 연산자인 in을 사용합니다.

for (i in 1..10) { ... } → 1부터 10까지 1씩 증가

for (i in 1 until 10) { ... } → 1부터 9까지 1씩 증가(10은 미포함)

for (i in 2..10 step 2) { ... } → 2부터 10까지 2씩 증가

for (i in 10 downTo 1) { ... } → 10부터 1까지 1씩 감소

 

 

컬렉션 타입의 데이터 개수만큼 반복

indices는 컬렉션 타입의 인덱스값을 의미

인덱스와 실제 데이터를 함께 가져오려면 withIndex() 함수를 이용

fun main() {
	var data = arrayOf<Int>(10. 20, 30)
    for (i in data.indices) {
    	print(data[i])
        if (i !== data.size - 1) print(",")
    }
}


fun main() {
	var data = arrayOf<Int>(10. 20, 30)
    for ((indexm value) in data.withIndex()) {
    	print(value)
        if (index !== data.size - 1) print(",")
    }
}

 

 

while 문은 조건이 참이면 중괄호 {}로 지정한 영역을 반복해서 실행

fun main(args: Array<String>) {
	var x = 0
    var sum1 = 0
    while (x < 10) {
    	sum1 += ++x
    }
    println(sum1)
}

 

728x90

'Kotlin' 카테고리의 다른 글

코틀린 - Object 함수(Companion)  (0) 2023.05.01
코틀린 - 접근 제어자  (0) 2023.05.01
코틀린 - 클래스 생성자와 상속  (0) 2023.05.01
Kotlin - 기본 문법2  (0) 2023.04.17
Kotlin - 변수 선언  (0) 2023.03.01

댓글