- @transactional
- Docker
- jpa
- sql
- Django
- SSL
- hibernate
- java
- static
- 1차원 배열
- 자바
- join
- springboot
- 스프링부트
- spring
- AWS
- spring mvc
- select
- 데이터베이스
- DI
- PYTHON
- string
- mysql
- 프로그래머스
- ORM
- nginx
- spring boot
- spring security 6
- 문자열
- 스프링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
개발하는 자몽
[Kotlin] 기본 문법 1 본문
요즘 스프링 개발 환경에서도 코틀린을 사용하는 경향이 꽤 보인다. 그래서 코틀린에 관심이 생겨서 찾아본 기본 문법!
변수 타입
코틀린에는
var : 초기화 이후에도 값 변경이 가능한 가변 변수val : 초기화 이후에는 값을 변경할 수 없는 불변 변수
fun main() {
var a = 1
a = 2 // 가변 변수이므로 값 변경 가능
val b = 1
b = 2 // 불변 변수이므로 에러 발생
var c: Int // 타입은 명시했으나, 초기화 하지 않은 상태
println(c) // 초기화 하지 않은 상태이므로 에러 발생
c = 1 // 초기화
println(c) // 1 출력
}
타입 추론(Type Inference)
타입 추론이란 변수나 함수를 선언할 때 타입을 명시적으로 선언하지 않아도 자동으로 자료형을 추론해 주는 기능이다. 코틀린은 기본적으로 이러한 타입 추론을 지원하므로, 변수를 초기화할 때 명시적으로 타입을 입력하지 않아도 된다. 하지만 협업 시에는 가급적 타입을 명시하는 것이 좋다고 한다.
fun main() {
var a = 1 // int로 타입 추론
var a: Int = 1 // 타입 명시
}
null과 ?
코틀린 변수는 기본적으로 non-null 타입으로, 위와 같이 선언하여
fun main() {
var str1: String? = null // str1 변수에는 String이나 null이 들어올 수 있다
val str2: String? = null
var str3: String = null // non-null 타입이므로 에러 발생
var i: Int? = null // i 변수에는 Int나 null이 들어올 수 있다
}
Null Safe Operator ?.
이번에는 문자열의 길이를 출력해 보자.
fun main() {
var str: String? = "test"
println(str.length) // 에러 발생: Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type 'kotlin.String?'.
}
# 위 코드 실행 결과 (에러 발생)
Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type 'kotlin.String?'.
에러를 해석하면
fun main() {
var str: String? = "test"
println(str?.length) // 4
}
fun main() {
var str: String? = null
println(str?.length) // null 출력
}
Not Null Assertion Operator !!.
방금 위에서 봤던 에러 문구 중에는
fun main() {
var str: String? = "test"
println(str!!.length) // 4
var str2: String? = null
println(str2!!.length) // str2가 non-null임을 보장 -> null에서 length를 구하는 것이므로 NullPointerException 에러 발생
}
Elvis Operator ?:
엘비스 연산자는 좌항이
fun main() {
var str1: String? = null
str1 ?: println("str is null") // "str is null" 출력
var str2: String? = "not null"
str2 ?: println("str is null") // 아무것도 출력되지 않는다.
}
'Java & Kotlin' 카테고리의 다른 글
[Kotlin] 기본 문법 2 (0) | 2025.01.19 |
---|---|
[Java Error] Caused by: java.lang.IllegalArgumentException at PropertyPlaceholderHelper.java:180 (1) | 2024.11.23 |
Java/Spring 테스트 - 2 (0) | 2024.11.04 |
Java/Spring 테스트 - 1 (2) | 2024.10.02 |
[Gradle] gradle build와 gradle bootJar의 차이 (0) | 2024.09.06 |