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)
}
'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 |
댓글