프로그래밍언어 47

Kotlin 연산자 재정의

연산자 재정의란? 코틀린에서는 사용자가 연산자들을 재정의해서 사용할 수도 있다. 연산자 재정의는 개발자가 원하는 특정 연산을 수행하도록 연산자를 다시 정의하는 것을 말한다. 예를 들어 +는 더하기를 하는 연산이지만, 재정의를 통해 +를 빼기 연산을 하도록 재정의할 수 있다. 연산자 재정의는 함수를 재정의함으로써 이루어진다. 그 이유는 무엇일까? +가 plus()함수, -가 minus() 등의 연산을 수행하는 함수가 존재하기 때문이다. 예를 들어 +라는 연산을 수행하는 plus함수를 사용한 코드이다. fun main() { val a: Int = 10 val b: Int = 5 val result1: Int = a + b val result2: Int = a.plus(b) println("result1 :..

Kotlin 전개 연산자의 이해

전개 연산자 전개 연산자는 배열 데이터를 단순 나열할 때 사용한다. *A 의 의미 : A 배열의 데이터를 나열한다. *기호는 흔히 곱하기 연산자이다. 그런데 Kotlin에서 * 기호는 곱하기 이외에 전개 연산자(Spread Operator)로도 사용된다. 전개 연산자는 배열값을 나열할 때 사용한다. 아래 예시 코드를 보자. import java.util.Arrays.asList fun main(args: Array) { val array = arrayOf(10, 20, 30) val list = asList(1, 2, array[0], array[1], array[2], 100, 200) list.forEach{print(it)} } 위에서 배열의 크기는 3이므로 3개의 데이터를 직접 추가하였다. 하지만..

스레드 우선순위

멀티 스레드는 동시성(Concurrency) 또는 병렬성(Parallelism)으로 실행된다. 동시성은 멀티 작업을 위해 하나의 코어에서 멀티 스레드가 번갈아가며 실행하는 성질을 말하고 병렬성은 멀티 작업을 위해 멀티 코어에서 개별 스레드를 동시에 실행하는 성질을 말한다. 자바의 스레드 스케줄링은 Priority 방식과 Round Robin 방식을 사용한다. Priority 방식은 우선순위가 높은 스레드가 실행 상태를 더 많이 가지도록 스케줄링 하는 것을 말한다. Round Robin 방식은 시간 할당량(Time Slice)를 정해서 하나의 스레드를 정해진 시간만큼 실행하고 다시 다른 스레드를 실행하는 방식을 말한다. Priority 방식에서 우선순위는 1~10으로 주어지며 1이 가장 낮고 10이 가장 ..

정적 바인딩 vs. 동적 바인딩

* Binding - 프로그램 구성 요소의 성격을 결정해주는 것 ex ) 변수의 데이터 타입이 무엇인지 정해지는 것 종류 정적 바인딩(Static binding) 동적 바인딩(Dynamic binding) 정의 컴파일 시간에 성격이 결정되는 것 실행 시간(runtime)에 성격이 결정되는 것 예시 C언어 컴파일 시간에 변수의 데이터 타입이 결정 Python(Interpreter 언어) 런타임에 값에 따라 변수의 데이터 타입이 결정 장단점 컴파일 시간에 많은 정보가 결정되므로 실행 효율↑ 런타임에 자유롭게 성격이 바뀌므로 적응성↑

JAVA 직렬화와 Transient Keyword

오늘은 처음 알게 된 Transient Keyword에 대해 정리해보고자 한다. # Serialization 직렬화 (Serialization)으로 검색해서 나온 정보들은 종합해 보면 대부분 같다. 직렬화란 오브젝트를 데이터스트림에 쓰기 위해 연속적인(serial) 바이트로 변환 하는것을 말한다. Java에서 직렬화가 가능한 것 원시타입 객체 Serializable 인터페이스를 implements 한 오브젝트 Serializable 인터페이스를 implements 한 클래스나 인터페이스를 상속/구현 한 오브젝트 예를 들어서 주민번호(pNumber)와 이름(name)으로 구성된 Person 객체 있다고 가정하자. name과 pNumber를 파일로 저장해도 되지만, 이를 객체 자체를 저장하고 싶다면 Seri..

RxJava 시작

RxJava란 RxJava란 Reactive Programming을 하기위한 라이브러리인 Rx(Reactive Extensions)의 JVM판입니다. StreamAPI + 비동기 콜백같은 느낌. 이벤트를 정의한 Observable 인스턴스에 대해 짧은 함수를 엮은(체인) 스트림같이 이벤트 결과 데이터를 가공하는 처리를 정의, 지연실행, 비동기 콜백을 할 수있다. 기본적인 사용법 처리를 싱행하고 결과를 전달하는 Observable, 결과를 수신할때의 처리를 정하는 Observer를 사용한다. 우선 “Hello”와 “world”라는 2개의 문자열을 결과로 전달하는 심플한 Observable를 생성해보자. ※java.util.Observable가 아니므로 주의 Observable myObservable = O..

Kotlin Singleton

JAVA로 Android 개발 시 종종 등장했던 Singleton을 Kotlin에서 사용하는 간단한 예제를 소개하고자 한다. JAVA에서는 보통 다음과 같이 Singleton을 구현했었다.public class Singleton { private static Singleton singleton; private Singleton() { } public Singleton getInstance() { if(singleton == null) singleton = new Singleton(); return singleton; } }Kotlin에서는 아래와 같이 object를 사용하여 간단하게 Singleton을 하나 만들어 보았다. object KotlinSingleton { val value: String = ..