프로그래밍 언어(21)
-
Kotlin에서 launch와 async는 무엇이 다를까?
🌟 들어가기 전오늘은 launch와 async의 차이점에 대해 학습했다. 두 개 모두 코루틴을 실행할 때 사용되지만, launch는 결과를 반환하지 않고 단순 실행하는 반면,async는 값을 반환할 수 있다는 차이가 있다. 그동안 개발을 해오면서 두개의 차이를 정확하게 모르고 사용했다.그냥 예제 긁어서 복붙…. ㅠㅠ 그래서 파헤쳐본 launch와 async는 무엇이 다를까? 🔍 세부 내용1. launch vs async 차이점launch → 결과를 반환하지 않고, 단순히 새로운 코루틴을 실행async → 결과를 반환하는 Deferred 객체를 생성해서 await()로 값을 받을 수 있음2. 예제 코드import kotlinx.coroutines.*fun main() = runBlocking { ..
2025.02.03 -
객체지향 언어와 함수형 언어, 그리고 Java와 Kotlin의 관계
🌟 들어가기 전내가 자주 쓰는 언어인 Java와 Kotlin.두 언어는 모두 객체지향 언어이지만 Kotlin은 함수형 언어에 포함되기도 한다. 그렇다면 우리가 흔히 아는 객체지향 언어와 함수형 언어.그들 사이의 차이는 어떤 것이고 특징은 어떨까? 🔍 세부 내용✅ 객체지향 언어 (OOP)객체지향 언어는 클래스와 객체를 기반으로 데이터와 메서드를 캡슐화하여 재사용성과 유지보수성을 높이는 특징을 가지고 있다.가장 대표적인 특징 4가지 !캡슐화(Encapsulation): 데이터와 메서드를 하나의 객체로 묶어 외부에 노출할 범위를 제어 (ex. getter/setter)상속(Inheritance): 기존 클래스의 기능을 재사용하여 새로운 클래스를 생성다형성(Polymorphism): 동일한 메서드 이름으로 ..
2025.01.16 -
[JAVA] StringBuilder와 StringBuffer의 차이점
알고리즘 문제를 풀다가 String으로는 시간이 너무 오래 걸려, StringBuilder와 StringBuffer를 골라 사용해야 하는 경우가 있었다.문득 그 두 클래스의 차이가 궁금해졌다. StringBuilder와 StringBuffer는 둘 다 문자열을 변경 가능하게 다룰 수 있는 Java 클래스이다.이 둘의 기본적인 용도와 동작은 유사하지만 다음과 같은 몇 가지 차이가 있다. 동기화(Synchronization)StringBuilder동기화되지 않음 (Non-synchronized).따라서, 멀티스레드 환경에서 안전하지 않을 수 있지만, 단일 스레드 환경에서 StringBuffer보다 더 빠름.StringBuffer동기화됨 (Synchronized)멀티스레드 환경에서 여러 스레드가 안전하게 사..
2024.07.05 -
[프로그래머스/Kotlin]Level3 - 양과 늑대
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 문제 설명 2진 트리 모양 초원의 각 노드에 늑대와 양이 한 마리씩 놓여 있습니다. 이 초원의 루트 노드에서 출발하여 각 노드를 돌아다니며 양을 모으려 합니다. 각 노드를 방문할 때 마다 해당 노드에 있던 양과 늑대가 당신을 따라오게 됩니다. 이때, 늑대는 양을 잡아먹을 기회를 노리고 있으며, 당신이 모은 양의 수보다 늑대의 수가 같거나 더 많아지면 바로 모든 양을 잡아먹어 버립니다. 당신은 중간에 양이 늑대에게 잡아먹히지 않도록 하면서 최대한 많은 수의 양을 모아서 다시 루트 노드로 돌아오려 합니다. ..
2023.06.25 -
[Java/Kotlin]Iterator
Iterator 인터페이스는 컬렉션의 요소를 순회하고 선택적으로 요소를 제거할 수 있는 메소드를 정의하는 자바의 인터페이스입니다. 이 인터페이스는 자바 컬렉션 프레임워크의 일부로 제공되며, 다양한 자료 구조를 효율적으로 순회하고 조작하는 데 사용됩니다. Iterator 인터페이스는 hasNext(), next(), remove() 세 가지 메소드를 정의합니다. hasNext(): 이 메소드는 다음 요소가 있으면 true를 반환하고, 없으면 false를 반환합니다. next(): 이 메소드는 다음 요소를 반환합니다. remove(): 이 메소드는 마지막으로 반환된 요소를 제거합니다. next()를 호출한 후에만 호출 가능합니다. Iterator 인터페이스는 자바의 ArrayList, LinkedList, ..
2023.05.11 -
[Kotlin]Typealias VS Inline Class
1. typealias 변수들에 대한 새로운 별명을 지어주고, 짧게 사용 가능 typealias를 클래스 혹은 함수 내에서 정의하는 것은 불가능하다 typealias는 누구나 접근할 수 있는 Top Level 변수이다 동일한 type을 여러 개의 이름*으로 사용할 수 있다. ex1-1. typealias NodeSet = Set ex1-2. typealias FileTable = MutableMap ex2-1. typealias MyHandler = (Int, String, Any) > Uit ex2-3. typealias Predicate = (T) -> Boolean PermissionDialog 클래스를 PermissionDialogCallback으로 정의 (PermissionDialog) -> U..
2023.02.24