본문 바로가기

안드로이드 프로그래밍/문법정리6

[kotlin] 코틀린 enum class (열거 클래스) Enum class Enum class란 일반적으로 선언되는 상수와는 다르게, 여러 개의 값을 열거해서 사용할 수 있도록 정의해 놓은 클래스이다.enum class Fruit{ GRAPE, APPLE, ORANGE, MANGO}일반적인 형태의 enum class는 위와 같은 형태로,Fruit가 해당 클래스의 클래스 명이며, 블록 안에 순차적으로 콤마(,)를 통해 나열된 값이해당 클래스의 인스턴스이다.특별히 생성자를 정의하지 않는 경우 위에서부터 순차적으로 0,1,2,3...의 값이 부여된다.각 enum 인스턴스는 일반적으로 name과 ordinal이라는 프로퍼티를 가지며,name은 인스턴스의 이름을, ordinal은 인스턴스의 순서를 나타낸다.위와 같이 선언된 enum class는 .. 2024. 5. 28.
[kotlin] Data class, Sealed class fun main(){ ///////// data class 예시 ///////// val person=Person("수지",24) val dog=Dog("해피",23) println(person.toString()) // 그냥 참조 주소값이 나옴 // 출력: org.techtown.part0.kotlin.part2.Person@2acf57e3 println(dog.toString()) // 데이터 클래스의 경우 안의 데이터를 볼 수 있는 tostring 함수가 구현됨 // 출력 : Dog(name=해피, age=23) println(dog.copy(age=3)) // 원.. 2023. 8. 14.
[kotlin] 초기화 지연(lazy initialization) 초기화 지연을 사용하는 이유 ?  보통 클래스에서 변수를 초기화하면, 클래스 생성 시 해당 변수도 함께 생성되며 초기화된다. 그렇게 되면 클래스 객체를 생성할 때마다 해당 변수도 함께 초기화되기 때문에 바로 사용할 수 있다는 장점이 있다.하지만 해당 변수를 바로 사용하지 않거나 꼭 사용하는 경우가 아니라면 클래스를 생성할 때마다 변수를 초기화하기 때문에 메모리나 소프트웨어의 실행 시간 측면에서 손해를 많이 보게 될 것이다.정리하면 지연 초기화는 해당 변수가 필요한 순간까지 초기화를 최대한 미루어서 메모리나 실행 시간에서 이득을 보기 위해 사용한다. lateinit var text:String // 타입을 반드시 지정해줘야함val test : Int by lazy{ // lateinit var와 달.. 2023. 8. 14.
[kotlin] 코틀린 스코프 함수 let, with, run, apply, also 차이 비교 정리 1. let     1. 수신객체를 받기 위해서 it 을 사용(생략 불가능),         명시적으로 local variales 선언 가능    2. 마지막 줄이 return 값 ( 람다식과 동일한 것을 볼 수 있음)    3.  let을 많이 쓰는경우 ?  non-null 체크  사용 예시class User( val name: String, var age: Int, val gender: Boolean, var hasGlasses: Boolean)val user: User? = User("나", 10, true,true)val age = user?.let { it.age //it으로 받음 , 마지막 줄 it.age가 리턴됨}val age1 = user?.let { use.. 2023. 8. 10.