본문 바로가기
언어/Kotlin&Java

[코틀린/Kotlin] 기초 #01_변수와 자료형

by 옹구스투스 2021. 7. 27.
반응형


0.참고 자료

https://kotlinlang.org/docs/basic-types.html

 

Basic types | Kotlin

 

kotlinlang.org

https://www.boostcourse.org/mo132/joinLectures/28611

 

코틀린 프로그래밍 기본 1

부스트코스 무료 강의

www.boostcourse.org

1.변수 선언

코틀린에서는 값을 변경할 수 있는 가변 변수와, 값을 변경할 수 없는 불변 변수 두 가지 형태의 변수를 선언할 수 있다.

val : 불변 변수의 키워드  // java : final , c/c++ const

var : 가변 변수의 키워드

ex) val a : Int

ex) var b : Int

 

또한 null이 가능한 자료형과 null이 불가능한 자료형으로 구분된다.

? : 해당 변수를 nullable로 만들어주는 키워드

ex) val a : Int? =null

 

val b =2와 같이 자료형을 명시하지 않아도 자료형을 추론하여 b는 Int형 변수가 된다.

val b와 같이 자료형을 지정하지 않은 변수는 반드시 선언하면서 변수를 초기화해줘야 한다.

 

※주의사항

  • 변수 이름은 숫자로 시작하면 안 된다. //val 111abc =3 
  • 변수 이름에 코틀린에서 사용되는 키워드는 사용할 수 없다. //val while =3
  • 변수 이름은 의미 있는 단어를 사용하여 만드는 것이 좋다.
  • 카멜 표기법을 사용한다.
    //java
    //int a = 10;
    
    //kotlin
    //val : read-only, 변할 수 없는 상수 
    //var : 일반적인 변수, 재할당 가능한 변수
    val a : Int = 1
    val b = 2
    val c : Int
    c = 3
    var d : Int = 5
    var e : Int?
    
    e = null //success
    d=null //error
    
    println(e==null) //null-check
    //result : true
    
    var num : Int //success
    var num1 //error
    
    d=10 //success
    b=5 //error

2.자료형

  • 프로그래밍 언어의 자료형은 기본형 자료형과 참조형 자료형으로 구분하는데,
    코틀린에서는 기초 타입이 없고 모든 타입이 객체 형태이다.
    //기초 형태(기본형 : Primitive Data Type)는 가공되지 않은 순수한 자료형으로 프로그래밍 언어에 내장되어 있음
    //객채 형태(참조형 : Reference Type)는 객체를 생성하고 동적 공간에 데이터를 둔 다음 이것을 참조하는 자료형
    //자바에서는 int, long, float, double 등의 기본형과 String, Date 같은 참조형을 모두 사용
  • 타입 클래스에 정의된 기초 함수와 프로퍼티를 사용할 수 있다.
  • Any는 코틀린의 최상위 클래스이기 때문에 어떤 타입의 데이터도 대입할 수 있다.

 

1. 정수 자료형

형식 자료형 크기 값의 범위
정수 자료형 Byte 1Byte -2^7 ~ 2^7-1
Short 2Byte -2^15 ~ 2^15-1
Int 4Byte -2^31 ~ 2^31-1
Long 8Byte -2^63 ~ 2^63-1
형식 자료형 크기 값의 범위
부호 없는 정수 자료형 UByte 1Byte 0 ~ 2^8-1
UShort 2Byte 0 ~ 2^16-1
UInt 4Byte 0 ~ 2^32-1
ULong 8Byte 0 ~ 2^64-1

숫자 크기에 상관없이 기본형은 모두 Int형으로 추론된다.

자바와는 달리 코틀린에서는 숫자 타입 간의 변환을 자동으로 해주지 않는다.

    val b : Byte = 123 //Byte
    val s : Short =500 //Short
    val i = 10 //Int
    val ii : Int //Int
    val l = 10L //Long
    val ll : Long //Long
    
    val ub : UByte = 123u //UByte
    val us : UShort =500u //UShort
    val ui = 55555u //UInt
    val ul : ULong = 3431412u //Ulong
    
    //길이가 긴 숫자의 가독성을 높이는 방법
    val num1 = 1_234_567 //Int
    //result : 1234567
    val num2 = 1_2345_6789L //Long
    //result : 123456789
    
    val num3 = 100 //Int
    val num5 : Long = num3 + 200L //Long
    //result : 300
    val num6 : Long = num3.toLong() //Long
    //result : 100

 

2. 실수 자료형

형식 자료형 크기 값의 범위
실수형 Float 4Byte 1.4E-45 ~ 3.4E+38
Double 8Byte 4.9E-324 ~ 1.7E+308

기본형은 Double이다.

    val f = 10.2F //Float
    val ff : Float = 10.2F
    val d = 10.5 //Double
    val dd :Double = 10.5 //Double
    
    val eNum1 = 3.14E2 // Double
    //result : 314.0
    val eNum2 = 3.14e-2 //Double
    //result : 0.0314

 

3. 논리 자료형

형식 자료형 크기 값의 범위
논리형 Boolean 1bit true,false
 val bool1 = true //Boolean
 val bool2 : Boolean = false // Boolean

 

4. 문자 자료형

형식 자료형 크기 값의 범위
문자 Char 2byte 0~2^15-1

코틀린에서는 Char 자료형을 정수로 표현하는 데 사용할 수 없다.

ex) '1'.toInt() ->49 //기대값 : 1 but 실제값 : 49(ASCII값 반환)

--> Character.getNumericValue('1') -> 1 // 기대값 : 1, 실제값 : 1

    val ch1 = 'c' //Char
    val ch2 : Char ='d' //Char

    val ch3 ='1'
    println(ch3.toInt())
    //result 49
    println(Character.getNumericValue(ch3))
    //result 1

 

 

5. 리터럴 상수

십진법 : 123

//Long은 123L

16진수 : 0x0F

2진수 : 0b00001011

//16진수는 앞에 0x를 붙이고 2진수는 앞에 0b를 붙인다.

Double : 123.5

Float : 123.5F
언더바(_)를 이용해 가독성을 높일 수 있다.

val million = 1_000_000

val hexNum = 0xAB_CD_EF_12 
//result : ABCDEF12

val binNum = 0b0001_0110
//result : 00010110
반응형

댓글