kotlin 학습노트(1)

Kotlin 기본 구문


Kotlin 파일kt는 접미사입니다.

패키지 선언


코드 파일의 시작은 일반적으로 패키지에 대한 선언입니다.
package com.runoob.main

import java.util.*

fun test() {}
class Runoob {}

kotlin 원본 파일은 일치하는 디렉터리와 패키지를 필요로 하지 않습니다. 원본 파일은 모든 파일 디렉터리에 놓을 수 있습니다.
상기 예에서test()의 전체 이름은com입니다.runoob.main.test, 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  

반환 값이 없는 함수(Java의 void와 유사):
fun printSum(a: Int, b: Int): Unit { 
	print(a + b)
}


//   Unit , ( public ):
public fun printSum(a: Int, b: Int) { 
	print(a + b)
}

가변 길이 매개 변수 함수


함수의 길이 매개변수는 vararg 키워드로 식별할 수 있습니다.
fun vars(vararg v:Int){
    for(vt in v){
        print(vt)
    }
}

//  
fun main(args: Array) {
    vars(1,2,3,4,5)  //  12345
}

lambda (익명 함수)


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

상수 및 변수 정의


가변 변수 정의: var 키워드
var  :  = 

변수 정의 불변: val 키워드, 한 번만 값을 부여할 수 있는 변수 (Java에서final 수식과 같은 변수)
val  :  = 

상수와 변수는 초기화 값이 없을 수 있지만, 인용하기 전에 초기화해야 합니다
컴파일러는 자동 형식 판단을 지원합니다. 즉, 성명할 때 형식을 지정하지 않고 컴파일러가 판단할 수 있습니다.
val a: Int = 1
val b = 1       //  Int
val c: Int      //  
c = 1           //  


var x = 5        //  Int
x += 1           //  

메모


Kotlin은 다음과 같은 예를 들어 한 줄 및 여러 줄 주석을 지원합니다.
//  

/*  
    。 */

Kotlin의 블록 메모는 Java와 달리 중첩될 수 있습니다.

문자열 템플릿


$는 변수 이름이나 변수 값을 나타냅니다.
$varName 은 변수 값을 나타냅니다.
${varName.fun()} 변수를 나타내는 메소드 반환 값:
var a = 1
//  :
val s1 = "a is $a" 

a = 2
//  :
val s2 = "${s1.replace("is", "was")}, but now is $a"

NULL 검사 메커니즘


Kotlin의 빈 안전 설계는 성명이 비어 있는 매개 변수에 대해 사용할 때 빈 판단 처리를 하는 두 가지 처리 방식이 있습니다. 필드 뒤에 추가합니다!!Java처럼 빈 예외를 던지고 다른 필드를 추가하려면?처리 반환 값이null 또는 배합되지 않습니까?:공평하게 판단하여 처리하다.
// ? 
var age: String? = "23" 
// 
val ages = age!!.toInt()
//  null
val ages1 = age?.toInt()
//age -1
val ages2 = age?.toInt() ?: -1

인용이null값일 수 있을 때, 대응하는 형식 성명은null로 명확하게 표시해야 합니다.
str의 문자열 내용이 정수가 아닐 때null:
fun parseInt(str: String): Int? {
  // ...
}

다음 예제에서는 null 함수에 반환 값을 사용하는 방법을 보여 줍니다.
fun main(args: Array) {
  if (args.size < 2) {
    print("Two integers expected")
    return
  }
  val x = parseInt(args[0])
  val y = parseInt(args[1])
  //   `x * y`  ,   null.
  if (x != null && y != null) {
    //   null  , x   y   null  
    print(x * y)
  }
}

유형 검사 및 자동 유형 변환


우리는 is 연산자를 사용하여 표현식이 어떤 종류의 실례인지 검사할 수 있다. (Java의 instanceof 키워드와 유사하다.)
fun getStringLength(obj: Any): Int? {
  if (obj is String) {
    //  ,obj String 
    return obj.length 
  }

  // , Java instanceof , !is
  // if (obj !is String){
  //   // XXX
  // }

  //  obj Any 
  return null
}

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

심지어
fun getStringLength(obj: Any): Int? {
  //   `&&`  , `obj`   `String`
  if (obj is String && obj.length > 0)
    return obj.length
  return null
}

구간


구간 표현식은 조작부호로...의 rangeTo 함수에 인화!형성
구간은 비교 가능한 모든 유형에 대해 정의되지만 정형 원생 유형에 대해서는 최적화된 실현이 있다.다음은 사용 구간의 몇 가지 예입니다.
for (i in 1..4) print(i) //  “1234”

for (i in 4..1) print(i) //  

if (i in 1..10) { //   1 <= i && i <= 10
    println(i)
}

//   step  
for (i in 1..4 step 2) print(i) //  “13”

for (i in 4 downTo 1 step 2) print(i) //  “42”


//   until  
for (i in 1 until 10) {   // i in [1, 10)   10
     println(i)
}

실례 테스트

fun main(args: Array) {
    print(" :")
    for (i in 1..4) print(i) //  “1234”
    println("
----------------") print(" :") for (i in 1..4 step 2) print(i) // “13” println("
----------------") print(" downTo:") for (i in 4 downTo 1 step 2) print(i) // “42” println("
----------------") print(" until:") // until for (i in 1 until 4) { // i in [1, 4) 4 print(i) } println("
----------------") }

출력 결과:
 :1234
----------------
 :13
----------------
  downTo:42
----------------
  until:123
----------------
 :http://www.runoob.com/kotlin/kotlin-basic-syntax.html

좋은 웹페이지 즐겨찾기