Kotlin语言的学习

本文介绍了Kotlin中的空安全处理,包括在类型后加?以允许为null,以及调用对象方法前需加?的规则。此外,还探讨了Kotlin的Lambda表达式简化代码的优势和作为高阶函数的特性。最后,强调了Kotlin与Java的优秀交互性,能够无缝使用Java框架和库,并能轻松将Java代码转换为Kotlin。
摘要由CSDN通过智能技术生成
Kotlin新型语言大家应该不陌生,尤其是Android开发者都会或多或少听说过Kotlin。接下来就讲一讲这门简洁,高效,快捷的Kotlin语言。

一、Kotlin 是什么?
是公司 JetBrains 研发的语言。是一门支持多范式、多平台的现代静态编程语言。Kotlin 支持面向对象、泛型与函数式等编程范式,它支持 JVM、Android、Java 目标平台,而 原生(Native)平台的 Kotlin 几天前也发布了 0.2 版本。而且 Kotlin 具有很多现代(也有称下一代的)静态语言特性:如类型推断、多范式支持、可空性表达、扩展函数、模式匹配等。
Kotlin 是一个实用性很强的语言,专注于互通,安全,简洁,工具健全...


二、为什么要推广这个语言?
2.1 Java 语言的限制和问题
例如,我们不能给不是我们自己写的 types、classes 或者 interfaces 增加新的方法。长时间以来,我们都会采用 util 类,杂乱无章地堆砌着我们代码或者或者揉在同一个 util package 里面。如果这是解决方案的话,它肯定不理想。
 Java 语言的类型系统都有 null 的问题,在 android 上更为明显。因为它没有对可能是或不是 null 的类型完成 first-class representation。所以,被称作 “billion dollar mistake” 的 null 指针异常最后会毁了你的应用。
接下来, Java 肯定不是最简洁的语言。这件事本身不是件坏事,但是事实上存在太多的常见的冗余。这会带来潜在的错误和缺陷。在这之前,我们还要处理安卓 API 带来的问题。

2.2 Android API 的设计问题
安卓是一个庞大的继承系统;他们为他们的继承系统而感到自豪,对他们来说这个系统工作的也非常的正常,但是这个系统倾向于把问题推向应用开发者。而且,空引用的问题也回来了,这个问题在安卓系统中十分明显,因为他们想让系统更加有效些。null 被用在许多地方来代表值的缺失,而不是封装成更高级的类型,比如一个类型或者可选项。
同时,回到语言的冗余,安卓的 API 有着自己许多的范式。这也许是因为性能的原因。设计者们最后写出的这些 APIs 需要你,开发者,来做许多的事情来提高效率而不是用其他的方法抽象它们。

2.3 与Java相比有什么好处
更容易表现 ,使用kotlin你可以少写很多代码,比如创建数据类等。
更安全 ,在用Java开发时,大多数代码都是预防性的。为了不遇到非预期的NullPointerException,在使用之前,要不断的检测对象是否为空。与许多其它语言一样,因为需要使用安全调用运算符显式指明对象是否能够为空(null),所以Kotlin是空类型安全的
是函数式的 ,Kotlin是基于面向对象的语言。但是就如其他很多现代的语言那样,它使用了很多函数式编程的概念,比如,使用lambda表达式来更方便地解决问题。其中一个很棒的特性就是Collections的处理方式。
可以扩展函数 ,这意味着我们可以扩展类的更多的特性,甚至我们没有权限去访问这个类

三、语法介绍
3.1 语法简单
          
          
          
//variables and constants
var currentVersionCode = 1 //变量当前的版本号,类型Int可以根据值推断出来
var currentVersionName : String = "1.0" //显式标明类型
val APPNAME = "droidyue.com" //常量APPNAME 类型(String)可以根据值推断出来
//methods
fun main(args: Array<String>) {
println(args)
}
// class
class MainActivity : AppCompatActivity() {
}
// data class 自动生成getter,setting,hashcode和equals等方法
data class Book(var name: String, val price: Float, var author: String)
//支持默认参数值,减少方法重载
fun Context.showToast(message: String, duration:Int = Toast.LENGTH_LONG) {
Toast.makeText(this, message, duration).show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值