Kotlin/TIL

TIL 1 (01.19)

내손은개발 🐾 2024. 1. 19. 18:42

내배캠 - Android 학습 자료 정리

 

 

1. Jetpack 이란?

-안드로이드는 수많은 각각의 버전과 여러 버전이 있어 개발하는데 어려움이 생기는 것을 해결하기 위해 모든 버전과 기기에서 일관되게 동작할수 있게 도와주는 라이브러리이다.

 

binding 사용법 정리

1. 먼저 앱 수준의 gradle에서 viewBinding을 설정하고 sync Now를 해준다.

 

2. MainActivity의 기본 코드 작성

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

    }
}

-여기까지 완료되면 binding을 사용할 수 있다.

 

 

Kotlin 기본 문법

1. 변수

-자바와 달리 타입선언 없이 바로 값을 할당 가능

-코틀린은 타입 추론(type inference)기능으로 변수의 타입을 생략 가능

 

var(Variable)

-가변(mutable type) 변수로 값의 읽기와 쓰기가 모두 허용되는 변수 

 

 

val(Value)

-불변(immutable type) 변수로 값의 읽기만 허용되는 변수

+값을 초기화만 가능하고 변경은 불가능하다. (= Java의  final)

 

const val / val 차이

-val는 런타임 시점에 값을 할당

-const val는 컴파일 시점에 값을 할당

+컴파일 시점에 값을 할당하면 컴파일러는 해당 상수가 가지고 있는 값을 미리 알 수 있다.

 

2. 조건문

 (이론적으로 알고 있어서 예제를 통해 진행)

 

if문

if{
...
} else if {
...
} else {
...
}

 

when문

when(파라미터) {
	비교값1 -> ...  //변수 값 = 비교 값 같을 경우 실행
    비교값2 -> ...
    비교값3 -> ...
   	else -> ...
}

 

//미니 퀴즈
var result = when (10) {
    9 -> { true }
    in 5..20 -> { false }
    else -> { true }
} //결과 값 : false

 

 

3. 컬렉션

list

-데이터에 인덱스를 부여한 컬렉션이며 중복된 값 입력 가능

-add(추가), get(사용), set(수정), removeAt(제거)

var mutableList = mutableListOf(1,2,3) //리스트 선언

mutableList.add(4) //1,2,3,4
println(mutableList.get(1)) //2
//mutableList.get(1) == mutableList[1]
mutableList.set(0,0)//0,2,3,4
//mutableList.set(0,0) == mutableList[0] = 3
mutableList.removeAt(0) //2,3,4

-mutableList, mutableMap, mutableSet  = 동적으로 리스트를 사용하기 위해 리스트 자료형 앞에 Mutable이 붙는다.

var list = mutableListOf(1,2,3)

var list = listOf(1,2) //Immutable Collection

 

set

-중복을 허용하지 않는 리스트

-인덱스 x , remove(삭제)

 

map

- key-Value의 쌍으로 입력

//미니 퀴즈
var map = mutableMapOf<String, String>()
map.put("키1", "값2")
map.put("키2", "값2")
map.put("키3", "값3")
map.remove("키3")
Log.d("Collection", "${map.get("키3")}")
//null

 

 

4. 반복문

for

    for(i in 1..10){	//1<= .. <=10
        print(i)
    }
    println()
    for(i in 1 until 10 ){ //1<= .. <10
        print(i)
    }
    println()
    for(i in 1..10 step 2) //13579
        print(i)
    println()

    for(i in 10 downTo 1) //10<= ..<=1
        print(i)
    println()

 

while

    var a = 1
    var b = 10
    var cnt = 0

    while (a <= b){
        a += 1
        cnt++
    }
    print(cnt) // 10

+ break, continue

 

//미니 퀴즈
for (index in 0..1000){
    if (index > 999){
        Log.d("for", "$index")
    }
} // 1000

var result = 1
while (result < 100) { result += result }
Log.d("while", "$result")
//128
//1+1 = 2
//2+2 = 4
//4+4 = 8
 ...
//64+64 = 128

 

 

5. 함수

fun main() {
    println(plus(4,2)) //6
    println(minus(4,2)) //2
    println(square(4,2)) //8
    println(division(4,2)) //2
}

fun plus(x: Int, y: Int): Int {
    return x + y
}

fun minus(x: Int, y: Int): Int {
    return x - y
}

fun square(x: Int, y: Int): Int {
    return x * y
}

fun division(x: Int, y: Int): Int {
    return x / y
}
fun main() {
    print(profile("홍길동",25,"도사"))
}

fun profile(name: String, age: Int, nickname: String) {
    print("이름은 ${name}이고 나이는 ${age}이며 별명은 ${nickname}입니다.")
}
fun main() {
    var x = 3
    print(sum(x))
}
fun sum(x:Int): Int {
    var result = 0
    for (number in 1..x)
        result += number
    return result
}

 

6. 클래스

쉽게말해 변수 + 함수 구조

class 클래스명 {
	var 변수
    fun 함수1 () {
    ...
    }
	fun 함수2 () {
    ...
    }
}

 

클래스의 constructor에서 설명이 어려워서 더 찾아보고 다음 TIL에서 이어서 작성하겠습니다.

'Kotlin > TIL' 카테고리의 다른 글

TIL 6 (01.26)  (1) 2024.01.26
TIL 5 (01.25)  (1) 2024.01.25
TIL 4 (01.24)  (0) 2024.01.24
TIL 3 (01.23)  (1) 2024.01.23
TIL 2 (01.22)  (0) 2024.01.22