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 파일로 가져옵니다.
함수 정의
함수 정의는 키워드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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
머티리얼 디자인 도입 직후에 할 일안드로이드 프로젝트에 머티리얼 디자인을 도입한 후에 할 일을 적는다. Android 프로젝트를 만든 후 Hello world에 대해 수행합니다. 머티리얼 디자인을 도입하기 위해, build.gradle 를 이하와 같...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.