[Kotlin] 코틀린에서 Type 다루는 법 : 기본타입/일반타입/타입변경/타입캐스팅/코틀린의 3가지 타입/ String Interpolation(문자열 덧붙이기)/String indexing(문자 가져오기)

코틀린에 문헌 및 강의를 통해 코틀린에 대해 독학하며
학습한 내용을 정리한 글 입니다.
인프런 - [자바 개발자를 위한 코틀린 입문] 이라는 강의를 수강하며
배운 것을 그날그날 요약/정리 했습니다.
🚩 학습 컨텐츠
- 강의명 : 인프런 - [자바 개발자를 위한 코틀린 입문]
✅ 코틀린에서 Type 다루는 법 (요약)
- 코틀린에서는 선언된 기본값을 보고 타입 추론
- 기본타입들 간의 변환은 명시적으로 이루어진다.
- is, !is, as, as? 를 이용해 타입을 확인/캐스팅함.
- Any : Java의 Object 와 같은 최상위타입이다.
- Unit: Jave의 void 와 동일
- Nothing : 정상적으로 끝나지 않는 함수 반환 의미
- 문자열 가공법 : ${변수}, """ """ 사용
- 문자열에서 특정문자를 가져올때 [ ]를 사용
✅ 기본 타입 및 변경
기본 타입은 자바랑 코틀린이랑 똑같음.
가장 많이 쓰이는 Int, Long, Float, Double 에 대해 알아보자
- Byte
- Short
- Int
- Long
- Float
- Double
- 부호 없는 정수들
코틀린에서는 선언된 기본값을 보고 타입 추론
자바 : 기본타입간 변환은 암시적으로도 가능
코틀린 : 기본타입간 변환은 명시적으로 이루어져야함
val number1 = 3 // Int : L이 붙지 않았기때문에, Int 로 자동 추론
val number2 = 3L // Long : L이 붙었기떄문에 Long으로 자동 추론
val number3 = 3.0f // Float
val number4 = 3.0 // Double
⭐자바 : 암시적 변경 예시
int number1 = 4;
long number2 = number1;
// int 타입의 값이 long타입으로 암시적 변경
// : Java에서 더 큰 타입으로 암시적 변경!
System.out.println(number1 + number2);
⭐코틀린 : 명시적 변경 예시
// to변환타입()을 사용해 명시적으로 바꿔줘야함.
val number1: Int = 4
val number2: Long = number1.toLong()
println(number1 + number2)
⭐코틀린 : nullabe 일 경우(=변수에 null 이 들어갈 수 있다면), 적절한 처리 필요
fun main() {
val number1: Int? = 3
val number2: Long = number1.toLong() ?: 0L
}
✅ 일반 타입 및 타입확인 / 타입캐스팅
* instanceof : 들어온 변수가 해당 타입인지 아닌지 확인하는 함수
타입 확인 : instanceof(자바) → is(코틀린) : 변수가 주어진 타입이면 true, 아니면 false
타입캐스팅 : (타입캐스팅) obj(자바) → as Person(코틀린) : obj를 (타입)으로 간주. (as는 생략가능)


⭐ 타입 확인법 비교 (자바 vs 코틀린)
// 1-1. 자바 코드
public static void printAgeIfPerson(Object obj) {
if (obj instanceof Person) { // instanceof : 변수가 주어진 타입이면 true, 아니면 false
Person person = (Person) obj; // (Person) : 주어진 변수로 해당타입을 변경한다.
System.out.println(person.getAge());
}
}
// 1-2-1. 코틀린으로 변경 (is)
fun printAgeIfPerson(obj: Any) { // Object 대신 Any 사용
if (obj is Person){ // (instanceof를 대신할 함수로 is 사용) 해석 : obj가 Person 이라면
val person = obj as Person // (타입)으로 타입캐스팅 X → as 사용. 해석: obj를 Person 으로 간주
println(person.age)
}
}
// 1-2-2. 코틀린으로 변경 (as 생략 버전)
// 스마트 캐스트 : as를 생략해도, 애당초 바로 obj.age 로 인식
fun printAgeIfPerson(obj: Any) {
if (obj is Person){ // (instanceof를 대신할 함수로 is 사용) 해석 : obj가 Person 이라면
println(person.age)
}
}
// 2-1. 자바 코드
public static void printAgeIfPerson(Object obj) {
if (!(obj instanceof Person)) {
Person person = (Person) obj;
System.out.println(person.getAge());
}
}
// 1-2-1. 코틀린으로 변경 (not is)
fun printAgeIfPerson(obj: Any) {
if (obj !is Person){
println(person.age)
}
}
⭐ obj에 null이 들어오는 경우
fun main() {
printAgeIfPerson(Person("", 100))
}
fun printAgeIfPerson(obj: Any?) {
val person = obj as? Person // as? : obj 가 null 인 경우, null
// : null X 인 경우, Person 타입으로 변경
// as?를 통해, person → nullable person 으로 변경.
println(person?.age) // 따라서 person? 으로 작성해야함.
}
✅ 코틀린의 3가지 타입 : Any, Unit, Nothing
1. Any
- Jave의 Object 와 동일한 역할 (모든 객체의 최상위타입)
- 모든 원시타입의 최상타입도 Any
- Any? : null을 포함하고 싶은경우
- Any 에 equals / hashCod / toString 존재.
2. Unit
Java의 void 와 동일한 역할 : 반환할 것이 없을 경우 사용
3. Nothing
Nothing은 함수가 정상적으로 끝나지 않았다는 사실을 표현하는 역할
✅ String Interpolation(문자열 덧붙이기)
// ⭐ 자바에서 문자열 덧붙이기 방법 1 : String.format()
Person person = new Person("최태현", 100);
String log = String.format("사람의 이름은 %s이고 나이는 %s세 입니다.", person.getName(), person.getAge());
// ⭐ 자바에서 문자열 덧붙이기 방법 2 : StringBuilder와 builder.append
StringBuilder builder = new StringBuilder();
builder.append("사람의 이름은");
builder.append(person.getName());
builder.appent("이고 나이는");
builder.append(person.getAge());
builder.appent("세 입니다");
//⭐ 코틀린에서 문자열 덧붙이기 방법 1: ${변수} (String.format 대체)
val person = Person("최태현", 100)
val log = "사람의 이름은 ${person.name}"이고 나이는 ${person.age}세 입니다"
// ⭐ 코틀린에서 다중 문자열 작성법 2: """ """".trimIndent()
// 출력 결과물 : ABC
// EFG
// 최태현
fun main() {
val name = "최태현"
val str = """
ABC
EFG
${name}
""".trimIndent()
println(str)
}
✅ String indexing(문자 가져오기)
// ⭐ 1. 자바에서 특정 문자 가져오기
String str = "ABCDE";
char ch = str.charAt(1);
// ⭐ 2. 코틀린에서 특정 문자 가져오기
val str = "ABCDE"
val ch = str[1] // B
참고 문헌:
인프런 - [자바 개발자를 위한 코틀린 입문]