목록Kotlin (32)
hyeals study
* 코틀린의 if 식은 값을 만들어내기 때문에 자바와 달리 3항 연산자가 따로 없음 일단 간단한 덧셈 기능을 하는 함수를 작성해보면 [덧셈 기능을 하는 함수] Expr 인터페이스: 단지 여러 타입의 객체를 아우르는 공통 타입 역할만 수행하는 인터페이스 인터페이스를 지정하기 위해서는 콜론(:)뒤에 인터페이스 이름을 작성하면 됨 Num 클래스: Expr 인터페이스를 구현하고, value라는 프로퍼티만 존재하는 클래스 Sum 클래스: Expr 인터페이스를 구현하고, Expr 타입의 객체를 인자로 받는 클래스 * eval 함수 is: 변수 타입 검사 (자바의 instanceof와 비슷), 코틀린에서는 is로 변수로 타입을 검사하고 컴파일러가 알아서 원하는 타입으로 캐스팅을 해줌. 이를 스마트 캐스트(smart ..
* when식은 자바에서 switch문에 해당하는 코틀린 구성요소임. if식과 마찬가지로 값을 만들어내는 식임. 아래의 코드는 앞 게시물에서 사용한 enum 클래스를 이용해서 when식 구성한 예시임. 위의 코드는 color 파라미터에 전달된 값과 같은 분기를 찾는 기능을 함. * when이 값을 만들어내는 식이기 때문에 따로 getMnemonic함수의 반환형을 명시하지 않고 = 을 붙여서 when식 자체를 반환 값으로 직접 사용함. 자바와 달리 각 분기 끝에 break를 작성 하지 않아도 됨. 좀 더 나아가서 when에서 한 분기 안에 여러 값을 사용할 수 있음. 위의 코드처럼 when의 한 분기 안에서 여러 값을 사용할 수 있음. 이 때 값들을 콤마(,)로 구분해야 함. [코틀린에서 when은 자바의..
* enum: 클래스 앞에 사용될 때는 특별한 의미를 지니고 그 외에는 이름으로 사용할 수 있는 소프트 키워드(soft keyword) 라는 존재임 반면 class는 키워드이므로 이름으로 사용하고 싶을 때는 clazz처럼 변경해서 사용해야 함. 아래에 간단한 enum 클래스 예시를 작성함. 자바와 마찬가지로 enum은 단순히 값 만을 열거하는 존재가 아님. ☞ enum 클래스 안에 프로퍼티나 메소드 정의 가능 위의 코드에서 r,g,b: 상수의 프로퍼티 RED(255,0,0), ORANGE(...), ... , VIOLET(238,130,238): 각 상수를 생성할 때 그에 대한 프로퍼티 값을 지정해 놓은 것 그리고 그 뒤에 반드시 세미콜론(;)를 붙여야 함. (상수와 메소드를 구분하기 위함) fun rg..
* 클래스(class): 객체 지향 프로그래밍에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀. * 클래스 사용 목적: 데이터의 캡슐화(encapsulate)와 캡슐화한 데이터를 다루는 코드를 한 주체 아래 담는 것. * 클래스는 사용자에게 그 데이터에 접근할 수 있도록 하기 위해 접근자 메소드(accessor method)를 제공함. * 접근자 메소드(accessor method): 보통 필드를 읽기 위한 getter와 필드를 변경하기 위한 setter를 제공함. 이후에 코틀린 클래스와의 비교를 위해 자바로 Person이라는 클래스를 정의함. * 자바에서는 데이터를 field에 저장함. 멤버 필드의 가시성(visibility)은 일반적으로 비공개(private)임. 위의 코드에서 필드..
함수: 모든 프로그램을 구성하는 기본 단위임(변수도 마찬가지) [함수 선언- 블록이 본문인 함수] 기본적으로 함수의 선언은 fun 키워드로 시작함. 위의 코드로 함수의 구조를 살펴보면 fun 키워드로 함수 선언을 시작함 fun 다음에는 함수 이름이 위치함(여기서는 max가 함수이름) 함수 이름 뒤에는 괄호 안에 파라미터 목록이 위치함(여기서는 a: Int, b: Int) // 콜론(:) 뒤에 위치한 Int는 파라미터의 타입을 나타냄 닫는 괄호 뒤에 콜론(:)으로 괄호와 반환 타입을 구분함 그 다음 함수의 반환 타입이 위치함.(여기서는 Int 타입) 위의 코드의 특징 중 하나는 return 값에 if식이 들어간다는 것. 또한 위 코드에서 함수의 본문은 if식 부분임. 이는 자바에서 3항 연산자와 유사함. ..
문자열 템플릿(string template) 위 코드에서는 name 이라는 변수를 선언하고 문자열 안에서 그 변수를 사용함. 이를 통해 코틀린에서도 변수를 문자열 리터럴안에서 사용할 수 있음을 알 수 있음. 문자열 리터럴의 필요한 곳에 변수를 넣되 변수의 이름 앞에 $를 붙여야 함. (이는 자바에서 ("Hello, " + name + "!")과 같은 기능을 함) *문자열 리터럴: [(변수에 넣지 않은) + (값을 바꿀 수 없는)] 문자열 만약 $문자를 문자열에 넣고 싶으면 위와 같이 \를 앞에 붙여서 $를 이스케이프 시키면 됨. 문자열 템플릿안에 사용할 수 있는 대상은 변수로만 한정되지 않음 예를 들어 위와 같은 코드 처럼 배열의 첫 번째 원소 출력하는 복잡한 식도 ${}를 이용해서 문자열 템플릿 안에 ..
※가장 기본적인 예제 위의 예제에서 살펴 볼 수 있는 특징 fun 키워드: 함수를 선언할 때 사용 파라미터의 이름 뒤에 파라미터의 타입을 지정 자바와 차이점(1): 함수가 꼭 클래스 안에 있지 않아도 됨 자바와 차이점(2): System.out.println를 코틀린에서는 println으로 간단하게 사용 가능(코틀린 표준 라이브러리가 표준 자바 라이브러리 함수를 간단하게 사용할 수 있게 Wrapper를 제공해줌) 명령 끝에 세미콜론(;) 생략 가능 ※변수 특징: 코틀린에서 변수의 타입 지정을 생략할 수 있음. [선언 방법] (1) 변수를 선언할 때 타입을 생략하는 경우: 컴파일러가 알아서 타입 지정해줌 (2) 변수를 선언할 때 타입을 명시하는 경우 (3) 변수를 선언과 동시에 초기화하지 않는 경우에는 반..
코틀린이란? 자바 플랫폼에서 돌아가는 프로그래밍 언어. 특징 간결하고 실용적임. 자바 코드와 상호 운용성이 좋음. 기존 자바 라이브러리나 프레임워크와 함께 잘 작동함. ☞ 자바가 사용 되는 곳(서버 애플리케이션 개발, 안드로이드 개발 등) 대부분에 코틀린을 적용할 수 있음. 프로그래밍 언어로서의 특성 정적 타입 지정 언어: 프로그램을 구성하고 있는 요소들의 타입을 컴파일 시점에서 알 수 있고, 프로그램 내부에 있는 객체의 필드나 메소드를 사용 할 때 마다 컴파일러가 타입을 검증해줌. 변수의 타입을 명시할 필요가 없음: 코틀린 컴파일러가 변수 타입을 알아서 유추해서 결정함(=type inference) nullable type 지원: 컴파일 시점에서 null pointer exception의 발생 가능성을..