반응형
자바를 보완하기 위한 언어 (자바와 100% 호환이 된다.)
안드로이드 개발 공식 언어이다.
코틀린 공식 사이트
Kotlin Programming Language
kotlinlang.org
함수선언 문법
fun sum(a: Int, b: Int): Int {
return a + b;
}
fun sum(a: Int, b: Int) = a + b
fun max(a: Int, b: Int) = if (a > b) a else b
변수(var), 상수(val) 선언
val a: Int = 1
val b = 2
val c = 3.14
val d: String
// d = "d의 초기값이 없으면 null이 될 수 있는데, kotlin은 null이 가능한 타입과 아닌 타입이 있기때문에
에러가 발생할 수 있다."
d = "필수로 있어야 하는 구문"
val e: String?
var d: String = "첫번째 초기화"
e = "두 번째 초기화"
For 반복문
for (i in 1..5){
println(i)
}
// 1 2 3 4 5
for (i in 6 downTo 0 step 2) {
println(i)
}
// 6 4 2 0
for (i in 1..5 step 3) {
println(i)
}
// 1 4
val numberList = listOf(100, 200, 300)
for (number in numberList){
println(number)
}
// 100 200 300
While 반복문
var x = 5
while (x > 0) {
println(x)
x--
}
// 5 4 3 2 1
x = 0
while (x > 0) {
println(x)
x--
}
// 출력 없음
var y = 0
do {
print(y)
y--
} while (y > 0)
// 0
IF 문
var max: Int
if (a > b) {
max = a
} else {
max = b
}
// As expression
val max = if (a > b) {
print("Choose a")
a
} else {
print("Choose b")
b
}
when 문(자바에 switch문 대신)
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> {
print("x is neither 1 nor 2")
}
}
when (x) {
0, 1 -> print("x == 0 or x == 1")
else -> print("otherwise")
}
when (x) {
in 1..10 -> print("x는 1부터 10범위 안에 있음")
!in 1..20 -> print("x는 1부터 20범위 안에 없음")
else -> print("otherwiese")
}
when (x) {
is Int -> print("x는 인트형")
else -> print("x는 인트형이 아님")
}
Null Safe
Integer a = 100;
//null 허용
val b: Int? =100
//null 허용X
val c: Int = 100
a = null;
// 중략
a.sum(); // NullPointException이 날 수도 있음
// null safe 한 코드를 구성해야함
if (a != null) {
a.sum();
}
b?.sum() // null일 경우 실행하지 않음
c.sum() // 애초에 nullsafe함
Scope Function (apply, with, let, also, run)
코드를 좀더 읽기 쉽게 수정할 수 있다
사이트
https://kotlinlang.org/docs/scope-functions.html#function-selection
Scope functions | Kotlin
kotlinlang.org
Apply함수
객체의 확장함수(자바의 생성자와 같은 역할, 객체를 초기화할 때 사용)
val person = Person().apply{
firstName = "Fast"
lastName = "Campus"
}
Also 함수
람다 입력값을 받고 다시 리턴(객체의 유효성 확인, 디버깅 용도로 사용)
Random.nextInt(100).also {
print("getRandomInt() generated value $it")
}
Random.nextInt(100).also { value ->
print("getRandomInt() generated value $value")
}
Let 함수
null이 아닌 객체에서 사용
val number: Int?
// null이 아닐 경우 sum 사용 null일 경우 빈값으로 치환
val sumNumberStr = number?.let {
"${sum(10, it)}"
}.orEmpty()
With 함수
person에 있는 함수를 사용
val person = Person()
with(person) {
work()
sleep()
println(age)
}
Run 함수
객체 구성과 결과계산이 한번에 실행될 때 유용
val result = service.run {
port = 8080
query()
}
Data Class
데이터를 저장하는 목적으로 만든 클래스
// 생성자, getter, setter 등 모두 만들어 진다.
data class JavaObject(var s: String)
Lambda expression
// 자바방식
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
...
}
})
// kotlin 방식
button.setOnClickListener { v ->
}
lateinit
변수를 나중에 초기화 하는 방법
var nullableNumber: Int? = null
lateinit var lateinitNumber: Int
// 추후 초기화 하는 코드
lateinintNumber = 10
// 사용할 때
nullableNumber?.add()
lateinitNumber.add()
반응형
'안드로이드 > Kotlin' 카테고리의 다른 글
로또 추첨기 만들기 - 1 (0) | 2021.06.20 |
---|---|
BMI 계산기 - 계산 기능 (0) | 2021.06.13 |
BMI 계산기 - 레이아웃 (0) | 2021.06.13 |
안드로이드 스튜디오 에러 (0) | 2021.06.13 |