본문 바로가기

Study

(47)
[Kotlin] Smart Cast + 항공대학교 김철기 교수님의 객체 지향 프로그래밍 과목 내용를 정리한 글입니다. 스마트 캐스트 (Smart Cast)란 코틀린의 특징 중 하나로 구체적으로 명시되지 않은 변수의 자료형을 값을 통해 자동으로 추론하여 해당 타입으로 자동 변환한다. fun main() { var smart: Number = 12.2 // Float형으로 스마트 캐스트 println("$smart") smart = 12 // Int형으로 스마트 캐스트 println("$smart") smart = 120L // Long형으로 스마트 캐스트 println("$smart") smart = 12.0f // Float형으로 스마트 캐스트 println("$smart") } Number 클래스는 숫자를 저장하기 위한 특수한 자료형으로..
[Kotlin] 자료형 변환 + 항공대학교 김철기 교수님의 객체 지향 프로그래밍 과목 내용를 정리한 글입니다. 코틀린에서 변수와 할당되는 자료형을 일치시키지 않으면 자료형 불일치 오류가 발생한다. fun main() { var a: Int = 1 val b: Double = a // 자료형 불일치 val c: Int = 1.1 // 자료형 불일치 } 변수와 할당 자료형을 일치시키거나 to 변환 메소드를 사용해야한다. fun main() { var a: Int = 1 val b: Double = a.toDouble() // Int에서 Double로 변환된 a값을 b에 저장 val c: Double = 1.1 } 자료형이 선언되지 않은 표현식(연산 수식)에서는 더 큰 자료형으로 자동으로 형 변환된다. fun main() { var re..
[Kotlin] NULL: Safe - call, Non - null, 엘비스 연산자 코틀린의 변수 선언은 기본적으로 null을 허용하지 않는다. (NotNull) fun main() { var a: Int = 30 a = null # 오류 발생! } 따라서 '?'를 이용하여 null이 가능한 선언을 할 수 있다. (Nullable) fun main() { var a: Int? = 30 a = null } 여기서 Int?는 Int와는 전혀 다른 종류의 자료형이다. null을 허용한 타입으로 str1 문자열을 선언하고, 문자열 길이를 반환하는 length함수를 그냥 호출하면 오류가 발생한다. fun main() { var str1: String? = "Hello Kotlin" println("str1: $str1 length: ${str1.length}") } String? 타입을 null..
[Kotlin] 기본형 VS 참조형 프로그래밍에서 자료형에는 2가지가 존재한다. 1. 기본형 (Primitive data type) - 순수 자료형으로 프로그래밍 언어에 내장되는 자료형 - 작동 원리: Stack에 기본형 변수 값이 그대로 저장 2. 참조형 (Reference type) - 동적 공간에 데이터를 두고 그것을 참조하는 자료형 - 작동원리: Stack에 참조형 변수의 주소 값이 저장. 주소값이 가리키는 Heap에 동적 할당 코틀린에서 사용되는 자료형들은 자바 가상 머신(JVM) 위에서 동작하기 때문에 기본형과 참조형 두 가지 의미를 모두 갖을 수 있다. 예를 들어 Int는 JVM에서 기본형 int 변수로 컴파일되어 값 자체를 저장할 수도 있고, Integer 클래스의 박싱된 객체 Int로 취급되어 참조 값을 갖을 수도 있다. ..
[Kotlin] == VS === 코틀린에서 이중 등호(==)는 값만을 비교하고, 삼중 등호(===)는 값과 참조 주소를 모두 비교한다. fun main() { val a: Int = 128 val b = a // Int형으로 자료형 추론 println(a == b) // true println(a === b) // true // 값과 참조가 모두 동일 val c: Int? = a val d: Int? = a val e: Int? = c println(c == d) // true println(c === d) // false println(c === e) // true // Int?는 기본형이 아니라 객체 (참조 값을 스택에 저장, 동적 공간에 존재) } 코틀린에서 기본형 변수는 값 자체를 직접 저장하지만, Nullable 변수 (?가 ..