본문 바로가기

프로젝트형 IoT 서비스 개발 4회차/3. 게이트웨이 디바이스 제어

[Day62] 2022-04-26(화) Kotlin 기본1 - 변수, 함수 - 김서연 강사님

728x90

[1] Kotlin 기본

  1. 참고 사이트

https://kotlinlang.org/

 

Kotlin Programming Language

 

kotlinlang.org

https://developer.android.com/kotlin

 

Kotlin과 Android  |  Android 개발자  |  Android Developers

Kotlin으로 Android 앱을 작성할 수 있습니다. Kotlin은 표현력이 뛰어나고 간결하며 강력합니다. 가장 좋은 점은 자바 프로그래밍 언어 및 기존 Android 런타임과 상호 운용이 가능하다는 점입니다.

developer.android.com

  2. print 테스트

test.kt

// test.kt
package com.example.kotlinwork.basic

fun main() {
    print("kotlin test..")
    print("hello world")
    print("hello world")
    print("hello world")
    println("hello world")
    println("hello world===>"+1000)

    // 출력형태
    println("나는 \n안드로이드를 \n이용해서 원하는 \nApp을 만들 수 있다.")
    println("""나는
        |안드로이드를
        |이용해서
        |라즈베리파이를
        |제어할 수 있다.
    """.trimMargin())
}

  3. 변수

variable_test.kt

// variable_test.kt
package com.example.kotlinwork.basic

fun main(args: Array<String>) {
    // 변수 선언하는 방법
    // val(value), var(variable)
    // val 키워드로 선언한 변수는 값을 변경할 수 없다.(읽기전용)
    // var 키어드로 선언한 변수는 값을 변경할 수 있다.(읽기/쓰기)
    // 코틀린은 데이터타입을 생략하고 선언할 수 있다.
    var num = 100
    var data = "my kotlin"
    var point = 10.5
    val mydata = 300

    println(num)
    num = 200
    // mydata = 500 --> val 키워드로 정의된 변수이므로 수정 불가
    println(num)
    println(data)
    println(point)
    println(mydata)

    /*
        변수를 선언하는 방법
        1. val(var) 변수명 = 값
        2. val(var) 변수명 : 데이터타입(Int, String, Double..) = 값
    */
    var num2 : Int = 200
    var data2 : String = "my kotlin"
    var point2 : Double = 10.5
    val mydata2 : Int = 300
    println(num2)
    println(data2)
    println(point2)
    println(mydata2)
	var data3:Char = '1'
    var data4:Char = 'A'
    println("result=>$data3, result2=>$data4")
    // 변수의 활용
    var num3 : Int = 1000
    var num4 = 2000
    val result : Int = num3 + num4
    println("${num3}+${num4}=$result")
    println("${num3}+${num4}=${num3+num4}")
    var data3 = "123"
    println("$data3")               // == println(data3) 이렇게만 쓰는 것과 같음
    println("${data3.toInt()}")     // 숫자모양을 하고 있는 문자열을 정수로 변환
    println("${data3.toDouble()}")  // 숫자모양을 하고 있는 문자열을 실수로 변환

    // 변수에 null을 저장하기기
    var num5 = 100
    var num6 = null
    println("값:$num5")
    println("값:$num6")

    var num7 : Int = 100
    // null을 허용하지 않는 변수를 정의 - null을 허용하지 않는 변수에 null을 넣는 것은 불가능하다.
    // var num8 : Int = nul

    // ? 연산자를 쓰면 null을 허용하겠다는 의미
    var num8 : Int ? = 10
    println("값:$num7")
    println("값:$num8")

    // null을 허용하지 않는 변수에 null을 허용하는 변수의 값을 저장할 수 없다.
    // => !! 를 붙여주면, num8이 null을 허용하는 변수지만, 현재는 null이 아니다 라고 설정
    var num9 : Int = num8!!     // null허용하지 않는 타입으로 맞춰주는 작업 (컴파일 오류를 처리하도록)
    print(num9)
    
}

  4. 함수

functionTest.kt

// functionTest.kt
package com.example.kotlinwork.basic

fun main(args: Array<String>) {
    //1. 매개변수 X, 리턴값 X 함수 호출
    test()
    // 2. 매개변수 O, 리턴값 X 함수 호출
    test(100, 200)
    test(100.2, 200)
    test()

    // 기본값이 있는 함수 호출
    test(num2=500, num1=100)
    // 기본값이 없는 함수는 일부 값만 전달할 수 없다.
    // test(num1=1000)  // 2번째 함수가 호출됐지만 Double형이 아니라서 에러

    test(num1=1000.3)
    test(num2=230000000)

    // 3. 매개변수 O, 리턴값 O 함수 호출
    val result = mytest(100, 200)
    println("result:$result")
    println("값:${mytest(100, 200)}")    // 함수의 매개변수로 함수 호출
}

// 1. 매개변수 X, 리턴값 X 함수 정의 -> Unit은 반환될 값이 없다는 의미로 해석: void와 동일
fun test():Unit{
    println("test함수")
}

// 2. 매개변수 O, 리턴값 X 함수 정의
// 함수명이 같아도 매개변수의 갯수나 매개변수의 타입이 다르면 같은 이름으로 여러 개 함수를 정의할 수 있다. - 오버로딩
fun test(num1: Int, num2: Int){
    println("************************")
    println("num1=$num1")
    println("num2=$num2")
    println("========================")
}
// 함수의 매개변수에 기본값을 정의할 수 있다.
fun test(num1: Double=10.1, num2: Int=100000){
    println("========================")
    println("num1=$num1")
    println("num2=$num2")
    println("************************")
}

// 3. 매개변수 O, 리턴값 O 함수 정의
fun mytest(num1: Int, num2:Int):Int{
    val result = num1 + num2
    return result
}

 

- 끝 -

728x90