728x90
기본 구문
코틀린에 대한 기본 구문에 대한 정리입니다.
머리가 복잡해질때쯤 기초부터 되돌아 가라는 정신으로 정리를 해보려고 합니다.
패키지 정의 및 가져오기
- 패키지는 소스 파일 맨 위에 있어야 한다.
- 패키지와 디렉터리를 일치시킬 필요는 없다.
- 패키지를 지정 하지 않는 다면 기본 패키지에 속한다.
프로그램 진입점
Kotlin 애플리케이션도 자바와 마찬가지로 진입점은 main 함수다.
Print 출력하는 방법
- print = 기본 출력 방법
- println = 출력 + 한줄 띄어쓰기
Functions
- fun name() :Int - 반환형으로 설명
- fun name() = a+b - 표현식으로 반환 유형이 유추됌
- fun name() :Unit - 의미 있는 값을 반환하지 않는 함수
- fun name() - Unit 반환형은 생략이 가능하다.
변수
- val
- 변경이 불가능한 값
- var
- 변경이 가능한 값
클래스 및 인스턴스
- class로 선언
class Rectangle(var height: Double, var length: Double) {
var perimeter = (height + length) * 2
}
클래스 안에 선언된 변수는 기본 생성자를 생성할 수 있다.
open class Shape
class Rectangle(var height: Double, var length: Double): Shape() {
var perimeter = (height + length) * 2
}
클래스에 대한 상속은 : 로 표현한다.
주석
- //
- /**/
코틀린의 주석은 중첩이 가능하다.
String templates
문자열 사이에 $ 키워드를 사용하여 처리 할수 있다.
var a = 1
// simple name in template:
val s1 = "a is $a"
a = 2
// arbitrary expression in template:
val s2 = "${s1.replace("is", "was")}, but now is $a"
조건식
fun maxOf(a: Int, b: Int) = if (a > b) a else b
코틀린은 위처럼 if로 처리할 수있 습니다.
For loop 문
val items = listOf("apple", "banana", "kiwifruit")
for (item in items) {
println(item)
}
java와 다른점을 찾아보자면 for 안에 in으로 작성한다.
While loop 문
val items = listOf("apple", "banana", "kiwifruit")
var index = 0
while (index < items.size) {
println("item at $index is ${items[index]}")
index++
}
while문은 자바와 동일한 모습
When 문
fun describe(obj: Any): String =
when (obj) {
1 -> "One"
"Hello" -> "Greeting"
is Long -> "Long"
!is String -> "Not a string"
else -> "Unknown"
}
When문 작성법은 위와 같다. Java Switch 문법보다 보다 간결하고 편하다.
Ranges
간혹 사용되는 Ranges는 헷갈리는 경우가 많았었다..!
val x = 10
val y = 9
if (x in 1..y+1) {
println("fits in range")
}
결과는 한번만 찍힌다. x = 10 이고 in 1..(9+1) 이여서
val list = listOf("a", "b", "c")
if (-1 !in 0..list.lastIndex) {
println("-1 is out of range")
}
if (list.size !in list.indices) {
println("list size is out of valid list indices range, too")
}
console 출력 값
-1 is out of range
list size is out of valid list indices range, too
!in은 포함 되지 않으면 찍힌다. 이것도 생소하니 기억 해두자.
for (x in 1..5) {
print(x)
}
console 출력 값
12345
1,2,3,4,5 순으로 이동된다.
for (x in 1..10 step 2) {
print(x)
}
println()
for (x in 9 downTo 0 step 3) {
print(x)
}
console 출력 값
13579
9630
Step은 건너뛰는 개념이라고 생각하면된다.
Collections
val items = setOf("apple", "banana", "kiwifruit")
when {
"orange" in items -> println("juicy")
"apple" in items -> println("apple is fine too")
}
console 출력 값
apple is fine too
Collections에 item object를 in 키워드로 포함되어 있는지를 확인 할 수 있다.
val fruits = listOf("banana", "avocado", "apple", "kiwifruit")
fruits
.filter { it.startsWith("a") }
.sortedBy { it }
.map { it.uppercase() }
.forEach { println(it) }
console 출력 값
APPLE
AVOCADO
Collections에서 람다 표현식으로 map, filter를 사용가능하다.
Nullable values and null checks
null이 가능한 경우는 ?로 표현한다.
fun parseInt(str: String): Int? {
// ...
}
Type Check 및 자동 캐스트
연산자는 is 표현식으로 확인한다. 불변 지역 변수나 속성이 is로 검사되는 경우 명시적으로 캐스팅이 필요 없다.
즉 매우 편하다....
fun getStringLength(obj: Any): Int? {
if (obj !is String) return null
// `obj` is automatically cast to `String` in this branch
return obj.length
}
마무리
오랜만에 Kotlin CS에서도 기본중에 기본을 글로 적어봤다.
이중에 Ranges 범위 영역에서 !in(in 부정형)과 step은 평소(실무)에서 사용하지 않던 문법이였다.
기억해두자
2023.10.27 - [개발/Kotlin] - [Kotlin CS] 코틀린 - 관용어
참고 사이트
https://kotlinlang.org/docs/basic-syntax.html
728x90
'개발 > Kotlin' 카테고리의 다른 글
[Kotlin CS] 자료형 Characters (2) | 2023.11.09 |
---|---|
[Kotlin CS] 자료형 Boolean (0) | 2023.11.08 |
[Kotlin CS] 자료형 Numbers (Kotlin number type, Kotlin Float, Kotlin Number class) (0) | 2023.11.06 |
[Kotlin CS] 코틀린 코딩 컨벤션 (Kotlin Coding conventions, Android coding style, Kotlin Code Style official) (0) | 2023.11.04 |
[Kotlin CS] 코틀린 - 관용구 (Kotlin idioms, Kotlin, if return) (0) | 2023.10.27 |