목록Kotlin (32)
hyeals study
* 코틀린에서는 자바와 다르게 원시타입과 래퍼 타입을 구분하지 않음. [원시 타입(primitive type)] - 원시 타입: 이 타입의 변수에는 값이 직접 들어감. ex) int 등 - 참조 타입(reference type): 이 타입의 변수에는 메모리상의 객체 위치가 들어감. ex) String 등 * 자바의 경우에는 참조 타입이 필요한 경우 특별한 래퍼 타입으로 원시 타입의 값을 감싸서 사용함. ☞ 하지만 코틀린에서는 원시 타입과 래퍼 타입을 구분하지 않고 항상 같은 타입을 사용함. ※ 원시 타입 종류 정리 정수 타입: Byte, Short, Int, Long 부동 소수점 수 타입: Float, Double 문자 타입: Char 불리언 타입: Boolean [널이 될 수 있는 원시 타입] * 널 ..
※ 코틀린의 타입 시스템(type system)은 자바와 비교해서 코드의 가독성을 향상시키는데 도움을 주는 몇 가지 특성이 있음. 널이 될 수 있는 타입(nullable type) 읽기 전용 컬렉션 배열 지원 [널 가능성(nullability)] : NullPointerException오류를 피할 수 있게 도움을 주는 코틀린 타입 시스템을 특성 ☞ 널이 될 수 있는지의 여부를 타입 시스템에 추가함으로써 컴파일러가 컴파일 시 오류를 미리 감지해서 실행 시점에 발생할 수 있는 예외 가능성을 줄일 수 있음. [널이 될 수 있는 타입] * 코틀린과 자바의 가장 중요한 차이: 코틀린 타입 시스템이 널이 될 수 있는 타입을 명시적으로 지원하는 것. * 널이 될 수 있는 타입: 어떤 프로퍼티나 변수에 null을 허용..
[수신 객체 지정 람다] : 수신 객체를 명시하지 않고 람다의 본문 안에서 다른 객체의 메소드를 호출할 수 있게 하는 것 [with 함수] ※ with 함수의 유용성을 알아보기 위한 예시 1. with 함수를 사용하지 않고 알파벳 만들기 위의 예시에서 result를 반복사용함. 2. with 함수를 사용해서 알파벳 만들기 return with(stringBuilder) 부분: 메소드를 호출하려는 수신 객체 지정 this.append(letter) 부분: this를 명시해서 앞에서 지정한 수신 객체의 메소드 호출 append("\nNow I know the alphabet!") 부분: this를 생략하고 메소드 호출 this.toString() 부분: 람다에서 값을 반환 ☞ with 함수는 파라미터가 2개..
* 람다 식(lambda expression): 다른 함수에 넘길 수 있는 작은 코드 조각 장점: 쉽게 공통 코드 구조를 라이브러리 함수로 뽑아낼 수 있음 (실제로 코틀린의 표준 라이브러리는 람다를 많이 사용함) 사용 예시: 컬렉션 처리 * 수신 객체 지정 람다(lambda with receiver): 특별한 람다임. 람다 선언을 둘러싸고 있는 환경과는 다른 상황에서 람다 본문을 실행할 수 있음. [람다 소개] * 람다식을 사용하면 함수를 선언할 필요가 없고, 코드 블록을 직접 함수의 인자로 전달할 수 있음. ☞ 코드가 간결해짐 -예를 들어, 버튼 클릭에 따른 동작을 정의할 때 이벤트 처리를 하는 리스너를 추가해야 함. 이 때 버튼 클릭 리스너는 onClick이라는 메소드가 들어있는 onClickList..
객체 선언은 싱글턴을 사용하는 방법 중 하나 동반 객체(companion object)는 인스턴스 메소드는 아님. 하지만 어떤 클래스와 관련있는 메소드와 팩토리 메소드를 담을 때 쓰임. 동반 객체 메소드에 접근할 때 동반 객체가 포함된 클래스의 이름을 사용할 수 있음. 객체 식은 자바의 익명 내부 클래스(anonymous inner class) 대신 쓰임. ☞ 공통점: 클래스를 정의하면서 동시에 인스턴스(객체)를 생성함. [객체 선언(object declaration)] * 싱글턴 패턴(singleton pattern): 자바에서 보통 클래스의 생성자를 private으로 제한하고, 정적인 필드에 그 클래스의 유일한 객체를 저장하는 패턴 ☞ 코틀린은 객체 선언 기능을 통해서 싱글턴을 언어에서 기본으로 지원..
* 코틀린은 toString, equals, hashCode 등의 메소드 구현을 자동으로 생성해줄 수 있음. [toString 메소드: 문자열 표현] - 코틀린의 모든 클래스는 인스턴스의 문자열 표현을 얻을 방법을 제공함. - 이는 toString 메소드를 오버라이드함으로써 구현할 수 있음 위의 코드는 어떤 고객의 정보를 얻어올 수 있는 문자열 표현임. toString 메소드를 오버라이드 했음. [equals 메소드: 객체의 동등성] * == 연산자: 참조의 동일성을 검사하지 않고 객체의 동등성을 검사함. 따라서 == 연산은 equals를 호출하는 식으로 컴파일됨. ☞ == 연산자는 객체의 동등성을 검사하기 때문에 false를 반환함. * equals : 참조의 동일성을 검사함 Any: 코틀린에서 모든 ..
코틀린은 primary 생성자와 secondary 생성자를 구분함. 또한 코틀린에서는 초기화 블록을 통해 초기화 로직을 추가할 수 있음. [주(primary)생성자 초기화] 보통 클래스의 모든 선언은 중괄호({})에 들어가 있음 하지만 위의 클래스 선언 예시를 보면 중괄호가 없음. 대신에 val 선언만 존재함. → 이처럼 클래스 이름 뒤에 오는 괄호로 둘러싸인 코드를 주 생성자 라고 함. 생성자 파라미터를 지정 지정한 생성자 파라미터에 의해 초기화 되는 프로퍼티를 정의 따라서 위의 코드를 풀어쓰면 아래와 작은 코드로 이해할 수 있음 constructor 키워드: 주 생성자나 부 생성자 정의를 시작할 때 사용 init 키워드: 초기화 블록을 시작함. _nickname: 생성자 파라미터임. 밑줄(_)은 프로..
[코틀린 인터페이스] : 자바의 인터페이스와 비슷함. ☞ 코틀린 인터페이스 안에 추상메소드와 구현이 되어있는 메소드(자바에서 default메소드와 비슷)를 정의할 수 있음. 다만, 인터페이스안에 어떠한 필드도 들어갈 수 없음. * 클래스는 class로 정의, 인터페이스는 interface로 정의 위의 코드는 click이라는 추상메소드가 있는 인터페이스를 정의한 예시임. * 이 인터페이스를 구현하는 모든 클래스는 click에 대한 구현을 제공해야 함. 아래와 같은 방법으로 이 인터페이스를 구현하면 됨. 자바에서는 extends나 implements 키워드를 사용하지만, 코틀린에서는 클래스명 뒤에 콜론(:)을 붙여서 상속과 인터페이스를 처리함. 자바와 마찬가지로 코틀린에서도 상속은 하나만 할 수 있고, 인터..