일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Android
- View
- onLayout
- ViewModel
- 백준
- 코틀린
- CoordinatorLayout
- Algorithm
- Coroutine
- lifecycle
- HTTP
- BOJ
- notification
- recyclerview
- hilt
- CollapsingToolbarLayout
- room
- onMeasure
- CustomView
- activity
- AppBarLayout
- 알림
- LiveData
- DataBinding
- sqlite
- 알고리즘
- Navigation
- Behavior
- Today
- Total
목록kotlin (43)
개발일지
when문 when(인자) { 표현식1 -> 코드 표현식2 -> 코드 표현식3 -> 코드 else -> 코드 } 다른 언어의 switch문과 비슷하다 else if문을 간단하게 표현할 수 있다. 인자와 표현식의 결과가 같으면 해당하는 코드를 실행한다. 코드 val x = 1 when(x) { 1 -> println("x is 1") 2 -> println("x is 2") else -> { // 여러줄의 코드가 필요하면 블록을 사용하여 표현할 수 있다. println("================") println("x is not 1 and 2") println("================") } } 결과 x is 1 when 일치되는 조건을 한번에 표현하기 일치되는 조건을 , 를 사용하여 한번에..
if문 if (조건) { 코드 } 조건을 만족시키면 코드를 실행한다. 코드 val a = readLine()?.toInt() if(a ?: 0 > 10) { println("a is over than 10") } if ~ else문 if (조건) { 코드1 } else { 코드2 } 조건을 만족시키면 코드1을 만족하지 않으면 코드 2를 실행한다. 코드 val a = readLine()?.toInt() val b = readLine()?.toInt() if(a == b ?: false) { println("Same") } else { println("Different") } 간단한 if ~ else 문 if ~ else 문을 표현식으로 표현할 수 있다. 코드 val max = if(a > b) a else..
- 익명함수 함수의 형태를 가지고 이름이 없는 함수이다. 코드 val fun0: (Int, Int) -> Int = fun(x:Int, y:Int): Int {return x + y} println(fun0(1, 2)) 결과 3 익명함수의 간단한 표현 코드 val fun0 = fun(x:Int, y:Int) = x + y println(fun0(1, 2)) 결과 3 람다식 vs 익명함수 람다식에서는 return, continue, break처럼 제어문을 사용하기 어렵기 때문이다. 하지만 익명함수는 람다식보다 가독성이 떨어지는 특징이 있기 때문에 적절히 사용하애한다. - 인라인 함수 (inline) 인라인 함수는 함수가 호출되는 곳에 코드를 붙여넣기 때문에 함수 콜백간 오버헤드를 줄일 수 있는 장점이 있다..
- 람다식 형태 { x:Int, y:Int -> x + y } - 람다식을 변수에 할당하기 (Int, Int) -> Int 같은 형식으로 람다의 형태를 선언 후 { x:Int, y:Int -> x + y } 같은 형식으로 대입한다. 코드 val lambda1: (Int, Int) -> Int = {x:Int, y:Int -> x + y} - 람다식 간단히 표현하기 람다의 형태를 선언한 경우 람다의 형태를 표현할 때 자료형을 생략할 수 있다. val lambda1: (Int, Int) -> Int = {x, y -> x + y} 람다를 대입할 때 사용하지 않는 매개변수가 있을 경우 _로 생략할 수 있다. val lambda1: (Int, Int) -> Int = { _, y -> y } 람다의 매개변수가 ..
- 순수 함수의 정의 같은 인자에 대하여 항상 같은 결과를 '반환하면 부작용이 없는 함수'라고 부른다. 부작용이 없는 함수가 함수 외부의 어떤 상태도 변화시키지 않으면 '순수 함수'라고 부른다. - 일급 객체의 특징 일급 객체는 함수의 인자로 전달할 수 있다. 일급 객체는 함수의 반환값에 사용할 수 있다. 일급 객체는 변수에 담을 수 있다. - 고차 함수의 정의 다른 함수를 인자로 받을수 있는 함수 다른 함수를 리턴값으로 사용할 수 있는 함수 - 함수를 쓰는 이유 재사용성을 높여 코드의 중복을 없애기 위해 함수를 이용하여 코드의 가독성을 높일 수 있다. 모듈성을 높여 유지보수를 쉽게 할 수 있다. - 함수 정의하기 fun Name(Parm1, Parm2): ReturnType { Body } fun키워드..
- 기본 연산자 연산자 의미 + 더하기 - 빼기 * 곱하기 / 나누기 % 나머지 코드 println(1 + 2) println(2 - 1) println(1 * 2) println(4 / 2) println(5 % 2) 결과 3 1 2 2 1 - 대입 연산자 연산자 의미 = 오른쪽 항을 왼쪽 항에 대입 += 왼쪽 항에 오른쪽 항을 더한 후 대입 -= 왼쪽 항에 오른쪽 항을 뺀 후 대입 *= 왼쪽 항에 오른쪽 항을 곱한 후 대입 /= 왼쪽 항에 오른쪽 항을 나눈 후 대입 %= 왼쪽 항에 오른쪽 항을 나머지 연한 후 대입 코드 var num:Int = 0 num = 10 println(num) num += 10 println(num) num -= 5 println(num) num *= 2 println(nu..
Kotlin에서 자료형이 다른 변수끼리 연산할 수 없고, 연산을 하려면 형 변환을 거쳐야한다. 코드 val num1:Int = 123 val num2:Long = num1 //Long형에 Int형을 대입할 수 없음 Error // Error : Type mismatch. - 자동 형 변환 표현식에서 서로 다른 자료형을 연산하면 범위가 큰 자료형으로 Kotlin에서 형 변환을 해준다. 코드 val num1:Int = 123 val num2:Long = 321L val num3 = num1 + num2 // Int + Long에서 Long이 더욱 큰 자료형이므로 Long으로 자동 형 변환 println(num3) println(num3.javaClass) // 자료형을 확인하는 방법 결과 444 long -..
- null이란 null이란 아무것도 없는 상태를 의미한다. 0 과 null의 차이점은 0은 0이라는 값을 저장한 상태지만 null은 저장한 값이 없는 상태이다. - 변수에 null 할당하기 변수에 null을 할당하려면 자료형 뒤에 ?를 붙이면 된다. val str1:String = null // 일반적인 변수에는 null을 저장할 수 없음 // Error : Null can not be a value of a non-null type String val str2:String? = null // null을 저장하려면 자료형 뒤에 '?'을 붙이면 된다. 여기서 String과 String?은 서로 다른 자료형인걸 주의하자. 예제 코드 val str1:String? = null println("str1 is ..