Kotlin 학습 노트 (1) [기초 문법]

12978 단어 Kotlin

Hello World!

fun main(args: Array<String>) {
    println("Hello World")
}

Kotlin의 기본 구문


Kotlin 파일은.kt를 끝으로

패키지 선언


코드 파일의 시작은 일반적으로 가방의 시작이다
package com.runoob.main

import java.util.*

fun test() {}
class Runoob {}

kotlin 원본 파일은 일치하는 디렉터리와 패키지가 필요하지 않습니다. 원본 파일은 모든 파일 디렉터리에 놓을 수 있습니다.상기 예에서 테스트 ()의 전체 이름은com입니다.runoob.main.테스트, Runoob의 전체 이름은com입니다.runoob.main.Runoob. 패키지가 지정되지 않으면 기본값은default 패키지입니다.

기본 가져오기


여러 패키지는 기본적으로 각 Kotlin 파일로 가져옵니다.
  • kotlin.*
  • kotlin.annotation.*
  • kotlin.collections.*
  • kotlin.comparisons.*
  • kotlin.io.*
  • kotlin.ranges.*
  • kotlin.sequences.*
  • kotlin.text.*

  • 함수 정의


    함수 정의는 키워드fun을 사용하고, 매개변수 형식은: 매개변수:유형
    fun sum(a: Int, b: Int): Int { // Int   ,    Int
        return a + b
    }

    표현식은 함수체로서 반환값이 자동으로 판단된다.
    fun sum(a: Int, b: Int) = a +b
    
    public fun sum(a: Int, b: Int): Int = a +b //public          

    자바와 유사한void 반환값 형식 없음
    fun sum(a: Int, b: Int):Unit {//Unit      ,     
        println("$a + $b = ${a+b}")
    }
    
    //  public     ,    ,Unit    
    fun sum(a: Int, b: Int) {
        println("$a + $b = ${a+b}")
    }

    가변 길이 매개 변수 함수


    가변 길이 매개 변수는 vararg로 표시한다
    fun main(args: Array<String>) { 
       printSth("a","b","c","d")//  a,b,c,d
    }
    
    fun printSth(vararg vars: String): Unit {
        for (v in vars) {
            println(v)
        }
    }

    lambda (익명 함수)


    lambda 표현식 사용
    fun main(args: Array) { 
        val sumLambda:(Int,Int) -> Int = {x,y -> x+y}
        val result = sumLambda(1,1)
        println(result) // print 2
    }

    상수 및 변수 정의


    가변 변수 정의 var
        var <   > : <  > = <   >
        var a : Int = 1

    변수 정의 불변: val 키워드, 한 번만 값을 부여할 수 있는 변수 (자바에서final 수식과 같은 변수)
        val <   > : <  > = <   >
        val a : Int = 1

    상수와 변수는 초기화 값이 없을 수 있지만, 인용하기 전에 컴파일러가 자동 형식 판단을 지원해야 합니다. 즉, 성명할 때 형식을 지정하지 않고 컴파일러가 판단할 수 있습니다.
    fun main(args: Array) { 
        val a: Int = 1
        val b = 1 //        Int
        val c : Int //          ,        !
        c = 1 //    
    
        var x = 5; //     Int
        x ++; //     
    
        println("a = $a b = $b c = $c x = $x")
    }

    메모

    //         
    
    /*        
          。 */

    Java와 달리 Kotlin의 블록 주석은 중첩될 수 있습니다.

    문자열 템플릿

    fun main(args: Array) { 
        val name: String = "qfxl"
        println("my name is $name")
        changeName(name)
    }
    
    fun changeName(name: String):Unit {
        println("my name is $name but was changed to ${name.replace("q","a")}")
    }
    
    Log:
    my name is qfxl
    my name is qfxl but was changed to afxl

    NULL 검사 메커니즘


    Kotlin의 빈 보안 설계는 빈 매개 변수를 사용할 때 빈 판단 처리를 해야 한다. 두 가지 처리 방식이 있는데 필드 뒤에 !!를 추가하면 자바처럼 빈 이상을 던지고 다른 필드 뒤에 ?를 추가하면 처리 반환값이null 또는 협조?:로 빈 판단 처리를 하지 않아도 된다.
    fun main(args: Array<String>) { 
        //  name   
        var age : String ? = "100"
        //  age         
        var ageInt = age!!.toInt()
        //  age      null
        var ageNull = age?.toInt()
        //  age  ,   -1
        var ageIntIfNull = age?.toInt() ?: -1
    }

    인용이null값일 수 있을 때, 대응하는 형식 성명은null로 명확하게 표시해야 한다
    fun main(args: Array<String>) { 
        val result = parseInt("a")
        println(result)
    }
    
    fun parseInt(str: String): Int ? {//     null      null
        if (str in "0".."9") {
            return str.toInt()
        }
        return null
    }

    다음 예제에서는 반환 값이 null인 함수를 사용하는 방법을 보여 줍니다.
    fun main(args: Array<String>) { 
        if (args.size < 2) {
            println("      ")
            return
        }
    
        val a = parseInt(args[0])
        val b = parseInt(args[1])
        //      `a + b`      ,         null.
        if (a != null && b != null) {
            //      null      , a   b             null   
            println("$a + $b = ${a + b}")
        }
    }
    
    fun parseInt(str: String): Int ? {
        if (str in "0".."9") {
            return str.toInt()
        }
        return null
    }

    유형 감지 및 유형 자동 변환

    is 연산자를 사용하여 표현식이 어떤 유형의 실례인지 검사할 수 있습니다. (자바의 instanceof 키워드와 유사합니다.)
    fun main(args: Array<String>) { 
        val length = getStringLength("qfxl")
        println("length is $length")// print length is 4
    }
    
    fun getStringLength(obj: Any): Int ? {
        if (obj is String) {
            //        obj     String
            return obj.length 
        }
        //  obj    Any  
        return null
    }

    혹은
    fun getStringLength(obj: Any): Int ? {
        if (obj !is String) {      
            return null 
        }
        //       String  
       return obj.length 
    }

    설정 괜찮습니다.
    fun getStringLength(obj: Any): Int ? {
        //&&   obj     String  
        if (obj is String && obj.length > 0) {      
            return obj.length 
        }   
       return null
    }

    구간


    구간 표현식은 조작부호 형식..이 있는rangeTo 함수에 in과!형성구간은 비교 가능한 모든 유형에 대해 정의되지만 정형 원생 유형에 대해서는 최적화된 실현이 있다.다음은 구간 사용의 예입니다.
    fun main(args: Array<String>) { 
        for (i in 1..4) println(i) //  1,2,3,4
    
        for (i in 4..1) println(i) //      
    
        for (i in 4 downTo 1) println(i) //  4,3,2,1
    
        for (i in 4 downTo 1 step 2) println(i) //  4,2   
    
        for (i in 1 until 4) println(i) //  1,2,3
    }

    출처:http://www.runoob.com/kotlin/kotlin-basic-syntax.html

    좋은 웹페이지 즐겨찾기