Programming

    [Kotlin] 빈 문자열 확인(isEmpty, isBlank)

    빈 문자열 확인 문자열을 활용하다 보면 이 문자열이 빈 문자열인지 아닌지 확인해야 할 경우가 있다. 빈 문자열을 확인할 때에는 isEmpty() 또는 isBlank()를 사용할 수 있다. someString.isEmpty() someString.isBlank() 두 메소드는 비슷해 보이지만 약간의 차이점이 있다. isEmpty() isEmpty()는 특정 문자열이 ""인지 아닌지를 확인한다. val s1 = "" s1.isEmpty() // true val s2 = " " s2.isEmpty() // false 따라서, 위의 두 문자열 중 s2는 empty하지 않다는 결과를 돌려준다. isBlank() isBlank()는 특정 문자열이 비어 있거나, 또는 공백으로만 이루어져 있는지를 확인한다. val s..

    [Kotlin] 늦은초기화 (lateinit, by lazy)

    늦은 초기화 클래스 안에서 변수를 선언만 해 놓고, 나중에 값을 사용할 수 있게 되면 그 때 값을 입력해 주고 싶을 때가 있다. 이럴 때 사용 가능한 방법 중에는 아래와 같이 우선 null로 설정해 준 뒤 나중에 바꾸는 방법이 있기는 하다. var x : String? = null 1) x의 값이 변할 수는 있지만, 절대 null이어서는 안 되는 경우 -> 처음에 nullable한 으로 초기화해주는 것이 부적절함 2) x의 값이 처음 한 번만 정해지면 다시는 변하지 않는 경우 -> x가 var일 이유가 없음 애초에 '나중에 쓸 것'이라는 걸 알고 있는데, '왜 처음에 null로 고정을 해 주어야 하냐?' 라는 문제다. 이럴 때를 위해 제공되는 문법이 lateinit, 그리고 by lazy이다. latei..

    [Android] Conent Provider

    ContentProivider는 안드로이드 애플리케이션을 구성하는 4대 구성요소 중 하나로 다른 애플리케이션의 데이터에 접근이 필요할 때 사용하게 되는 컴포넌트이다. 일반적으로 각 앱은 하나의 프로세스로 실행되며 자신의 프로세스에서 사용하는 데이터는 자신만 접근가능하도록 되어 있지만 다른 앱의 데이터 접근이 필요한 경우에 ContentProivider를 통해 접근을 할 수 있다. 예를들어 사진첩에 있는 사진들을 가져오거나 연락처에 있는 연락처 정보들을 가져와야할 경우가 있습니다. 이 때 사진 앱에는 ContentProvider가 구현되어 있어 해당 앱의 데이터를 나의 앱에서 사용할 수 있도록 통로를 제공해준다. 일반적으로 다음과 같이 두 가지 경우에서 주로 ContentProvider를 사용한다. 내 애..

    [Kotlin] invoke

    fun main(args: Array): Unit { val person = Person("Kotlin") person() } class Person(var name: String) { operator fun invoke() { println("name : $name") } } 결과 : name : Kotlin person이라는 객체를 선언한뒤, 객체 내의 함수 이름인 invoke를 호출하지 않아도 invoke 내부의 함수가 호출이 된다. 즉, invoke를 이용해 자주 호출해야 하는 함수를, 객체의 이름+()만으로도(물론 invoke 내의 매개변수가 있으면 () 내에 매개변수를 넣어줘야겠지만!) 호출할 수 있게 되는 것이다.

    [Kotlin] 생성자

    자바에 비해 코틀린에서는 간단하고, 다양하게 생성자를 정의할 수 있다. 코틀린의 생성자는 주생성자와 부생성자로 구분할 수 있다. 보통 주생성자는 클래스를 초기화할 떄 주로 사용하는 간략한 생성자로 클래스 본문 밖에서 정의하며 부생성자는 클래스 본문 안에서 정의한다. 또한 코틀린에서는 초기화 블록(initializer block)을 통해 초기화 로직을 추가할 수 있습니다. 주생성자 (Primary Constructor) 아래와 같이 클래스 이름 옆에 괄호로 둘러싸인 코드를 주 생성자 라고 부릅니다. 주 생성자는 생성자 파라미터를 지정하고 그 생성자 파라미터에 의해 초기화되는 프로퍼티를 정의하는 두 가지 목적에 쓰입니다. 코틀린의 클래스는 하나의 주생성자와 다수의 부생성자를 가질 수 있습니다. class U..

    [Android] Activity

    Activity는 사용자가 어떠한 활동 할 때 실행되는 컴포넌트이다. UI를 제공하여 사용자와 상호작용을 하며, class에서 activity를 상속받아 사용할 수 있다. 보통 앱은 여러 화면으로 구성되어 있어 여러 액티비티로 구성되어있다고 할 수 있다. 예를 들어 앱을 시작할 때 나오는 로그인 화면, 로그인을 했을 때 이동하는 메인화면 등 모두 각각의 액티비티들이다. 액티비티를 생성하면 .kotlin(또는 .java) 클래스 파일과 .xml파일이 함께 생성된다. .xml파일은 UI를 만드는 파일이며, 클래스 파일은 .xml파일에 만들어놓은 버튼 등 UI에 기능을 붙여 여러 동작이 가능하도록 만들 수 있다. Activity 생성 activity를 생성하는 방법은 총 2가지가 있다. 안드로이드 스튜디오에서..

    [Kotlin] Unit

    코틀린의 Unit은 자바의 void,Void를 합친것이라고 볼 수 있다. void와 Void 자바의 void와 Void는 마치 int와 Integer와 같음 비유하자면 void는 기본형, Void는 참조형메서드에서 리턴타입이 없으므로 생략한다는 의미의 void를 사용했음제네릭을 사용할때는 반드시 참조타입으로 타입을 명시해야 하는데, void는 제네릭에서 사용될 수 없어서 Void를 사용함void: 반환값이 존재하지 않음Void: 인스턴스 생성 불가 혹은 참조값이 존재하지 않음 함수 반환 값이 필요없을 때, 반환 타입으로 Unit을 사용해서 반환타입이 없다는 것을 명시한다. 또한 Unit은 싱글톤을 가지기 때문에 Unit이라는 단 하나의 값만 가짐 따라서 Unit?은 존재할 수 없다. Unit은 참조형이기..