kotlin的入门讲解

前言

本来Java开开心心,Android又要搞个Kotlin
但是吧,谷歌爸爸说了:“I need” so我们就要:“I do”

kotlin的来历:

由JetBrains公司在2011年开发,并在2012年进行开源
说到JetBrains你一定会想起IntelliJ IDEA ,这个IDE号称是地球上最好的开发Java的IDE,当然也是对于Kotlin开发比较好的IDE(毕竟是Kotlin爸爸开发的)

kotlin的运行原理:

Kotlin跟Java一样(在运行过程中) 先是由JetBrains自制的编译器进行编译成Java虚拟机识别的class文件,再直接由Java虚拟机转换为二进制可识别文件这就是kotlin的工作原理与Java差别仅在是由哪个编译器转换成的class文件,Java虚拟机对于是从哪里来的class文件并不关心,只要是符合Java虚拟机标准就可以

kotlin优点缺点:

优点:

语法相对于Java简单,并且kotlin开发的代码量可能会比用Java开发的代码量少50%,拥有大量的高级特性
可以直接调用Java代码,无缝使用Java的第三方开源库

缺点

编译慢相对于Java而言

第一个代码 Hello kotlin

 fun main(){
     print("Hello Kotlin")
 }

kotlin语言讲解:

  • 变量:
    • val 类型:
      不可变的变量 不可被初始赋值后重新赋值(相当于Java中的 final)
    • var 类型:
      可变的变量 可被初始赋值后重新赋值
    • 例子:
 fun main(){
     val a = 10//kotlin可以自动判断类型
     print("a = "+a)//kotlin不用;
 }
//kotlin类型推导并不是总是正常工作的
//比如对一个变量进行延迟赋值的话,就无法自动推导类型了,这时就要进行显式声明变量类型
 fun main(){
     val a: Int = 10
     print("a = "+a)
 }

在kotlin中抛弃了所有Java的基础类型,全部使用对象类型

java基本数据类型kotlin对象数据类型数据类型说明
intInt整型
longLong长整型
shortShort短整型
floatFloat单精度浮点型
doubleDouble双精度浮点型
booleanBooolean布尔型
charChar字符型
byteByte字节型
  • 函数

函数格式:
fun 函数名 (变量名1:类型,变量名2:类型) 返回值类型 {
函数体
}

  • 举例:
import kotlin.math.max

fun main(){//dasdasdas
     val a: Int = 10
     val b: Int = 12
     print("a b Max = "+lagerNumber(a,b))
 }

 fun lagerNumber(Number1:Int,Number2:Int):Int{
     return max(Number1,Number2)
 }
fun main(){//dasdasdas
     val a: Int = 10
     val b: Int = 12
     print("a b Max = "+lagerNumber(a,b))
 }
//Kotlin语法糖:
//函数体仅有一行 可以简化返回
 fun lagerNumber(Number1:Int,Number2:Int):Int = max(Number1,Number2)
//同样也可以简化返回值(运用类型推断机制)
 fun lagerNumber(Number1:Int,Number2:Int) = max(Number1,Number2)

逻辑控制
判断语句

  1. if条件语句
//传统做法(java)
fun largerNumber(number1:Int,number2:Int):Int{
    var a = 0
    if(number1>number2){
        a = number1
    }else{
        a = number2
    }
    return a
}

//简化变量
fun largerNumber2(number1: Int,number2: Int):Int{
    return if(number1>number2) number1 else number2
}

//运用之前的语法糖进行化简
//符合仅有一行代码(相当于仅有一行代码)
fun largerNumber3(number1: Int,number2: Int) = if (number1>number2)number1 else number2
  1. when条件语句
    与Java中的switch类似
//java中的方法(同样也运用语法糖了)
fun getScore(name:String)= if (name == "Tom"){
        86
    }else if(name == "Jim"){
        77
    }else if(name == "Jack"){
        95
    }else if(name == "Lily"){
        100
    }else{
    0
    }
/*
运用kotlin的特性简化之后的代码
when和if一样也是可以没有返回值的
when可以传入一个任意类型的参数然后定义一系列条件格式是
    匹配值 -> {执行逻辑}
当执行逻辑只有一行代码 {}可以省略
 */
fun getScore2(name: String) = when (name){
    "Tom" -> 86
    "Jim" -> 77
    "Jack" -> 95
    "Lily" -> 100
    else -> 0
}

//when还可进行类型匹配
fun checkNumber(num:Number) = when(num){
        is Int -> 10
        is Double -> 1.1
        else -> 0
    }

//when也可以进行不带参数的匹配
//kotlin中的判断字符串对象相等使用 == 关键字
fun getScore3(name:String) = when {
    name == "Tom" -> 86
    name == "Jim" -> 77
    name == "Jack" -> 95
    name == "Lily" -> 100
    else -> 0
}

//实现以Tom开头的名字分数为86
//使用带参数的Tom就无法实现
fun getScore4(name:String) = when{
    name.startsWith("Tom") -> 86
    name == "Jim" -> 77
    name == "Jack" -> 95
    name == "Lily" -> 100
    else -> 0
}

循环语句

  1. while与Java中的一致
  2. for - in 循环(Java中加强版foreach)

区间的概念:
val range = 0..10 - 即是 [0,10]
val range = 0 until 10 - 即是 [0,10)

    for (i in 1..10){
        println(i)
    }
    for (i in 1 until 10){
        println(i)
    }

关键字 : step
默认情况下 for - in 会在区间范围内增1
改变步长为2

    for (i in 1 until 10 step 2){
        println(i)
    }

关键字:downTo 降序区间生成一个 [10,1] 的降序区间

    for (i in 10 downTo 1 step 2){
        println(i)
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值