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 |