분류 전체보기108 [kotlinlang.org] 한글화. 2 유형 검사 [원본] https://kotlinlang.org/docs/typecasts.html is, !is 변수 is 타입 : 리턴 = true/false fun main() { var obj = "가나다라마" if (obj is String) { println(obj.length) } if (obj !is String) { // 다음과 같습니다 : !(obj is String) println("Not a String") } else { println(obj.length) } } 5 5 스마트케스트 아래 경우에는 정해지지 않은 타입이라도 유추할 수 있습니다. Any : 정해지지 않은 타입 is연산자를 통해서 타입을 보장할 수 있는 경우, 해당 타입으로 케스트(사용)할 수 있습니다. 경우1 : if 이하에서.. .. 코틀린 2022. 5. 6. [kotlinlang.org] 한글화. 1 기본 유형 [원본] https://kotlinlang.org/docs/basic-types.html 사전지식 : C와 Java에서는 기본형 타입을 제공했다. Kotlin에서는 기본 유형(숫자, 부울, 문자, 문자열, 배열)도 일반 클래스로 이루어져 있습니다. 숫자 정수 Kotlin에서 4개의 숫자유형(Byte, Short, Int, Long)을 사용합니다. 선언시 언급이 없다면 컴파일러는 값을 유추하게 됩니다. 32bit를 넘어가지 않으면 Int로, 32bit를 넘어간다면 Long으로 유추합니다. 만약 강제로 64bit 정수로 선언하고 싶다면, 숫자 뒤에 L을 붙여줍니다. Byte(8bit), Short(16bit), Int(32bit:기본), Long(64bit) 강제 Long선언 : 접미사 L (예 : 123L.. 코틀린 2022. 5. 6. [kotlinlang.org] 한글화. 0 기본 구문 원문 : https://kotlinlang.org/docs/basic-syntax.html ※ 초보자 시각에서 부적절해 보이는 내용의 순서를 변경하였습니다. 어플리케이션 진입점 어플리케이션 진입점은 main함수입니다. fun main() { println(result) } print는 기본 출력함수입니다. println은 기본 출력+줄바꿈입니다. fun main() { print("Hello ") print("world!") } fun main() { println("Hello world!") println(42) } 주석 한 줄 주석 : // 주석내용 여러줄 주석 : /* 주석내용 */ // 한줄 주석입니다. /* 여러줄 주석입니다. */ 변수 변수 선언은 var 또는 val을 사용합니다. 변수를 문자.. 코틀린 2022. 5. 5. 2진법 이해하기 코딩 첫 수업은 언제나 어렵습니다. 수학은 이것이 처음이자 마지막입니다. 엔지니어들이 100% 이공계열에서 배출되지만, 막상 코딩은 이공계열 지식보다는 언어적 역량이 필요하지 않을까 싶네요. 그 만큼 이해를 못해도 상관은 없습니다. 컴퓨터는 큰1과 작은1이 다르다고 그냥 외우셔도 상관은 없습니다만, 아이언맨을 목표로 하는 분께는 필수로 습득해야 하는 지식입니다. 선행지식 : 덧셈, 곱셈, 음수, 지수(10^(-1)=?) 학습목표 : 2진법 110.11을 10진법으로 바꿀 수 있습니다. 컴퓨터가 음수를 취급하는 방법을 이해합니다. 2진수란? 진법이란? 0과 1만 사용하는 숫자체계를 2진수라고 합니다. 3진수는 0, 1, 2를 이용하는 숫자입니다. 10진수는 0부터 9까지 이용하는 숫자입니다. 11진수는 0.. 공통 2022. 5. 3. [Youtube DiMo] 31강. 동기처리(마지막) [31강] https://youtu.be/Lpieg1zrKdg 0. 컨셉 코드1 ...(10초 후) 코드2 ...(응답이 오면) 코드3 코드1에서 10초 기다렸다가 코드2를 수행 할 수 있을까? 코드2에서 응답이 오면 코드3으로 진행 되도록 할 수 있을까? 만약 프로그램이 나 혼자라면, 10초 동안 의미 없는 일을 계속 시킬 수도 있으나, 잠시 대기하라는 명령어를 넣어 줄 수도 있습니다. 또는 "응답이 오면(상태가 바뀌면)" 이라는 명령어가 있다면 편리할 것입니다. 1. 비동기 함수 불러오기 kotlinx.coroutines.* 을 import하기 launch로 실행하기 (람다함수 형) main이 종료되면 다 같이 종료되므로 runBlocking을 통해서 막아주기 import kotlinx.corouti.. 코틀린 2022. 5. 3. [Youtube DiMo] 30강. 비트연산 [30강] https://youtu.be/yCfEDF9KP3k 1. 비트연산 fun main() { var bit1 = 0b001101 var bit2 = 0b010100 printBinary(bit1) printBinary(bit2) println() printBinary(bit1 and bit2) printBinary(bit1 or bit2) printBinary(bit1 xor bit2) println() printBinary(bit1 shl 3) printBinary(bit1 shr 1) } // (i=2진수로 변환할 데이터, minLen=출력할 최소 자릿수(8)) // xxxxxxxx(10진수) fun printBinary(i: Int, minLen: Int = 8){ var l = minLen.. 코틀린 2022. 5. 3. [Youtube DiMo] 29강. 변수 [29강] https://youtu.be/4LnpxYauzVE 1. Const fun main() { val foodCourt = FoodCourt() foodCourt.getPrice(FoodCourt.FOOD_PASTA) foodCourt.getPrice(FoodCourt.FOOD_STEAK) foodCourt.getPrice(FoodCourt.FOOD_PIZZA) } class FoodCourt { companion object { const val FOOD_PASTA = "파스타" const val FOOD_STEAK = "스테이크" const val FOOD_PIZZA = "피자" } fun getPrice(foodName: String) { val cost = when(foodName) { F.. 코틀린 2022. 5. 3. [Youtube DiMo] 27-28강. 컬렉션 함수 [27강] https://youtu.be/6iZDjLvhMN8 [28강] https://youtu.be/pFk72oghDLo 1. 컬렉션 함수 문법 : 컬렉션명.forEath{바디} 반환값이 true/false인 경우 컬렉션명.any{바디} ==> OR : 하나라도 참이면 컬렉션명.all{바디} ==> AND : 모두 참이면 컬렉션명.none{바디} ==> !AND : 모두 참이 아니면 검색값 반환 컬렉션명.first{바디} 컬렉션명.last{바디} 컬렉션명.count{바디} ※ 컬렉션명.firstOrNull{바디} : 조건 검색값이 없을 때, Exception을 발생하므로 Null을 반환할 수 있도록 사용 lastOrNull https://www.tutorialkart.com/kotlin/kotlin-.. 코틀린 2022. 5. 3. [Youtube DiMo] 26강. Set / Map [26강] https://youtu.be/TXa-o5rwT2U 1. Set fun main() { val a = mutableSetOf("귤", "바나나", "키위") for(item in a) { println(item) } a.add("자몽") println(a) println(a.contains("바나나")) a.remove("바나나") println(a) println(a.contains("바나나")) } 귤 바나나 키위 [귤, 바나나, 키위, 자몽] true [귤, 키위, 자몽] false 2. Map fun main() { val lockerRoom = mutableMapOf(123 to "김철수", 345 to "홍길동", 5252 to "임꺽정") println(lockerRoom) for.. 코틀린 2022. 5. 3. [Youtube DiMo] 25강. Data / Enum [25강] https://youtu.be/SKosPXHLT5Q 0. 모든 객체에 기본 지원되는 함수 모든 객체는 Any를 참조하므로 Any가 가지고 있는 메소드는 모든 객체가 사용할 수 있다. equals : 같은 (메모리) 객체인지 판별하는 함수 toString : 객체명@해쉬코드(16진수) ※ 아무것도 호출되지 않았을 때도 toString이 호출(기본값) hashCode : 해쉬값을 정수형으로 반환 fun main() { val a = MyClass("수박", 1) val b = MyClass("수박", 1) println(a.equals(b)) println(a.hashCode()) // 10진수 println(a.toString()) // 16진수 println(a) println("%x".for.. 코틀린 2022. 5. 3. [Youtube DiMo] 24강. 내부클래스 [24강] https://youtu.be/C1XkTc6dLEY 1. 중첩클래스 클래스 내부에 선언하는 클래스 2. 내부클래스 클래스 내부에 비동립적으로 선언되는 클래스 외부 멤버를 가져쓸 때: 직접 호출 가능 ※ 만약 중복 된다면, "this@외부.멤버"로 작성 가능 fun main() { Outer.Nested().introduce() //Outer.Inner().introduceInner() //Error val outer = Outer() val inner = outer.Inner() inner.introduceInner() inner.introduceOuter() outer.text = "Changed Outer Class" inner.introduceOuter() } class Outer { v.. 코틀린 2022. 4. 30. [Youtube DiMo] 23강. 함수 [23강] https://youtu.be/_hpLoC6ymao 1. 함수의 기본성질 : Overloading 함수의 이름이 다르면 다른 함수이다. 함수의 전달인자 타입이 다르면 다른 함수이다. 함수의 전달인자 갯수가 다르면 다른 함수이다. 함수의 전달 순서가 다르면 다른 함수이다. 즉, 함수의 이름과 절달인자의 갯수와 타입이 정확하게 일치해야 같은 함수이다. (단, 인자명은 다를 수 있다.) 만약, 함수의 이름만 같고, 이외의 것들이 다 다르면 Overloading이라고 하고, 왜? 프로그래머가 작업(기억)하기 좋게 하기 위한 방편 fun main() { myFunc(1) myFunc("ABC") myFunc(1, "ABC") myFunc("ABC", 1) } fun myFunc(x : Int){ pri.. 코틀린 2022. 4. 30. 이전 1 2 3 4 ··· 9 다음