[코틀린 문법] 타입추론과 함수
Type Inference(타입 추론)
// 코틀린은 똑똑하기 때문에 알아서 자료형(변수 타입)을 때려맞춤
// -> 정수는 Int, 실수는 Double이 기본값
// -> 자료형을 코드에 명시하지 않아도 됨
// (Byte, Short 등을 사용하려면 자료형을 명시하면 됨)
var apple = 1234
// var apple: Int = 1234
// 기본적으로 정수는 Int형으로 추론
var banana = 1234L
// var apple: Long = 1234L
// 정수에 L 붙어있으면 Long형으로 추론
var cherry = 12.45
// var apple: Double = 12.45
// 기본적으로 실수는 Double형으로 추론
var dragonFruit = 12.45f
// var apple: Float = 12.45f
// 실수에 f 붙어있으면 Float형으로 추론
var fig = 0xABCD
var grape = 0b0101010
// 16진수, 2진수는 Int형으로 추론
var kiwi = true
var lemon = 'l'
// Boolean형, Char형도 알아서 추론
// 비슷하게 생겼지만 문자와 숫자는 다르다
// 문자 -> 일이삼사 + 일
var test1 = "1234"
println(test1::class.java.simpleName)
println(test1 + 1)
// 12341
// 숫자 -> 천이백삼십사 + 일
var test2 = 1234
println(test2::class.java.simpleName)
println(test2 + 1)
// 1235
// 잘못된 타입 지정 -> 에러 발생
// 틀리게 쓰느니 안 쓰는 게 낫다
var test5 = "5678"
// val test5 : Int = "5678"
// println(test5)
// Kotlin: Type mismatch: inferred type is String but Int was expected
var test6 = 5678
// val test6 : String = 5678
// println(test6)
// Kotlin: Type mismatch: inferred type is String but Int was expected
Function(함수)
// Functions(함수) //
// 특정한 동작이나 결과값 연산에 사용
// 함수 생성시 함수명 앞에 fun을 붙임
fun main() {
// 문자열 출력하는 함수
printJack()
// Jack
// 매개변수 있는 함수
printCard("ive", 11)
// ive = 11
// 단일 표현식 함수
println(plus(4, 5, 6))
}
// Single-Expression function(단일 표현식 함수)
fun plus(a: Int, b: Int, c: Int) = a + b + c
// () 안에 뭐 있음 -> 매개변수 있는 함수
// fun 함수명(매개변수명 : 자료형) { 코드 본문 }
fun printCard(cardName: String, cardValue: Int) {
println("$cardName = $cardValue")
}
// () 비어있음 -> 매개변수 없는 함수
// fun 함수명() { 코드 본문 }
fun printJack() {
println("Jack")
}
fun main() {
testFun()
abc()
abc2()
// 출력 방법 (1)
// println(sum(30, 50))
// 출력 방법 (2)
val sumValue = sum(30, 60)
println(sumValue)
cuckoo(50)
// 출력 안 하는 함수
getCardString("invu", 9)
// Bts 클래스의 인스턴스를 생성한 뒤
val bts = Bts()
// .함수명() 붙여서 멤버 함수 호출
bts.suga()
// AgustD
}
fun cuckoo(time : Int) {
println("$time 분 후에 취사가 완료됩니다.")
}
fun sum(num1 : Int, num2 : Int) : Int {
// println(num1 + num2)
val result = num1 + num2
return result
}
fun abc2() {
val a = 20
val b = 40
val c = a + b
println(c)
}
fun abc() {
val a = 10
val b = 20
val c = a + b
println(c)
}
fun testFun() {
println("a")
println("b")
println("c")
println("d")
}
/ 문자열 객체로 반환
//fun getCardString(cardName: String, cardValue: Int): String {
// return("$cardName = $cardValue")
//}
// 짧은 ver.
//fun getCardString(cardName: String, cardValue: Int): String = "$cardName = $cardValue"
// 더 짧은 ver.
fun getCardString(cardName: String, cardValue: Int) = "$cardName = $cardValue"
// 위 셋은 모두 같음
//fun xORy(x: Int, y: Int): Int {
// return if (x > y) x else y
//}
// 중괄호 내 본문(식)이 한 줄 -> {} 생략
// 반환형 Int 타입으로 추론 -> : Int 생략
// 본문 막줄은 반환형으로 추론 -> return 생략
fun xORy(x: Int, y: Int) = if (x > y) x else y
// 이렇게 짧아짐
// 클래스 내 함수(멤버 함수)
class Bts {
fun suga(): Unit = println("AgustD")
}
Arithmetic Operator(산술 연산자)
// Arithmetic Operator(산술 연산자) //
fun main() {
sumTwo(2, 5)
sumThree(2, 4, 6)
minus(30, 20)
division(10, 3)
remainder(10, 3)
}
fun sumTwo(num1 : Int, num2 : Int) {
println(num1 + num2)
}
// 7
fun sumThree(num1 : Int, num2 : Int, num3 : Int) {
println(num1 + num2 + num3)
}
// 12
fun minus(num1 : Int, num2 : Int) {
println(num1 - num2)
}
// 10
fun division(num1 : Int, num2 : Int) {
println(num1 / num2) // 몫
}
// 3
fun remainder(num1 : Int, num2 : Int) {
println(num1 % num2) // 나머지
}
// 1
참고
반응형
'개발(Android) > kotlin syntax' 카테고리의 다른 글
[Kotlin syntax] Break, Continue, Logical Operators (0) | 2022.04.04 |
---|---|
[Kotlin syntax] While, Do While, For, Increment Operators, Decrement Operators (0) | 2022.04.03 |
[Kotlin syntax] Conditional expressions(If, When), Comparison Operators (0) | 2022.04.01 |
[Kotlin syntax] Type Casting, Arrays (0) | 2022.03.31 |
[Kotlin syntax] Variables, Data Types (0) | 2022.03.31 |