반응형
변수(var) & 상수(val)
var i = 10 //var i : Int = 10
var name = '이름' //var name : String = '이름'
val num = 20
- 코틀린은 타입 추론 기능이 있기 때문에 타입을 명시하지 않아도 된다.
- 타입을 명시하고 싶다면 변수 이름 뒤에 : type 을 붙여주면 된다.
형변환
var i = 10
var l = 20L //Long
l = i.toLong()
- 코틀린에서는 자동 형변환이 되지 않기 때문에 위와 같이 타입 변환 함수를 통해 형변환을 해줘야 한다.
val num = "abc"
val number: Int = num.toInt() // NumberFormatException 발생
- 해당 타입이 명확할 때 쓰는 것이 좋고 형변환에 실패하면 NumberFormatException 발생한다.
문자열
val name = "이름"
print("제 이름은 $name 입니다")
//제 이름은 이름 입니다
- 문자열에 변수나 값을 삽입할 때 $를 사용할 수 있다.
- 변수 뒤에 공백이 없으면 에러(코틀린에서 어디까지 변수인지 모름)
val name = "이름"
print("제 이름은 ${name}입니다")
//제 이름은 이름입니다
- 변수를 중괄호로 묶어 처리하는 것이 좋다.
- 참고로 중괄호 안에는 수식도 넣을 수 있다.
조건문
var i = 5
//if-else
if(i>10) {
print("10보다 큼")
}else{
print("10보다 작음")
}
//when
when{
i>10 -> {
print("10보다 큼")
}
else -> {
print("10보다 작음")
}
- when을 이용하여 쓸 수 있다.
//else-if
var result = if(i>10){
"10보다 큼"
}
else{
"10보다 작음"
}
//when
var result = when {
i>10 ->{
"10보다 큼"
}
else -> {
"10보다 작음"
}
}
- 조건에 따른 값 할당을 위와 같이 쓸 수 있다.
삼항연산
//java
boolean result = i>10 ? true : false;
//kotlin
var result = if(i>10) true else false
- 자바와는 다르게 if, else로 쓴다.
반복문 (for문)
val items = listOf(1,2,3,4,5)
//for-in
for(item in items){
print(item)
}
//forEach
items.forEach { item ->
print(item)
}
//java : for (int i=0; i<items.length; i++)
for(i in 0..items.size-1){
print(items[i])
}
- 세가지 모두 같은 동작을 하는 다른 코드이다.
- 마지막 for문 처럼 java와 비슷하게 작성 할 수 있지만 비효율적이라는 것을 한눈에 확인할 수 있다.
- break, continue는 자바와 동일하다.
listOf, mutableListOf
val items = listOf(1,2,3,4,5)
val items = mutableListOf(1,2,3,4,5)
items.add(6)
items.remove(3)
- listOf => 선언 후에 값를 추가하거나 삭제하는 등의 변경은 불가능. 즉 읽기 전용
- mutableListOf => 값을 추가하거나 삭제하는 등의 변경 가능.
사실 여기서 왜 list를 var가 아닌 val로 선언해도 되는건지 헷갈려져서 찾아보니
- mutableListOf 에서 값의 추가, 삭제 등의 변경은 그냥 리스트의 요소를 변경하는 거임
- var를 쓰면 리스트 자체를 변경할 수 있음(리스트를 var로 선언하는 일은 거의 없을 듯 하다..)
즉, 난 바보다.
마무리하며
계속 바쁘다는 핑계로 미뤄왔던 코틀린.. 이제 진짜 공부할때다.
지금 하고있는 프로젝트도 플러터랑 리액트라서 큰일큰일....
프로젝트 위주로 공부하다 보니 알고리즘이나 언어 자체를 공부한지 오래되서 뭔가 어색하다..
이 글도 뭐 어려운 내용도 아니고 진짜 기본 중의 기본 문법인데 코틀린 처음이라 어렵게 느껴진다...크아악
이제서야 기본문법부터 시작하는거지만 늦지 않아쒀!!
시작이 반이다.
앞으로 학습기록에는 의미있는 내용은 아니더라도 그날그날 공부한 내용이나 헷갈린 내용들을 간단히 올릴 예정!
앞으로 죽은 듯이 공부만 해보자..!!!
반응형
'학습 기록 > kotlin' 카테고리의 다른 글
| [Kotlin] 플랫폼 타입(Platform type) (0) | 2025.10.20 |
|---|---|
| [Kotlin] Class - getter, setter (0) | 2024.10.29 |
| [Kotlin] Collection(List, Set, Map) (1) | 2024.10.27 |
| [Kotlin] 반복문(while, for) (1) | 2024.10.20 |
| [Kotlin] String에 쓰이는 함수들 (1) | 2024.10.19 |
