开发一直使用Java,如何快速了解Kotlin

1. HelloWorld

fun main(args: Array) {//相当于Java的main()函数

      println("Hello Kotlin!")

}

2. Kotlin当中的基本数据类型与Java有些不同

Kotlin当中的基本数据类型基本上与Java差不多,但是Kotlin当中并不存在int和Integer等类似的基本类型对应的关键字,而只存在Int、Byte、Boolean等等基础类型关键字,所以根本不存在拆箱和装箱的概念。


image

Kotlin中获取基础类型的极值非常简单,例如:Int类型

var maxInt:Int = Int.MAX_VALUE
println("Int类型的最大值是:"+maxInt)

var minInt:Int = Int.MIN_VALUE
println("Int类型的最小值是:"+minInt)

Kotlin中变量的声明涉及到两个关键字:
var 变量
val 常量,这种声明变量的方式相当于java中的final变量。一个val创建的时候必须初始化,因为以后不能被修改

Kotlin中不支持类型自动转化。在Java中char->int->long,int->float等等都可以自动转换,Kotlin为了降低不必要的错误不支持

4.Java中的原始祖类是Object,而Kotlin确实Any

Any只存在3个方法:equals(),hashCode,toString

4.Kotlin处理空指针

在java开发中空指针应该是出现频率最高的异常之一,为了避免空指针我们也做了很多的防护。Kotlin在空指针上的处理非常的人性化;Kotlin当中的所有类型都分为“可空类型”和“非空类型”,比如:“String”和“String?”,String就是非空类型,非空类型是不允许被null赋值的,否则代码编译报错,而可空类型可以被null赋值,默认都是非空类型。
下面有两个非常具有代表性的示例

 println(getNetJson()?.length)//当getNetJsonwei为null时输出null,不为空时输出getNetJson()的长度   
 getNetJson?.return//当getNetJsonwei为null时返回

Kotlin中对可空对象的直接调用是不允许的

var str:String? = "dsada"
 println(str.length)//编译器报错,因为str可能为null,为null的时候是不能调用length的

嘿嘿 是不是该觉安全了很多
如果我们十分确定这个被声明为可空的变量一定不为空,你可以给编译器一点保证,让它放心使用

var str:String? = "dsada"
println(str!!.length)

5.Kotlin中的类型转换

Java中的类型转换是指存在继承关系的,子类可以向上自动转型为父类,而父类转子类则需要强制转换。Kotlin中的类型转换使用as关键字

 var f: Any = 1
    fun main(args:Array){
        var num=f as Int
    }

但是有时候我们不太确定是否符合转换,如果这个被转换的值不是我们试图转换的类型,该怎么办?Java中我们会先判断类型。

 var f: Any = “1“
    fun main(args:Array){
        var num=f as? Int
    }

仔细看,as变成了as? 当f不是Int类型时,num会被赋值为null

6.Kotlin的外号是咋回事

在java中一个类同时使用了多个类名相同但是属于不同包的类,在java中的处理是带上包路径来进行区分。Kotlin中采用了别名机制:

import A.Student as AS//将A包下的Student类取外号为"AS"
import B.Studnet as BS//将B包下的Student类取外号为"BS"

open class Student{

     init {
       println("我是C包中的Student")
     }

}

fun main(args: Array) {

   var astudent:AS = AS()//通过外号来创建实例对象

   var bstudent:BS = BS()//通过外号来创建实例对象

   var cstudent:Student = Student()

}

感觉清晰多了吧

7.Kotlin的“区间”

t类名叫Range
整型区间:

var intRange:IntRange = 0..1024//区间为[0,1024],注意是全闭的
var intRange2:IntRange = 0 until 1024//区间为[0,1024),注意是半闭半开的,包头不包尾

println("50是否存在与区间[0,1024]:"+intRange.contains(50))
println("-3是否存在与区间[0,1024):"+intRange.contains(-3))

//遍历区间
for(i in intRange){
    println(i)
}

你可能感兴趣的:(开发一直使用Java,如何快速了解Kotlin)