kotlin

kotlin data type

slow333 2023. 2. 6. 17:23

type 추론이 강력해서 일반적으로 type 지정을 잘안함

(좀 혼란 스러울수 있음)

기본 적으로 java와 동일

var : 변경 가능 변수로 사용 권장하지 않음(중복 지정 가능)

val, const 권장 : 가능하면 const로 지정...

data type

  • 정수형 : byte(8bit), short(2byte),  int(4byte), long(8byte)
  • 실수 형 : float(4byte), double(8byte)
  • boolean : Boolean
  • charater : Char  =>    ' '
  • string : charater array   =>  "   "

지정 방식(  :  이후에 타입을 지정)

val myByte : Byte = 123;

val myInt : Int = 123_123; // integer가 기본형

val myFloat: Float = 13.22F;   // float는 타입지정 필요(double 이 기본형)

var isCloudy : Boolean = true;

isCloudy = false;

character는 기본 적으로 '   ' 로 지정하여 특별히 타입을 지정안해도 됨

사칙연산은 java와 동일

기본형으로 개산됨, 형변환 필요 등

계산 결과에 대해 type을 추론하여 변수에 타입을 지정한해도됨(일반적으로로...)

단축 연산 기능도 java와 동

 

printf 기능이 기본적용됨(" "안에 $를 사용해서 변수를 지정 가능)

println("인쇄기능  $지정된변수, ',   '    ${함수있는.지정자}")

if문 사용 방식도 java와 동일

switch 대신 when을 사용

=> break 필요 없음(switch(??) { case ? : {  } })

var case = 4;
when(case) {
    1 -> println("조건만족")
    2 -> println("2번")
    3 -> {      }
    in 3..6 -> println("show")// 이런 형식도 가능
    4, 5, 6 -> println("개별 지정")// 이런 형식도 가능
    !in 12 downTo 3 -> println("12부터 3까지")// 이런 형식도 가능
    else -> println("위 조건을 모두 지나갈 경우")//someting else
}

var x : Any = "13.49" // Any는 권장하지 않음
when (x) {
    is Int -> println("$x 는 정수")
    is String -> println("$x is String")
    !is Double -> println("$x is Double")
    else -> println("$x is none of the above type")
}

 

while, for 문 

좀 다른 구문이 있음

for (num in 1..10) { // 끝 포함
    print("$num ,")
}
for (num in 1 until 10) { // 끝 포함 안함
    print("$num ,")
}
println("__________________")
for (num in 10 downTo 1) { // 끝 포함
    print("$num ,")
}
for (num in 10 downTo 1 step 2) { // 끝 포함 2개 씩 감소
    print("$num ,")
}

fun 기능

return type을 : 다음에 사용

fun addUP(a: Int, b:Int):Int {
    return a+b;
}
println(addUP(3, 5))

fun avg(a: Double, b:Double): Double {
    return (a + b)/2;
}
println(avg(4.0, 87.0))

Null Point 처리 : kotlin의 가장 큰(??) 장

null 검사를 자동으로 수행하여 null point exception 방지

type 지정시 " ? " 를 사용하여 Nullable type을 지정하고

사용 시에    " 변수?. " 로 지정하여 null 예방 가능

var nullableName: String? = "MYName 김"
nullableName = null

if (nullableName != null) {
    nullableName.length
} else {
    null
}
// 다음과 같이 줄일 수 있음
var len2 = nullableName?.length;null

// null 검사를 자동으로 수행하여 null point exception 방지
println("$len2 , ${nullableName?.lowercase()}") // ==> compilation error
nullableName?.let { println(it.length) } // ==> compilation error
nullableName?.run { println(length) } // ==> compilation error

null type 기본값 지정 ==> null 일때의 기본 값( ?:  ==> Elvis operator)

val name = nullableName ?: "my Guest"
println("name is $name")

// !!를 사용하면 검사 안하고 실행함
nullableName!!.lowercase() // ==> null point error 발생함

 

'kotlin' 카테고리의 다른 글

kotlin Data classes  (0) 2023.02.06
kotlin OOB basic  (0) 2023.02.06
Kotlin enum, lateinit, couroutine 등  (0) 2023.01.14
Kotlin null 처리  (0) 2023.01.14
Kotlin String  (0) 2023.01.14