내배캠 - 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 |