Kotlin/Basic

· Kotlin/Basic
Java 동등성 연산 자바에서는 원시 타입을 비교하기 위해 == 을 사용한다. 이 경우 == 는 두 피연산자의 값이 같은지 비교하는데, 이를 동등성이라고 한다. 값이 동등하다는 것이다. int a = 1 int b = 2 System.out.println(a == b) // false 동일성 연산 참조 타입인 두 피연산자 사이에 ==을 사용할 경우 주소값으로 비교를 하게 된다. 두 피연산자의 주소값이 같은 곳을 가리키고 있다면 true를 반환한다. String의 경우 원시 타입이 아닌 참조 타입이기에, 겉으로 보이는 문자가 같아도 주소값이 다를 경우 false를 출력한다. String a = "hi" // 주소값 : 1번지 String b = "hi" // 주소값 : 2번지 System.out.print..
· Kotlin/Basic
Object Kotlin에서 object는 두가지 형태로 나뉜다. Object Declarations (객체 선언식) Object Expressions (객체 표현식) Object Declarations Kotlin에서는 Java와 다르게 Singleton Class를 사용하기 위에 Object Declarations(객체 선언)을 사용한다. Java에서는 아래 코드처럼 보통 클래스의 constructor를 private으로 선언하고, statice 변수에 클래스 객체를 저장하는 방식으로 싱글턴 패턴을 구현한다. public class Manager { private static Singleton INSTANCE; private Manager() { } public static Singleton getI..
· Kotlin/Basic
2023 4월 13일 구글이 Android의 새로운 빌드 언어로 Kotlin DSL을 채택 구글이 채택한 Kotlin DSL이 무엇인지, 어떤 장점이 있는지 알아본다. Kotlin DSL Kotlin으로 작성된 도메인 특화 언어(DSL)로 Gradle, Android 등 여러 영역에서 사용되며 정적 타입 검사, 람다 함수, 확장 함수 등과 같은 Kotlin 언어의 장점을 살려 직관적인 DSL을 구축 가능하게 한다. Kotlin DSL 채택 이유 꼭 Kotlin DSL을 사용해야 하는 것은 아니나 다른 DSL의 비해서 특정 도메인이나 작업에 대해 보다 표현력이 뛰어나고 유연한 코드를 작성할 수 있도록 도와주는 도구로 채택된 것으로 본다 Kotlin DSL is Now the Default for New G..
· Kotlin/Basic
자바 8에서는 컬렉션에 포함된 자료들을 손쉽게 다룰 수 있도록 스트림(stream) 기능을 제공. Kotlin은 스트림 대신 이와 유사한 역할을 하는 함수들을 표준 라이브러리에서 제공하며, 확장 함수 형태로 제공된다. 변환 map() 컬랙션 내 인자를 변환하여 반환할 때 사용 fun main(args: Array) { val cities = listOf("Seoul", "Tokyo", "London") // SEOUL, TOKYO, LONDON cities.map { city -> city.toUpperCase() }.forEach { println(it) } // 5, 5, 6 cities.map{city -> city.length}.forEach { println(it) } } mapIndexed()..
· Kotlin/Basic
Closure Function Closure(클로저)의 개념 람다식으로 표현된 내부 함수에서 외부 범위에 선언된 변수에 접근할 수 있는 개념 이 외부 변수를 람다식 안의 외부 변수는 값을 유지하기 위해 람다식이 포획(Capture)한 변수라고 함 클로저에서는 포획한 변수는 참조가 유지되어 함수가 종료되어도 사라지지 않고 함수의 변수에 접근하거나 수정할 수 있게 해 줌 - 기본적으로 함수 안에 정의된 변수는 지역 변수로서 스택에 저장되어 있다가 함수가 끝나면 같이 사라짐 장점 내부 람다식에서 외부 함수의 변수에 접근하여 처리할 수 있기 때문에 효율이 높음 완전히 다른 함수에서 변수에 접근하는 것을 제한할 수 있음 조건 final 변수를 포획한 경우, 변수 값을 람다식과 함께 저장한다 final이 아닌 변수..
· Kotlin/Basic
Coroutine 이란 동시성 프로그래밍 개념을 코틀린에 도입 Coroutine은 시작된 스레드를 중단하지 않으면서 비동기적으로 실행되는 코드이다. 기존의 복잡한 AsyncTask 또는 다수 스레드 관리를 직접 해주지 않아도 되며, 기존 다중 스레드 보다 훨씬 더 효율적으로 동작한다. 특징으로는 스레드 위에서 실행되는 여러가지 코루틴이 존재한다고 할 때 Coroutine1,2,3 이 있다고 칠 때 1을 실행하던 중 2가 실행돼도 실행 중인 스레드를 정지하면서 컨텍스트 스위칭 개념으로 다른 스레드로 전환하는 것이 아니라 기존 스레드를 유지하며 기존 스레드에서 2를 실행하게 된다. 이후 1을 다시 실행할 때 저장해둔 1 상태를 불러와 다시 스레드에서 1을 실행하게 된다. 한마디로 스레드의 멈춤없이 루틴을 돌..
bumjae
'Kotlin/Basic' 카테고리의 글 목록