코틀린 언어 정리 1-1
기본 - 언어의 특징, 기본 형(Type)
언어의 특징
변수, 함수 선언 등을 보면 동일한 의미를 가지는 표현이 다양하게 존재합니다. 표현 방법이 다양한 이유는 주로 코딩량을 줄이거나, 간결하게 표현하여 가독성을 높이기 위함으로 보입니다. 처음에는 매우 혼란스럽습니다. 그래도 다음의 기준을 중심으로 코드를 자주 보면 조금은 도움이 될 것 같습니다.
"문법대로 코딩 했을 때 명백하게 표현이 중복 되거나, 또는 문맥 상 추론이 가능하여 중복이라고 판단 되는 문법 요소들은 대부분 중복이 제거된 다른 표현법이 존재한다."
코틀린에서는 기본 타입을 포함하여 모든 것이 객체입니다. 단 ?가 추가되지 않은( nullable이 아닌 ) 기본 타입은 코틀린 코드가 Java로 변환될 때 기본 타입에 대한 Java의 객체가 만들어지는 것이 아니라, 이와 대응하는 Java의 기본 타입으로 변환됩니다. 예를 들면 코틀린의 "Byte"는 Java의 "byte"로 변환됩니다. 코틀린의 "Byte?"는 Java의 "java.lang.Byte" 로 변환됩니다.
기본 형(Type)
숫자형
Double, Float, Long, Int, Short, Byte
특징
Int, Long형만 bit 연산이 가능합니다.
숫자에 밑줄 표현을 사용할 수 있습니다.
예제
회계 등에서 숫자 자릿수를 구분하기 위해 사용하는 콤마(',') 대신에 '_'을 사용하여 숫자 자리수를 구분할 수 있습니다.
문자형
String
예제
Char
예제
String Interpolation(보간법)/String Template
"(따옴표, 인용 부호)를 이용하여 문자열을 정의할 때 코드(보통 출력하고자 하는 변수를 자주 사용함)를 문자열 내부에 포함시킬 수 있는 방법
특징
String Template/Interpolation 을 지원하며 여러줄 문자열을 """( 따옴표 3개 )을 이용해 특별한 구분 기호 없이 선언할 수 있는 방법을 제공 합니다.
예제
자동 형 변환
기본 타입의 자동 변환은 지원하지 않습니다. C/C++ 같은 언어의 경우 int, long 등의 서로 호환되는 숫자 기본 타입(형)간 형 변환은 할당 연산자( = )만 사용해도 자동으로 되지만 코틀린에서는 각 객체( Int, Long 등 )에서 제공하는 변환 함수( toInt(), toLong() ... )를 이용해야 합니다.
기타
Boolean
true, false 두 가지 값을 가지며 C/C++ 처럼 0 == false, 1 == true 등의 비교를 수행하는 코드는 허용되지 않습니다. 즉 true/false 는 숫자와 호환되지 않습니다.
Unit
void 처럼 사용 합니다.
함수의 return type을 명시하지 않을 경우 Unit 타입으로 처리됩니다.. return 문도 생략 가능합니다.
Unit 타입의 변수에는 Unit만 대입 가능합니다.
예제
Nothing
객체를 생성할 수 없는 타입(클래스)이며, 존재하지 않는 값을 나타냅니다. 리턴 값이 존재하지 않는 경우 즉 리턴을 하지 않는 경우에 사용할 수 있습니다.
어떤 타입의 변수에도 대입 불가능하며 어떤 타입의 값도 설정할 수 없습니다.
어떤 경우에 사용되나?
throw 표현식의 type
return을 하지 않는 경우 사용
무한루프로 구현되어 의도적으로 리턴하지 않도록 처리된 함수
throw 만 있어 리턴하지 않는 함수
null만 리턴하는 경우
type을 명시하지 않은 어떤 변수 등에 null을 할당 했는데 컴파일러가 이 변수의 type을 추론할 수 없는 경우 Nothing? 로 처리됨
Any
모든 타입의 최상위 클래스이며 어떤 타입도 대입 가능합니다.
null 허용 타입
변수 선언 시 데이터 타입 뒤에 ?를 붙이면 null 허용 타입이 됩니다.
예제
null 허용 타입과 일반 타입의 대입 관계
예제
Any? 타입의 변수에 Any타입의 변수를 대입하는 것은 가능하지만 그 반대는 불가능합니다.
Any? ⇐ Any ok
Any ⇐ Any? not ok
'코틀린( Kotlin )' 카테고리의 다른 글
코틀린 1-6 기본 - operator(연산자) - null 안전 처리 연산자 (0) | 2020.04.02 |
---|---|
코틀린 1-5 기본 - 접근 제한자, 예외처리 (0) | 2020.04.01 |
코틀린 1-4 기본 - 제어문 (0) | 2020.04.01 |
코틀린 1-3 기본 - 함수 (0) | 2020.04.01 |
코틀린 1-2 기본 - 형 변환, 변수, 상수 (0) | 2020.04.01 |