• 💬 免费且实用的计算机相关知识题库:👉进来逛逛

给大家安利一个免费且实用的计算机知识刷题(面经大全)网站,👉点击跳转到网站

Kotlin 之于 Java 就像 ES6 之于旧式 JavaScript。很多人都被 JavaScript 引擎(如浏览器)或 JVM(如 Android)所困。他们的母语很糟糕,但是使用完全非母语的语言会导致与本地 API 交互的巨大复杂性。于是就创建了折衷的解决方案,比如用于 JavaScript 的 ES6 和用于 Java 的 Kotlin。Kotlin 在 Android 开发人员中特别受欢迎,但你可以在任何可以使用 JVM 的地方使用它,而且现在真的很难找到使用“纯 Java”的正当理由。

Hello, World


我们可以从最基本的程序开始!这没什么不寻常的,除非你记得它在普通 Java 中有多糟糕:


fun main() {

  println("Hello, World!")

}



对于一个合理的 hello world,整个事件花费的时间太长了:


$ kotlinc hello.kt -include-runtime -d hello.jar && java -jar hello.jar



Kotlin 有某种“脚本模式”和 REPL,它可以与你的 IDE 集成,所以对于每天编写它的人来说,这可能不是问题。

我在代码库中包含了一个允许 ./run file.kt 的简短脚本。

斐波那契


我们需要一些类型注释,感觉它们应该是可推断的,但它们都是完全合理的代码。范围循环语法是完全可读的,总体而言,考虑到它基本上是 Java 底层,它的可读性和简洁的代码令人震惊。


fun fib(n: Int): Int {

  if (n < 3) {

    return 1

  } else {

    return fib(n - 1) + fib(n - 2)

  }

}



fun main() {

  for (i in 1..30) {

    println(fib(i))

  }

}



FizzBuzz


Kotlin 抛弃了 C 风格 switch,引入了 when 语法,这有点类似于 Haskell 风格的模式匹配。


fun fizzbuzz(n: Int): String {

  return when {

    n % 15 == 0 -> "FizzBuzz"

    n % 3 == 0 -> "Fizz"

    n % 5 == 0 -> "Buzz"

    else -> n.toString()

  }

}



fun main() {

  for (i in 1..100) {

    println(fizzbuzz(i))

  }

}



统一码


由于 Kotlin 在底层基本上就是 Java,它仍然不能在基本平面之外正确处理 Unicode,所以最后一个答案是错误的:


fun main() {

  println("Hello".length)

  println("Źółw".length)

  println("💩".length)

}



输出


5

4

2



数据类


Java 使得处理几乎任何类型的数据都变得非常乏味。每个简单的数据类都需要显式的构造函数、getter、setter、hashcode 和 equals。你甚至不能使用==, 你需要运行.equals(),但如果其中一方为空,那将真的崩溃,所以你需要先对双方进行空检查,然后.equals()。基本数据操作的样板数量太荒谬了。

Kotlin 避免了几乎所有这些废话:


data class Point(val x: Double, val y: Double) {

  fun length() = Math.sqrt(x * x + y * y)

}



fun main() {

  val a = listOf(1, 2, 3)

  val b = listOf(1, 2, 3)

  val c = Point(30.0, 40.0)

  val d = Point(30.0, 40.0)
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/df48c9fb809bc5fb13a67fecb2e943af.png)

 

![img](https://img-blog.csdnimg.cn/img_convert/f7af6fa48623c61b92ef459450005e0c.png)

![img](https://img-blog.csdnimg.cn/img_convert/46506ae54be168b93cf63939786134ca.png)

![img](https://img-blog.csdnimg.cn/img_convert/252731a671c1fb70aad5355a2c5eeff0.png)

![img](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

![img](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)**

sdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)**

<img src="https://img-community.csdnimg.cn/images/fd6ebf0d450a4dbea7428752dc7ffd34.jpg" alt="img" style="zoom:50%;" />
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐