일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- activity
- CustomView
- View
- notification
- HTTP
- Algorithm
- ViewModel
- Navigation
- Behavior
- 알림
- hilt
- LiveData
- 알고리즘
- CoordinatorLayout
- AppBarLayout
- onLayout
- BOJ
- kotlin
- DataBinding
- Android
- lifecycle
- onMeasure
- 백준
- room
- recyclerview
- 코틀린
- 안드로이드
- Coroutine
- sqlite
- CollapsingToolbarLayout
- Today
- Total
목록Programming (프로그래밍) (212)
개발일지
for문 for (변수 in 범위 또는 컬렉션) { 코드 } 변수에 범위 또는 컬렉션의 요소만큼 대입되면서 반복한다. - for 문 in 범위 코드 // i에 1..5가 대입 되면서 반복 for(i in 1..5) { println(i) } 결과 1 2 3 4 5 - for문 in 컬렉션 코드 val arr = arrayOf(1, 2, 3, 100, 900) for(i in arr) { println(i) } 결과 1 2 3 100 900 while문 while(조건) { 코드 } 조건이 만족할 때까지 while문을 반복 코드 var i = 0 while(i < 5) { println(i) i++ } 결과 0 1 2 3 4 do ~ while문 do { 코드 } while(조건) while문은 조건을 검..
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 -..