{"id":79,"date":"2025-11-18T08:28:24","date_gmt":"2025-11-18T00:28:24","guid":{"rendered":"https:\/\/154.36.158.208\/?p=79"},"modified":"2025-11-18T08:28:25","modified_gmt":"2025-11-18T00:28:25","slug":"kotlin%e5%9f%ba%e7%a1%80%e8%af%ad%e6%b3%95","status":"publish","type":"post","link":"https:\/\/www.xieyuchen.xyz\/index.php\/2025\/11\/18\/kotlin%e5%9f%ba%e7%a1%80%e8%af%ad%e6%b3%95\/","title":{"rendered":"kotlin\u57fa\u7840\u8bed\u6cd5"},"content":{"rendered":"\n<ol class=\"wp-block-list\"><\/ol>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>\u4ec0\u4e48\u662f Kotlin<\/summary>\n<p class=\"wp-block-paragraph\">Kotlin \u662f\u7531 JetBrains \u5f00\u53d1\u7684\u73b0\u4ee3\u7f16\u7a0b\u8bed\u8a00\uff0c\u8fd0\u884c\u5728 Java \u865a\u62df\u673a\uff08JVM\uff09\u4e0a\u3002\u5b83\u88ab Google \u5b98\u65b9\u63a8\u8350\u4e3a Android \u5f00\u53d1\u7684\u9996\u9009\u8bed\u8a00\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4e3b\u8981\u7279\u70b9\uff1a<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u73b0\u4ee3\uff1a\u652f\u6301\u51fd\u6570\u5f0f\u7f16\u7a0b\u3001\u534f\u7a0b\u7b49<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b80\u6d01\uff1a\u4ee3\u7801\u91cf\u6bd4 Java \u5c11\u5f88\u591a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b89\u5168\uff1a\u7a7a\u5b89\u5168\u673a\u5236\u907f\u514d\u7a7a\u6307\u9488\u5f02\u5e38<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e92\u64cd\u4f5c\uff1a\u4e0e Java 100% \u4e92\u64cd\u4f5c<\/p>\n<\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>\u57fa\u7840\u8bed\u6cd5<\/summary>\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fun main() {\n    println(\"Hello, Kotlin!\")\n}\n\u53d8\u91cf\u58f0\u660e\n\nKotlin \u6709\u4e24\u79cd\u53d8\u91cf\uff1a\n\nval\uff1a\u4e0d\u53ef\u53d8\u53d8\u91cf\uff08\u7c7b\u4f3c Java \u7684 final\uff09\n\nvar\uff1a\u53ef\u53d8\u53d8\u91cf\n\nfun main() {\n    val name = \"Kotlin\"  \/\/ \u7c7b\u578b\u81ea\u52a8\u63a8\u65ad\u4e3a String\n    var age = 10         \/\/ \u53ef\u53d8\u53d8\u91cf\n    \n    \/\/ \u663e\u5f0f\u58f0\u660e\u7c7b\u578b\n    val price: Double = 99.99\n    var count: Int = 0\n    \n    \/\/ name = \"Java\"  \/\/ \u9519\u8bef\uff01val \u4e0d\u80fd\u91cd\u65b0\u8d4b\u503c\n    age = 11          \/\/ \u6b63\u786e\uff01var \u53ef\u4ee5\u91cd\u65b0\u8d4b\u503c\n}\n\n\u5b57\u7b26\u4e32\u6a21\u677f\n\nfun main() {\n    val name = \"\u5c0f\u660e\"\n    val age = 20\n    \n    println(\"\u6211\u7684\u540d\u5b57\u662f $name\")           \/\/ \u6211\u7684\u540d\u5b57\u662f \u5c0f\u660e\n    println(\"\u6211\u4eca\u5e74 ${age} \u5c81\")          \/\/ \u6211\u4eca\u5e74 20 \u5c81\n    println(\"\u660e\u5e74\u6211 ${age + 1} \u5c81\")      \/\/ \u660e\u5e74\u6211 21 \u5c81\n}<\/code><\/pre>\n<\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>\u6570\u636e\u7c7b\u578b<\/summary>\n<p class=\"wp-block-paragraph\">\u57fa\u672c\u6570\u636e\u7c7b\u578b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kotlin \u7684\u57fa\u672c\u7c7b\u578b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6570\u7ec4<\/strong>\uff1a<code>Array<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u6570\u5b57<\/strong>\uff1a<code>Byte<\/code>, <code>Short<\/code>, <code>Int<\/code>, <code>Long<\/code>, <code>Float<\/code>, <code>Double<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5b57\u7b26<\/strong>\uff1a<code>Char<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5e03\u5c14<\/strong>\uff1a<code>Boolean<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u5b57\u7b26\u4e32<\/strong>\uff1a<code>String<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fun main() {\n    \/\/ \u6574\u6570\u7c7b\u578b\n    val byte: Byte = 127\n    val short: Short = 32767\n    val int: Int = 2147483647\n    val long: Long = 9223372036854775807L\n    \n    \/\/ \u6d6e\u70b9\u7c7b\u578b\n    val float: Float = 3.14F\n    val double: Double = 3.141592653589793\n    \n    \/\/ \u5b57\u7b26\u548c\u5b57\u7b26\u4e32\n    val char: Char = 'A'\n    val string: String = \"Hello\"\n    \n    \/\/ \u5e03\u5c14\n    val isTrue: Boolean = true\n    val isFalse: Boolean = false\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7c7b\u578b\u8f6c\u6362<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fun main() {\n    val intValue = 100\n    val longValue = intValue.toLong()  \/\/ Int \u8f6c Long\n    val doubleValue = intValue.toDouble()  \/\/ Int \u8f6c Double\n    val stringValue = intValue.toString()  \/\/ Int \u8f6c String\n    \n    val stringNumber = \"123\"\n    val intFromString = stringNumber.toInt()  \/\/ String \u8f6c Int\n}<\/code><\/pre>\n<\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>\u63a7\u5236\u6d41<\/summary>\n<p class=\"wp-block-paragraph\">if \u8868\u8fbe\u5f0f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728 Kotlin \u4e2d\uff0c<code>if<\/code> \u662f\u8868\u8fbe\u5f0f\uff0c\u53ef\u4ee5\u8fd4\u56de\u503c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fun main() {\n    val a = 10\n    val b = 20\n    \n    \/\/ \u4f20\u7edf\u7528\u6cd5\n    if (a > b) {\n        println(\"a \u66f4\u5927\")\n    } else {\n        println(\"b \u66f4\u5927\")\n    }\n    \n    \/\/ \u4f5c\u4e3a\u8868\u8fbe\u5f0f\n    val max = if (a > b) a else b\n    println(\"\u6700\u5927\u503c\u662f $max\")\n    \n    \/\/ \u591a\u884c\u8868\u8fbe\u5f0f\n    val result = if (a > b) {\n        println(\"a \u66f4\u5927\")\n        a\n    } else {\n        println(\"b \u66f4\u5927\")\n        b\n    }\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">when \u8868\u8fbe\u5f0f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>when<\/code> \u662f Kotlin \u7684\u589e\u5f3a\u7248 switch\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fun main() {\n    val score = 85\n    \n    \/\/ \u57fa\u672c\u7528\u6cd5\n    when (score) {\n        100 -> println(\"\u6ee1\u5206\uff01\")\n        90, 91, 92, 93, 94, 95, 96, 97, 98, 99 -> println(\"\u4f18\u79c0\")\n        in 80..89 -> println(\"\u826f\u597d\")  \/\/ \u8303\u56f4\u5224\u65ad\n        in 60..79 -> println(\"\u53ca\u683c\")\n        else -> println(\"\u4e0d\u53ca\u683c\")\n    }\n    \n    \/\/ \u4f5c\u4e3a\u8868\u8fbe\u5f0f\n    val grade = when {\n        score >= 90 -> \"A\"\n        score >= 80 -> \"B\"\n        score >= 60 -> \"C\"\n        else -> \"D\"\n    }\n    println(\"\u7b49\u7ea7\uff1a$grade\")\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5faa\u73af<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fun main() {\n    \/\/ for \u5faa\u73af\n    for (i in 1..5) {  \/\/ 1 \u5230 5\uff08\u5305\u542b\uff09\n        println(i)\n    }\n    \n    for (i in 1 until 5) {  \/\/ 1 \u5230 4\uff08\u4e0d\u5305\u542b 5\uff09\n        println(i)\n    }\n    \n    for (i in 5 downTo 1) {  \/\/ 5 \u5230 1\uff08\u5012\u5e8f\uff09\n        println(i)\n    }\n    \n    for (i in 1..10 step 2) {  \/\/ 1, 3, 5, 7, 9\n        println(i)\n    }\n    \n    \/\/ \u904d\u5386\u6570\u7ec4\/\u5217\u8868\n    val fruits = listOf(\"\u82f9\u679c\", \"\u9999\u8549\", \"\u6a59\u5b50\")\n    for (fruit in fruits) {\n        println(fruit)\n    }\n    \n    \/\/ \u5e26\u7d22\u5f15\u904d\u5386\n    for ((index, fruit) in fruits.withIndex()) {\n        println(\"$index: $fruit\")\n    }\n    \n    \/\/ while \u5faa\u73af\n    var i = 0\n    while (i &lt; 5) {\n        println(i)\n        i++\n    }\n    \n    \/\/ do-while \u5faa\u73af\n    var j = 0\n    do {\n        println(j)\n        j++\n    } while (j &lt; 5)\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>\u51fd\u6570<\/summary>\n<p class=\"wp-block-paragraph\">\u51fd\u6570\u5b9a\u4e49<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u57fa\u672c\u51fd\u6570\nfun greet(name: String) {\n    println(\"\u4f60\u597d\uff0c$name\uff01\")\n}\n\n\/\/ \u5e26\u8fd4\u56de\u503c\u7684\u51fd\u6570\nfun add(a: Int, b: Int): Int {\n    return a + b\n}\n\n\/\/ \u5355\u8868\u8fbe\u5f0f\u51fd\u6570\uff08\u53ef\u4ee5\u7701\u7565\u5927\u62ec\u53f7\u548c return\uff09\nfun multiply(a: Int, b: Int): Int = a * b\n\n\/\/ \u7c7b\u578b\u63a8\u65ad\uff08\u53ef\u4ee5\u7701\u7565\u8fd4\u56de\u7c7b\u578b\uff09\nfun subtract(a: Int, b: Int) = a - b\n\n\/\/ \u9ed8\u8ba4\u53c2\u6570\nfun greetWithDefault(name: String = \"\u670b\u53cb\") {\n    println(\"\u4f60\u597d\uff0c$name\uff01\")\n}\n\n\/\/ \u547d\u540d\u53c2\u6570\nfun createUser(name: String, age: Int, email: String = \"\") {\n    println(\"\u7528\u6237\uff1a$name, \u5e74\u9f84\uff1a$age, \u90ae\u7bb1\uff1a$email\")\n}\n\nfun main() {\n    greet(\"\u5c0f\u660e\")\n    println(add(3, 5))\n    \n    greetWithDefault()  \/\/ \u4f7f\u7528\u9ed8\u8ba4\u53c2\u6570\n    greetWithDefault(\"\u5c0f\u7ea2\")\n    \n    createUser(\"\u5f20\u4e09\", 25, \"zhang@example.com\")\n    createUser(name = \"\u674e\u56db\", age = 30)  \/\/ \u547d\u540d\u53c2\u6570\uff0c\u8df3\u8fc7 email\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ef\u53d8\u51fd\u6570<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fun sum(vararg numbers: Int): Int {\n    var total = 0\n    for (num in numbers) {\n        total += num\n    }\n    return total\n}\n\nfun main() {\n    println(sum(1, 2, 3))           \/\/ 6\n    println(sum(1, 2, 3, 4, 5))     \/\/ 15\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u9ad8\u9636\u51fd\u6570<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u51fd\u6570\u53ef\u4ee5\u4f5c\u4e3a\u53c2\u6570\u6216\u8fd4\u56de\u503c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u51fd\u6570\u4f5c\u4e3a\u53c2\u6570\nfun calculate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {\n    return operation(a, b)\n}\n\nfun main() {\n    val add = { x: Int, y: Int -> x + y }\n    val multiply = { x: Int, y: Int -> x * y }\n    \n    println(calculate(5, 3, add))        \/\/ 8\n    println(calculate(5, 3, multiply))  \/\/ 15\n    \n    \/\/ \u4f7f\u7528 Lambda \u8868\u8fbe\u5f0f\n    println(calculate(10, 5) { x, y -> x - y })  \/\/ 5\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>\u7c7b\u548c\u5bf9\u8c61<\/summary>\n<p class=\"wp-block-paragraph\">\u7c7b\u5b9a\u4e49<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u57fa\u672c\u7c7b\nclass Person {\n    var name: String = \"\"\n    var age: Int = 0\n    \n    fun introduce() {\n        println(\"\u6211\u662f $name\uff0c\u4eca\u5e74 $age \u5c81\")\n    }\n}\n\n\/\/ \u4e3b\u6784\u9020\u51fd\u6570\nclass Student(val name: String, var age: Int) {\n    fun introduce() {\n        println(\"\u6211\u662f\u5b66\u751f $name\uff0c\u4eca\u5e74 $age \u5c81\")\n    }\n}\n\n\/\/ \u5e26\u521d\u59cb\u5316\u5757\nclass Teacher(name: String, age: Int) {\n    val name: String\n    val age: Int\n    \n    init {\n        this.name = name\n        this.age = age\n        println(\"\u521b\u5efa\u4e86\u4e00\u4e2a\u6559\u5e08\uff1a$name\")\n    }\n    \n    fun teach() {\n        println(\"$name \u6b63\u5728\u6388\u8bfe\")\n    }\n}\n\nfun main() {\n    val person = Person()\n    person.name = \"\u5f20\u4e09\"\n    person.age = 25\n    person.introduce()\n    \n    val student = Student(\"\u674e\u56db\", 20)\n    student.introduce()\n    \n    val teacher = Teacher(\"\u738b\u8001\u5e08\", 35)\n    teacher.teach()\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u6570\u636e\u7c7b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6570\u636e\u7c7b\u81ea\u52a8\u751f\u6210 <code>equals()<\/code>, <code>hashCode()<\/code>, <code>toString()<\/code> \u7b49\u65b9\u6cd5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>data class User(val name: String, val age: Int)\n\nfun main() {\n    val user1 = User(\"\u5c0f\u660e\", 20)\n    val user2 = User(\"\u5c0f\u660e\", 20)\n    val user3 = User(\"\u5c0f\u7ea2\", 22)\n    \n    println(user1)  \/\/ User(name=\u5c0f\u660e, age=20)\n    println(user1 == user2)  \/\/ true\uff08\u5185\u5bb9\u76f8\u540c\uff09\n    println(user1 == user3)  \/\/ false\uff08\u5185\u5bb9\u4e0d\u540c\uff09\n    \n    \/\/ \u89e3\u6784\u58f0\u660e\n    val (name, age) = user1\n    println(\"$name, $age\")\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ee7\u627f<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u57fa\u7c7b\uff08\u9ed8\u8ba4\u662f final\uff0c\u9700\u8981 open \u624d\u80fd\u88ab\u7ee7\u627f\uff09\nopen class Animal(val name: String) {\n    open fun makeSound() {\n        println(\"$name \u53d1\u51fa\u58f0\u97f3\")\n    }\n}\n\n\/\/ \u7ee7\u627f\nclass Dog(name: String) : Animal(name) {\n    override fun makeSound() {\n        println(\"$name \u6c6a\u6c6a\u53eb\")\n    }\n}\n\nclass Cat(name: String) : Animal(name) {\n    override fun makeSound() {\n        println(\"$name \u55b5\u55b5\u53eb\")\n    }\n}\n\nfun main() {\n    val dog = Dog(\"\u65fa\u8d22\")\n    val cat = Cat(\"\u54aa\u54aa\")\n    \n    dog.makeSound()  \/\/ \u65fa\u8d22 \u6c6a\u6c6a\u53eb\n    cat.makeSound()  \/\/ \u54aa\u54aa \u55b5\u55b5\u53eb\n}<\/code><\/pre>\n<\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>\u96c6\u5408<\/summary>\n<p class=\"wp-block-paragraph\">List\u5217\u8868<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fun main() {\n    \/\/ \u4e0d\u53ef\u53d8\u5217\u8868\n    val fruits = listOf(\"\u82f9\u679c\", \"\u9999\u8549\", \"\u6a59\u5b50\")\n    println(fruits&#91;0])  \/\/ \u82f9\u679c\n    \n    \/\/ \u53ef\u53d8\u5217\u8868\n    val mutableFruits = mutableListOf(\"\u82f9\u679c\", \"\u9999\u8549\")\n    mutableFruits.add(\"\u6a59\u5b50\")\n    mutableFruits.remove(\"\u82f9\u679c\")\n    println(mutableFruits)  \/\/ &#91;\u9999\u8549, \u6a59\u5b50]\n    \n    \/\/ \u5217\u8868\u64cd\u4f5c\n    val numbers = listOf(1, 2, 3, 4, 5)\n    println(numbers.size)           \/\/ 5\n    println(numbers.contains(3))    \/\/ true\n    println(numbers.first())        \/\/ 1\n    println(numbers.last())         \/\/ 5\n    println(numbers.filter { it > 3 })  \/\/ &#91;4, 5]\n    println(numbers.map { it * 2 })     \/\/ &#91;2, 4, 6, 8, 10]\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Set\uff08\u96c6\u5408\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fun main() {\n    \/\/ \u4e0d\u53ef\u53d8\u96c6\u5408\uff08\u81ea\u52a8\u53bb\u91cd\uff09\n    val numbers = setOf(1, 2, 3, 2, 1)\n    println(numbers)  \/\/ &#91;1, 2, 3]\n    \n    \/\/ \u53ef\u53d8\u96c6\u5408\n    val mutableSet = mutableSetOf(1, 2, 3)\n    mutableSet.add(4)\n    mutableSet.add(2)  \/\/ \u91cd\u590d\uff0c\u4e0d\u4f1a\u6dfb\u52a0\n    println(mutableSet)  \/\/ &#91;1, 2, 3, 4]\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Map\uff08\u6620\u5c04\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fun main() {\n    \/\/ \u4e0d\u53ef\u53d8\u6620\u5c04\n    val scores = mapOf(\n        \"\u5c0f\u660e\" to 95,\n        \"\u5c0f\u7ea2\" to 88,\n        \"\u5c0f\u521a\" to 92\n    )\n    \n    println(scores&#91;\"\u5c0f\u660e\"])  \/\/ 95\n    println(scores.getOrDefault(\"\u5c0f\u674e\", 0))  \/\/ 0\uff08\u4e0d\u5b58\u5728\u65f6\u8fd4\u56de\u9ed8\u8ba4\u503c\uff09\n    \n    \/\/ \u53ef\u53d8\u6620\u5c04\n    val mutableScores = mutableMapOf&lt;String, Int>()\n    mutableScores&#91;\"\u5c0f\u660e\"] = 95\n    mutableScores&#91;\"\u5c0f\u7ea2\"] = 88\n    mutableScores&#91;\"\u5c0f\u660e\"] = 100  \/\/ \u66f4\u65b0\u503c\n    \n    \/\/ \u904d\u5386\n    for ((name, score) in mutableScores) {\n        println(\"$name: $score\")\n    }\n}<\/code><\/pre>\n<\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>\u7a7a\u5b89\u5168<\/summary>\n<p class=\"wp-block-paragraph\">Kotlin \u6700\u91cd\u8981\u7684\u7279\u6027\u4e4b\u4e00\uff0c\u907f\u514d\u7a7a\u6307\u9488\u5f02\u5e38\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fun main() {\n    \/\/ \u975e\u7a7a\u7c7b\u578b\uff08\u9ed8\u8ba4\uff09\n    var name: String = \"Kotlin\"\n    \/\/ name = null  \/\/ \u7f16\u8bd1\u9519\u8bef\uff01\n    \n    \/\/ \u53ef\u7a7a\u7c7b\u578b\uff08\u4f7f\u7528 ?\uff09\n    var nullableName: String? = \"Kotlin\"\n    nullableName = null  \/\/ \u53ef\u4ee5\n    \n    \/\/ \u5b89\u5168\u8c03\u7528\u64cd\u4f5c\u7b26 ?.\n    val length1 = nullableName?.length  \/\/ \u5982\u679c nullableName \u4e3a null\uff0c\u8fd4\u56de null\n    println(length1)  \/\/ null\n    \n    nullableName = \"Kotlin\"\n    val length2 = nullableName?.length\n    println(length2)  \/\/ 6\n    \n    \/\/ Elvis \u64cd\u4f5c\u7b26 ?:\uff08\u63d0\u4f9b\u9ed8\u8ba4\u503c\uff09\n    val length3 = nullableName?.length ?: 0\n    println(length3)  \/\/ 6\n    \n    nullableName = null\n    val length4 = nullableName?.length ?: 0\n    println(length4)  \/\/ 0\n    \n    \/\/ \u975e\u7a7a\u65ad\u8a00 !!\uff08\u4e0d\u63a8\u8350\uff0c\u53ef\u80fd\u629b\u51fa\u5f02\u5e38\uff09\n    \/\/ val length5 = nullableName!!.length  \/\/ \u5982\u679c\u4e3a null \u4f1a\u629b\u51fa\u5f02\u5e38\n    \n    \/\/ \u5b89\u5168\u8f6c\u6362 as?\n    val str: String? = \"123\"\n    val num: Int? = str as? Int  \/\/ \u8f6c\u6362\u5931\u8d25\u8fd4\u56de null\uff0c\u4e0d\u4f1a\u629b\u5f02\u5e38\n    println(num)  \/\/ null\n}<\/code><\/pre>\n<\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>\u6269\u5c55\u51fd\u6570<\/summary>\n<p class=\"wp-block-paragraph\">\u53ef\u4ee5\u4e3a\u73b0\u6709\u7c7b\u6dfb\u52a0\u65b0\u51fd\u6570\uff0c\u800c\u4e0d\u9700\u8981\u4fee\u6539\u7c7b\u672c\u8eab\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u4e3a String \u6dfb\u52a0\u6269\u5c55\u51fd\u6570\nfun String.removeSpaces(): String {\n    return this.replace(\" \", \"\")\n}\n\n\/\/ \u4e3a Int \u6dfb\u52a0\u6269\u5c55\u51fd\u6570\nfun Int.isEven(): Boolean {\n    return this % 2 == 0\n}\n\nfun main() {\n    val text = \"Hello World\"\n    println(text.removeSpaces())  \/\/ HelloWorld\n    \n    val number = 10\n    println(number.isEven())  \/\/ true\n    println(7.isEven())        \/\/ false\n}<\/code><\/pre>\n<\/details>\n\n\n\n<p class=\"wp-block-paragraph\">\u770b\u5b8c\u8fd9\u4e9b\u5c31\u53ef\u4ee5\u5f00\u59cb\u7ec3\u4e60\u9898\u4e86\ud83c\udf89<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u770b\u5b8c\u8fd9\u4e9b\u5c31\u53ef\u4ee5\u5f00\u59cb\u7ec3\u4e60\u9898\u4e86\ud83c\udf89<\/p>\n","protected":false},"author":1,"featured_media":78,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-79","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kotlin"],"_links":{"self":[{"href":"https:\/\/www.xieyuchen.xyz\/index.php\/wp-json\/wp\/v2\/posts\/79","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xieyuchen.xyz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xieyuchen.xyz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xieyuchen.xyz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xieyuchen.xyz\/index.php\/wp-json\/wp\/v2\/comments?post=79"}],"version-history":[{"count":0,"href":"https:\/\/www.xieyuchen.xyz\/index.php\/wp-json\/wp\/v2\/posts\/79\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.xieyuchen.xyz\/index.php\/wp-json\/wp\/v2\/media\/78"}],"wp:attachment":[{"href":"https:\/\/www.xieyuchen.xyz\/index.php\/wp-json\/wp\/v2\/media?parent=79"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xieyuchen.xyz\/index.php\/wp-json\/wp\/v2\/categories?post=79"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xieyuchen.xyz\/index.php\/wp-json\/wp\/v2\/tags?post=79"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}