728x90

fun 6

(코틀린) 데이터 클래스와 컴패니언 클래스

데이터 클래스 데이터 클래스는 data 키워드로 선언하며 자주 사용하는 데이터를 객체로 묶어 준다. 또한, VO 클래스를 편리하게 이용할 수 있게 해준다. class NonDataClass(val name: String, val email: String, val age: Int) data class DataClass(val name: String, val email: String, val age: Int) fun main(){ val non1 = NonDataClass("kuka", "a@a.com", 10) val non2 = NonDataClass("kuka", "a@a.com", 10) val data1 = DataClass("kuka", "a@a.com", 10) val data2 = DataCl..

(코틀린) 주 생성자와 보조 생성자

주 생성자와 보조 생성자는 모두 클래스의 생성자이다. 따라서, 객체를 생성할 때 호출되는 건 똑같다. 그리고 클래스 안에 주 생성자만 선언하든, 보조 생성자만 선언하든 그것은 개발자 마음이다. 단지, 주 생성자와 보조 생성자를 모두 선언할 경우 보조 생성자로 객체를 생성할 때에는 반드시 주 생성자가 실행되게 만들어야 한다는 규칙이 있다. 이러한 규칙은 필수 매개변수와 실행 구문을 주 생성자에 작성하고 보조 생성자가 실행될 때 주 생성자도 함께 실행되게 하려는 의도이다. 결국 객체를 여러 가지 형태로 생성할 수 있도록 생성자의 매개변수를 다양하게 구성할 때 생성자의 공통된 코드는 주 생성자에 작성하라는 의미로 이해할 수 있다. class User(name: String){ constructor(name: ..

코틀린 널 안정성 연산자

fun main() { var data: String? = null println("data length : ${data?.length ?: 0}") } 위 소스는 data가 null이면 0을 반환하고 null이 아니면 length를 이용해 문자열의 개수를 얻는 소느 null 점검 코드를 작성하지 않았는데도 널 안정성을 확보 엘비스 - ?: 연산자 엘비스 연산자란 ?: 기호를 말한다. 이 연산자는 변수가 널이면 널을 반환한다. 변수가 널일 때 대입해야 하는 값이나 실행해야 하는 구문이 있을 때, 엘비스 연산자를 이용한다. fun main() { var data: String? = "kuka" println("data = $data : ${data?.length ?: -1}") data = null pri..

코틀린 컬렉션 타입의 데이터 개수만큼 반복문

fun main() { var data = arrayOf(10, 20, 30) for (i in data.indices){ print(data[i]) if (i !== data.size -1) print(",") } } 위 소스는 배열의 크기만큼 for 문을 반복하게 작성한 소스 indices는 컬렉션 타입의 인덱스 값을 의미하므로 for 문을 반복하면서 0,1,2 값을 i에 대입한다. fun main() { var data = arrayOf(10, 20, 30) for ((index, value) in data.withIndex()){ print(value) if (index !== data.size -1) print(",") } } 위의 소스는 for 문을 반복하면서 인덱스와 실제 데이터를 함께 가져..

if~else 표현식(expression)

아래 소스는 if~else 문으로 조건에 맞는 코드를 실행하는 동작 외에 그 결괏값을 result라는 변수에 대입 if~else 문을 표현식으로 사용한 예 if~else 문을 표현식으로 사용하려면 else를 생략할 수 없다. if~else 표현식이 반환하는 결괏값은 각 영역의 마지막 줄에 해당한다. 즉, if나 else 부분을 여러 줄로 작성했더라도 마지막 줄의 실행 결과만 반환한다. fun main() { var data = 10 val result = if (data > 0) { println("data > 0") true } else { println("data

kotlin에서 리스트와 맵 예제

코틀린에서는 가변과 불편이라는 2가지 타입의 클래스를 제공한다. List는 불변 타입이므로 size(), get() 함수만 제공하고 데이터를 추가하거나 변경하는 add(), set() 함수는 제공하지 않는다. 그런데, MutableList는 가변타입이므로 size(), get() 함수 이외에 add(), set() 함수를 이용할 수 있다. MutableList는 mutableListOf() 함수로 만들 수 있다. fun main() { var mutableList = mutableListOf(10,20,30) mutableList.add(3,40) mutableList.add(0,50) println( """ list size : ${mutableList.size} list data : ${mutable..

728x90