1. 기본타입(primitive type)
- 자바와 동일
Byte
,Short
,Int
,Long
,Float
,Double
,부호없는 정수
- 코틀린에서는 타입을 지정해 주지 않아도 선언된 기본 값을 보고 타입을 추론한다.
val number1 = 3 // Int
val number2 = 3L // Long
val number3 = 3.0f // Float
val number4 = 3.0f // Double
기본타입간 변환
- 코틀린에서 기본타입간 변환은 명시적으로 이루어 져야 한다.
to변환타입
메서드 사용:toInt()
toLong()
,toDouble()
등- nullable일 경우
safecall
,elvis 연산
으로 처리 필요
/** Kotlin **/
// 기본타입 명시적 변환
val num1 = 4
val num2:Long = num1.toLong()
println(num1+num2)
// nullable 처리
val num3: Int? = 3
val num4: Long = num3?.toLong() ?: 0L
/** java **/
int number1 = 4;
long number2 = number1; // 큰타입(long)으로 암시적 변경
System.out.println(number1+number2)
타입 캐스팅
value is Type
: 타입 검증- java의
instanceof Type
과 동일 - 특정 타입이 아닌 걸 찾을땐
!is
사용
- java의
value as Type
: 타입으로 변환- java의
(Type)
과 동일 - 스마트 캐스트를 통해 생략이 가능하다.
as?
안전한 타입 형변환- 사용하면 타입이 null이거나 맞지 않을때 null 반환
- 이후 safe call 사용
- java의
fun printAgeIfPerson(obj:Any?){
// if(obj !is Person){ person 이 아니라면
if(obj is Person){
val person = obj as Person
println(person.age)
}
//nullable일경우 as? 사용
val person = obj as? Person // null이 들어오면 전체가 Null이 된다.
println(person?.age) // safe call
}
/** java **/
public static void printAgeIfPerson(Object obj) {
//if (!(obj instanceof Person)) { person 타입이 아니라면
if (obj instanceof Person) {
Person person = (Person) obj;
System.out.println(person.getAge());
}
}
Kotlin의 3가지 특이한 타입
Any
- Java의
Object
역할 - 모든 Primitive type의 최상의 타입도 Any이다.
- Any 자체로는 Null을 포함 할 수 없어 null을 포함하고 싶다면 Any?로 표현
- Any에 equals / hashCode / toString 존재
Unit
- Java의
void
와 동일한 역할 - Java의 void와 다르게 Unit은 그 자체로 타입 인자로 사용이 가능함( java는 VOID 사용)
- 함수형 프로그래밍에서 Unit은 단 하나의 인스턴스만 갖는 타입을 의미한다
- 코틀린의 Unit은 실제 존재하는 타입이라는 것을 표현
Nothing
- 함수가 정상적으로 끝나지 않았다는 사실을 표현하는 역할
- 무조건 예외를 반환하는 함수, 무한루프 함수 등
fun fail(message: String): Nothing{
throw IllegalArgumentException(message)
}
String Interpolation
${변수}
를 통해 문자열 안에 변수를 넣어줄 수 있다.- 중괄호를 생략해서 사용 가능하나 가독성, 일괄변경, 정규식 활용 측면에서 왠만하면 넣어주는 것을 추천
// String Interplation
val person = Person("지훈",100);
println("이름 : ${person.name} / 나이 : ${person.age} ")
println("이름 : $person.name / 나이 : $person.age ")
//java
System.out.println(String.format("이름 : %s / 나이 : %s ", person.name, person.age))
trimIndent
- 여러줄에 걸친 문자를 작성할때
trimIndent
사용하면 편리하다. - 큰따옴표 세개로 사용
val name = "지훈"
println( """
내
이름은
${name}
""".trimIndent()
)
/* 결과
내
이름은
지훈
*/
String Indexing
- 문자열을 가져올때 는 Java의 배열처럼
대괄호 []
를 사용한다
//String indexing
val str = "ABC"
println(str[0])
println(str[2])
/* 결과
A
B
*/
Reference
자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide) - 인프런 | 강의
자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide) - 인프런 | 강의
이 강의를 통해 Kotlin 언어의 특성과 배경, 문법과 동작 원리, 사용 용례, Java와 Kotlin을 함께 사용할 때에 주의할 점 등을 배울 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
'Program > Kotlin' 카테고리의 다른 글
[Kotlin] 6. 반복문 (for, foreach, while, Progression, Range) (0) | 2022.09.13 |
---|---|
[Kotlin] 5. 조건문(if, switch, when) (0) | 2022.09.13 |
[Kotlin] 4. 연산자 (단항연산자, 산술연산자, 비교연산자, 논리연산자, 동등성, 동일성, 연산자 오버로딩) (0) | 2022.09.13 |
[Kotlin] 2. Null 처리 (Safe Call, Elvis 연산자) (0) | 2022.09.09 |
[Kotlin] 1. 변수 (var, val, primitive) (0) | 2022.09.09 |