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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
집 서버 설계 (하드웨어 편)
자신의 Redmine이나 ownCloud를 운용하기 위해 사쿠라 VPS, DigitalOcean, OpenShift 등을 놀랐습니다만, 침착 해 왔으므로 현상을 정리하고 싶습니다.
먼저 하드웨어 구성을 정리합니다.
...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
package com.runoob.main
import java.util.*
fun test() {}
class Runoob {}
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
fun printSum(a: Int, b: Int): Unit {
print(a + b)
}
// Unit , ( public ):
public fun printSum(a: Int, b: Int) {
print(a + b)
}
fun vars(vararg v:Int){
for(vt in v){
print(vt)
}
}
//
fun main(args: Array) {
vars(1,2,3,4,5) // 12345
}
//
fun main(args: Array) {
val sumLambda: (Int, Int) -> Int = {x,y -> x+y}
println(sumLambda(1,2)) // 3
}
var : =
val : =
val a: Int = 1
val b = 1 // Int
val c: Int //
c = 1 //
var x = 5 // Int
x += 1 //
//
/*
。 */
var a = 1
// :
val s1 = "a is $a"
a = 2
// :
val s2 = "${s1.replace("is", "was")}, but now is $a"
// ?
var age: String? = "23"
//
val ages = age!!.toInt()
// null
val ages1 = age?.toInt()
//age -1
val ages2 = age?.toInt() ?: -1
fun parseInt(str: String): Int? {
// ...
}
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)
}
}
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
}
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
집 서버 설계 (하드웨어 편)자신의 Redmine이나 ownCloud를 운용하기 위해 사쿠라 VPS, DigitalOcean, OpenShift 등을 놀랐습니다만, 침착 해 왔으므로 현상을 정리하고 싶습니다. 먼저 하드웨어 구성을 정리합니다. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.