개발(Android)/kotlin syntax 30

[Kotlin syntax] Inheritance

[코틀린 문법] 상속 // Inheritance(상속) // // 자식 클래스가 부모 클래스의 멤버를 물려받음 fun main() { var a = Animal("휴지", 5, "강아지") var b = Dog("휴지", 5) // Animal 클래스로부터 "강아지" 속성을 상속받음 // -> b에서 "강아지" 생략해도 a와 b의 속성이 똑같음 a.introduce() b.introduce() // bark는 Dog 클래스에만 해당함 // a.bark() // Kotlin: Unresolved reference: bark b.bark() var c = Cat("감쟈", 1) c.introduce() c.meow() } // Super Class(수퍼/부모 클래스) // // 물려주는 쪽 // class ..

[Kotlin syntax] Constructor

[코틀린 문법] 생성자 fun main() { var bts = Singer("정국", 1997) var txt = Singer("연준", 1999) var aespa = Singer("윈터", 2001) var nmixx = Singer("설윤", 2004) // 안녕하세요, 1997년생 정국입니다. // 안녕하세요, 1999년생 연준입니다. // 안녕하세요, 2001년생 윈터입니다. // 안녕하세요, 2004년생 설윤입니다. } // constructor(생성자) // // 새 인스턴스를 만들기 위해 호출하는 특수한 함수 // 인스턴스 속성 초기화 && 인스턴스 생성시 구문 수행 // () 안에 클래스가 가지는 속성 == 생성자 // init // // 파라미터/반환형 없는 함수 // 생성자 -> 인..

[Android Studio/Kotlin syntax] Coroutine

[안드로이드 스튜디오/코틀린 문법] 코루틴 // Coroutine(코루틴) // // 메인 루틴과 별도로 진행 가능한 루틴 // 개발자가 루틴의 실행과 종료를 마음대로 제어할 수 있는 단위 // 사용시 아래와 같이 임포트 import kotlinx.coroutines.* fun main() { // 제어 범위와 실행 범위(스코프) 지정 가능 // // Global Scope(글로벌 스코프) -> 프로그램의 어디서나 제어 동작이 가능한 코루틴의 범위 // Coroutine Scope(코루틴 스코프) -> 특정한 목적의 dispatcher(디스패처)를 지정해 제어 및 동작이 가능한 새로운 코루틴 범위 생성 val scope = GlobalScope // 새로운 코루틴 생성 // // launch -> 반환값..

[Kotlin syntax] Bitwise Operation

[코틀린 문법] 비트 연산 // Bitwise Operation(비트 연산) // // 정수형 변수를 10진법이 아닌 2진법으로 연산 // 실무에서는 계산 용도로 사용하는 경우가 거의 없음 // (2진법을 이용한 연산 최적화가 필요하면 -> 컴파일러의 기능 사용) // 정수형의 값을 비트 단위로 나눔 -> 데이터를 좀 더 작은 단위로 담음 -> 경제성 높이는 용도 // 하지만 비트 연산을 사용하는 부하도 무시할 수 없으므로 // 주로 플래그 값(여러개의 상태값을 0과 1로 담는 방법)을 처리하거나 // 예) 32비트 -> 숫자가 아닌, 32개의 값을 담는 용도(T/F, on/off, 유료회원/무료회원 등) // 네트워크 등에서 프로토콜의 데이터 양을 줄이기 위해 자주 사용 // 01100011010101..

[Kotlin syntax] Constants, lateinit, by lazy

[코틀린 문법] 상수, 늦은초기화, 지연 대리자 속성 Constants(상수) // Constants(상수) // // 컴파일 시점에 결정 -> 절대 바꿀 수 없음(val보다 더 빡셈) // 기본 자료형(String 포함)만 상수로 선언 가능 // 런타임에 생성될 수 있는 일반적인 다른 클래스의 객체들은 담을 수 없음 // 상수의 이름은 의례적으로 대문자와 언더바 사용해 변수와 구분함 fun main() { // var -> 한 번 할당한 객체 다른 객체로 변경해 할당 가능 var itzy = "채령" itzy = "류진" // val -> 한 번 할당한 객체 변경 불가 // (객체 내부의 속성은 변경 가능) val idle = "우기" // idle = "수진" // Kotlin: Val cannot ..

[Kotlin syntax] Collection Functions (2)

[코틀린 문법] 컬렉션 함수 (2) associateBy, groupBy, partition fun main () { data class Gfriend(val name: String, val birthYear: Int) val gfriendMembers = listOf(Gfriend("소정", 95), Gfriend("예린",96), Gfriend("은비",97), Gfriend("은비",98), Gfriend("예원",98), Gfriend("유나",97)) // associateBy // // 아이템에서 key를 추출해 map으로 변환 println(gfriendMembers.associateBy { it.birthYear }) // {95=Gfriend(name=소정, birthYear=95), 9..

[Kotlin syntax] Collection Functions (1)

[코틀린 문법] 컬렉션 함수 (1) forEach, filter, map, any, all, none, first/find, last/findLast, count // Collection Function(컬렉션 함수) // // list, set, map 같은 컬렉션 또는 배열에 일반 함수 또는 람다 함수 형태를 사용해 // for문 없이도 아이템을 순회하며 참조하거나 조건을 걸고, 구조의 변경까지 가능한 여러가지 함수 // 반복문 및 조건문 대체 가능 fun main () { val nameList = listOf("최연준", "최수빈", "최범규", "강태현", "휴닝카이") // forEach // // 전체 반환 nameList.forEach {print(it + " ")} println() //..

[Kotlin syntax] Collections (2) Set, Map

[코틀린 문법] 셋, 맵 Set // Set // // 리스트와 달리 순서가 정렬되지 않으며 중복이 허용되지 않는 컬렉션 // 인덱스로 위치 지정해 객체 참조하기 불가능 // contains로 객체가 set 안에 존재하는지를 확인하는 식으로만 사용 fun main () { val testSet1 = mutableSetOf("a", "b", "c") println(testSet1) // [a, b, c] // add로 데이터 추가 testSet1.add("d") testSet1.add("e") println(testSet1) // [a, b, c, d, e] // 중복을 자동으로 거르기 때문에 e는 한 번만 추가됨 testSet1.add("e") testSet1.add("e") testSet1.add("e..

[Kotlin syntax] Data Class, Enum Class

[코틀린 문법] 데이터 클래스와 열거형 클래스 Data Class(데이터 클래스) // Data Class(데이터 클래스) // // 데이터를 다루는 데 최적화된 클래스 // 서버에서 받아온 데이터를 넣을 때 사용 fun main() { // 데이터 클래스에서 자동으로 구현하는 기능 // // 1. equals() { println("W") } Direction.EAST -> { println("E") } } val color = Color.GREEN // 초록 when(color) { Color.RED -> { println(Color.RED.colorName) } Color.GREEN -> { println(Color.GREEN.colorName) } Color.BLUE -> { println(Col..

[Kotlin syntax] Nested Class, Inner Class

[코틀린 문법] 중첩 클래스와 내부 클래스 Nested Class(중첩 클래스) fun main() { val test4 = Test4.Test4NestedClass() test4.testFun4() // TestFun4 } // Nested Class(중첩 클래스) // // 객체지향 / 캡슐화 // 외부 클래스의 내용을 공유할 수 없는 별개의 클래스 class Test4 { val tempText1 = "tempText1" class Test4NestedClass { fun testFun4() { println("TestFun4") // println(tempText1) // Kotlin: Unresolved reference: tempText1 } } } Inner Class(내부 클래스) fun ..

[Kotlin syntax] Arguments, Infix Functions

[코틀린 문법] 함수의 인자, 중위 함수 Default Arguments(기본 인자), Overloading(오버로딩) // OverLoading(오버로딩) // // 같은 스코프 안에서 같은 이름의 함수를 여러 개 만들 수 있는 기능 // 이름이 같고 파라미터의 자료형이 다르면 오버로딩 가능 // 이름이 같고 파라미터의 개수가 다르면 오버로딩 가능 // 이름이 같고 파라미터의 자료형과 개수가 같으면 오버로딩 불가능 fun main() { // 만약 기본 인자가 있다면 아래처럼 호출 가능 // read(x) // 기본 인자가 없음 read(7) // 숫자 7 입니다 read("감사합니다") // 감사합니다 // 꼭 모든 인자를 쓸 필요는 없음 // (count, destination 생략해도 됨) del..

[Kotlin syntax] Equality

[코틀린 문법] 변수의 동일성 // Equality(변수의 동일성) // // 내용의 동일성 // // a == b // 메모리상의 서로 다른 곳에 할당된 객체지만 내용이 같으면 동일하다고 판단함 // 코틀린의 모든 클래스가 내부적으로 상속받는 Any라는 최상위 클래스의 // equals() 함수가 반환하는 Boolean 값으로 판단 // 객체의 동일성 // // a === b // 서로 다른 변수가 메모리상의 같은 객체를 가리키면 동일하다고 판단함 fun main () { var a = Product("콜라", 1000) var b = Product("콜라", 1000) var c = a var d = Product("사이다", 1000) // 내용만 동일 println(a == b) println(a..

[Kotlin syntax] Null Safety

[코틀린 문법] null 처리 Nullability(널 가능성) // Nullability(널 가능성) // // null pointer exception 방지위해 if문으로 매번 조건 체크 -> 번거로움 // -> 연산자 사용 // Null-Safe Operator // // ?. // 참조 연산자를 실행하기 전에 먼저 객체가 null인지 확인 // -> 객체가 null이면 ?. 뒤에 따라오는 구문을 실행하지 않음 // Elvis Operator // // ?: // 객체가 null이 아니라면 그대로 사용 // -> null이면 ?: 뒤에 따라오는 객체로 대체 // Non-Null Assertion Operator // // !!. // 참조 연산자를 사용할 때 null 여부를 컴파일시 확인하지 않음 ..

[Kotlin syntax] String Formatting

[코틀린 문법] 문자열 가공하기 // String Format(문자열 가공) // // 유저가 입력한 데이터를 가공하거나 // 서버에서 가져온 데이터를 알맞게 가공해서 쓰거나 fun main() { val testString = "동해물과 백두산이 마르고 닳도록" println(testString[1]) println(testString[2]) // 해 // 물 val a = testString[1] val b = testString[2] println(a.toString() + b.toString()) // 해물 // [1]에서 시작, [3] 앞에서 자름 val splitString = testString.substring(1, 3) println(splitString) // 해물 // 전체 가져오기 ..

[Kotlin syntax] Collections (1) Lists

[코틀린 문법] 리스트 // List(리스트) // // 데이터를 모아 관리하는 콜렉션 클래스를 상속받는 서브 클래스(List, Set, Map) 중 가장 단순한 형태 // 여러 개의 데이터를 원하는 순서대로 넣어 관리하는 형태 fun main() { // List // // 생성시에 넣은 객체 대체/추가/삭제 불가능 // val a : List = listOf("사과", "딸기", "배") // 코틀린은 알아서 타입추론하기 때문에 // : List 즉 자료형 부분 생략 가능 val a = listOf("사과", "딸기", "배") println(a[1]) for (fruit in a) { print("${fruit}:") } println() // : List일 경우 자료형 아무거나 다 넣을 수 있음 ..

반응형