본문 바로가기

코틀린22

코틀린(22) - Data 클래스, Enum 클래스 Data 클래스 데이터를 다루는 데에 최적화된 class로 '5가지 기능'을 내부적으로 자동으로 생성해준다. 내용의 동일성 판단하는 equals( )의 자동구현 객체의 내용에서 고유한 코드(해쉬코드)를 생성하는 hashCode( )의 자동구현 포함된 속성을 보기쉽게 나타내는 toString( ) 의 자동구현 객체를 복사하여 똑같은 내용의 새 객체를 만드는 copy( )의 자동구현 copy 함수는 깊은 복사의 구현이라고 보면된다. 밑에 예제에서 copy( )함수를 통해 새 객체를 생성할 때는 똑같은 내용의 객체를 생성할 수도 있지만, val a = Data("A", 7) val b = a.copy() 다음과 같이 생성자와 똑같은 똑같은 형태의 패러미터를 주어 일부속성을 변경할 수도 있다. val a = D.. 2022. 3. 23.
코틀린(21) - 중첩 클래스, 내부 클래스 코틀린에서 지원하는 클래스 유형중에 클래스 안에 클래스가 중첩되는 두 가지 유형의 클래스를 알아보자. 중첩클래스(Nested Class) 코틀린에서는 기본적으로 클래스 안에 클래스를 하나 더 넣을 수 있는 중첩클래스는 하나의 클래스가 다른 클래스의 기능과 강하게 연관되어 있다는 의미를 전달하기 위해 만들어진 형식으로 사용할때는 외부클래스 dot 내부 클래스이름으로 사용하게 된다. Outer.Nested( ) // 중첩클래스 생성자 호출방법 class Outer{ class Nested{...} } *중첩 클래스는 형태만 내부에 존재할 뿐 실질적으로는 서로 내용을 직접 공유할 수 없는 별개의 클래스이다. 내부클래스(inner) 이 때 중첩클래스 대신 내부클래스라는 것을 사용할 수도 있다. 중첩 클래스에 ".. 2022. 3. 23.
코틀린(20) - 오버로딩, arguments, infix 함수 오버로딩 코틀린에서도 대부분의 언어에서 지원하는 오버로딩(not override)을 지원한다. // ex1) okey! fun same (x:Int) fun same (x:Int, text: String) fun same (x:Int, y:Int) // ex2) not okey! fun same(x:Int, y:Int) fun same(a:Int, b:Int) // ex3) okey! fun main(){ read(7) // 숫자7 출력 read("감사합니다") //감사합니다 출력 } fun read(x: Int){ println("숫자 $x 입니다") } fun read(x: String){ println(x) } ex3을 실행해보면 함수 이름은 같지만 자료형을 구분하여 함수가 매칭되어 실행되는 것을 .. 2022. 3. 23.
코틀린(19) - null 처리와 동일성의 확인 Null 처리 by ?. ?: !!. nullable 변수에서 null을 처리하는 법과 변수 간에 동일성을 확인하는 법을 배워보자. 변수에 null이 저장되어있는 상태로 속성이나 함수를 쓰려고 하면 null pointer exception이 발생하기 때문에(null인 객체를 참조하면 발생하는 오류) nullable변수를 사용할 때는 null 체크가 없이는 코드가 컴파일 되지않는다. var sample:String? = null if(sameple!=null) println(smaple.toUpperCase()) 그렇다면 null체크를 하기위해 일일이 if문으로 조건을 체크하는 대신 좀 더 편리한 방법은 없을까? 물론 있다 null safe연산자, elvis 연산자 non-null assertion 연산자.. 2022. 3. 23.
코틀린(18) - 문자열 관련 함수 이미 우리는 'String'이라는 클래스로 문자열을 다루며 쌍따옴표 사이에 문자열을 리터럴을 만들면 새 String 객체가 생성되는 것을 보았다. 코틀린에서는 이 String 클래스와 관련한 여러 속성과 함수들이 있다. 그중 자주쓰이는 것들을 알아보자 println(test1.length) : lengh라는 속성에 Int값으로 들어가있다. println(test1.toLowerCase()) : 소문자로 변환하여 반환 println(test1.toUpperCase()) : 대문자로 변환하여 반환 val test 2 = test1.split(".") : 특정 문자열을 기준으로 문자열을 여러개로 나눠 배열로 담기 ※ 참고로 코틀린에서는 자바와 달리 split에 정규식이 아닌 일반 문자열을 넣어도 동작한다. j.. 2022. 3. 23.