Kotlin 기초 문법

Sungjin Cho·2023년 9월 27일

Server

목록 보기
3/8
post-thumbnail

변수 선언 방법

var: 일반적인 변수, 변경 가능
val: 선언시에만 초기화가 가능한 변수로 중간에 값 변경 불가능

Kotlin은 기본 변수에서 null을 허용하지 않음 - null pointer exception 원천적으로 차단
? 예약어 사용시에는 nullable 변수로 선언 가능

var a: Int? = null

형변환

암시적 형변환 지원하지 않음

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

fun main() {
	var a: Int = 54321
    var b: Long = a.toLong()
}

배열

listOf: 읽기전용 리스트 - add, remove 사용 불가능
MutableList: 읽기/쓰기 가능한 리스트 - add, remove 사용가능

서로 형변환 가능

타입 추론

변수나 함수들을 선언할 때나 연산이 이루어 질 때 자료형을 코드에 명시하지 않아도 자동으로 자료형 추론 가능

fun main() {
	var a = 123 // int 형
    var b = 1234L // long 형
    
    var e = 0xABCD // 16진수
    var f = 0b0101010 // 2진수
    
    var g = true // boolean
}

함수

fun main() {
	print(add(5,6,7))
}

fun add(a: Int, b: Int, c: Int): Int {
	return a+b+c
}

단일 표현식 함수

fun add(a: Int, b: Int, c: Int) = a + b + c

타입 추론이 가능하므로 반환형 생략 가능

조건문

if 문은 다른 언어의 문법과 비슷

if(a>10) {
	println("big")
    1
} else {
	println("small")
    2
}

switch문은 when으로 사용

fun main() {
	val value = 3
    
	dowhen(value)
}

fun doWhen(a: Int) {
	when(a) {
    1 -> println("1")
    2 -> println("2")
    else -> println("3")
    }
}

kotlin에서 if문과 when문은 리턴값을 가질 수 있다. (대신 삼항연산자 지원x)

조건문의 블럭 내에 여러 줄의 식이 있을 경우 리턴값은 마지막줄

반복문

while문

while(a < 5) {
	println(a++
}

do.. while문

최초 한번은 조건 없이 do 에서 구문 실행 후 while로 조건 체크하면서 반복

do {
print(a++)
}while(a < 5)

for문

for(i in 0..9) { //0~9까지 반복
	print(i)
}

for(i in 0..9 step 3) { //0~9까지 3단위로 반복
	print(i)
}


for(i in 9 downTo 0) { //9에서 0으로 1씩 감소 하면서 반복
	print(i)
}

흐름 제어

다중 반복문에서 break나 continue가 적용되는 반복문을 label을 통해 지정할 수 있는 기능

loop@for(i in 1..10) {
	for(j in 1..10) {
    	if(i == 1 && j == 2) break@loop
    }
}

loop가 달린 반복문 기준으로 break

람다식

이름이 없어도 함수 역할을 하는 익명 함수

{ x, y -> x + y }

val multi = {x : Int, y: Int -> x * y}

println(multi(10,20))

val multi2: (Int, Int) -> Int = {x: Int, y: Int ->
	println("x*y")
    x*y
} // 마지막 표현식 반환

multi2: 변수를 함수처럼 사용 가능
(Int, Int) -> Int: 람다식의 선언 자료형은 람다식 매개변수에 자료형이 명시된 경우 생략 가능
{x: Int, y: Int: 선언 자료형이 명시되어 있으면 생략 가능
x * y}: 함수의 내용과 결과 반환, 표현식이 여려 줄인 경우 마지막 표현식 반환

0개의 댓글