美文网首页
Kotlin 变量、函数、程序的逻辑控制以及循环

Kotlin 变量、函数、程序的逻辑控制以及循环

作者: code希必地 | 来源:发表于2020-09-17 17:56 被阅读0次

1、Kotlin的原理

编程语言大致可以分为二类:

  • 1、编译型语言
    编译型语言的特点是:编译器将我们编写的代码一次性编译成计算机可识别的二进制文件,然后计算机直接执行,像C和C++都属于编译型语言。
  • 2、解释型语言
    解释型语言的特点是:在程序运行时,解释器一行行读取我们编写的源代码,然后将其转换成计算机可识别的二进制数据后再执行,因此效率较低,如Python、JavaScript、Java等都属于解释型语言。
    Java编译之后生成的class文件,并不是计算机识别的二进制文件,所以这就需要Java虚拟机充当解释器的作用,将class文件转成二进制文件。
    如果有一种新的语言也能编译生成和Java相同规格的class文件,那么这个新语言是不是也能开发Android程序,答案是肯定的,这也就是Kotlin的工作原理。

2、Kotlin的优点

  • 1、Kotlin比较简洁,开发相同的功能,相比于Java能减少50%的代码量,甚至更多。
  • 2、Kotlin更加高级,Kotlin增加了现代高级语言的语法特性,提高了开发的效率。
  • 3、Kotlin在安全性上做了很多的努力,几乎杜绝了空指针异常。
  • 4、和Java是100%兼容。

3、变量

Kotlin中定义变量,只允许在变量前声明两种关键字:

  • 1、val:用来声明一个不可变的变量,这种变量在初始赋值之后就不能再重新赋值,对应java中的final变量。
  • 2、var:用来声明一个可变的变量,这种变量在赋值之后仍然可以重新赋值,对应java中的非final变量。
    举个例子
fun main(){
  val a=10
}

看到这里很多人肯定会有疑问:变量的类型该怎么定义呢?

3.1、Kotlin类型推导机制

对于Kotlin来说,它是不需要显式的定义变量的类型,因为Kotlin拥有出色的类型推导机制,比如上面的例子中val a=10那么a的类型就是整型变量,如果把一个字符串赋值给a那么a就是字符串变量
如果开发者不想相信类型推导机制,也可以显式的定义变量的类型:

val a:Int=10

在上面,我们显式的指定整型变量为Int,这和java还是有区别的,在java中我们会使用关键字int,它们还是有区别的。在Kotlin中Int不再是关键字而是一个类,它拥有自己的方法和继承结构。

3.2、Java和Kotlin数据类型对照表

Java基本数据类型 Kotlin对象数据类型 数据类型说明
int Int 整型
long Long 长整型
short Short 短整型
float Float 单精度浮点型
double Double 双精度浮点型
boolean Boolean 布尔型
char Char 字符型
byte Byte 字节型

4、函数

先看下Kotlin中函数的标准定义规则:

fun function_name( param1 : Int , param2 : Int ) : Int {}
  • 1、fun是定义函数的关键字,无论定义什么函数,都必须使用fun来声明函数。
  • 2、紧跟着fun后面的就是方法名(可随意编写)
  • 3、括号里面的是参数,param1表示参数名,后面跟 参数的类型,参数个数不限。
  • 4、括号后的: Int表示返回值类型,如果无返回值可不写
  • 5、大括号里的内容是方法体。
    举例如下:
fun main(){
   val a=10
    val b=100
    val result=getLargeNumber(a,b)
    println("输出的结果是:result="+result)
}

fun getLargeNumber(num1:Int,num2:Int) : Int{
    return max(num1,num2)
}

如果方法体中只有一行代码的话:简化方法getLargeNumber

fun getLargeNumber(num1:Int,num2:Int) : Int=max(num1,num2)

由于其出色的类型推导机制,函数max的返回值为整型,继续简化如下:

fun getLargeNumber(num1:Int,num2:Int) =max(num1,num2)

5、程序的逻辑控制

程序的执行语句主要分为3种:

  • 1、顺序语句
  • 2、条件语句
  • 3、循环语句
    顺序语句没什么好说的,就是一行一行的执行。

5.1、条件语句

Kotlin中实现条件语句的方法有两种:if和when

5.1.1 使用if实现条件语句

Kotlin中的if的用法和Java中几乎没有什么区别。

fun getLargeNumber(num1:Int,num2:Int) : Int {
    var result:Int
    if(num1>=num2){
        result=num1
    }else{
        result=num2
    }
    return result
}

Kotlin中的if相比于Java有一个额外的功能:它是可以有返回值的。返回值就是if条件语句每一个条件中最后一行代码的返回值。
上面例子可简化为

fun getLargeNumber(num1: Int, num2: Int): Int {
    return if (num1 >= num2) {
        num1
    } else {
        num2
    }
}

上面说过,方法体中只有一行代码的简化,可继续简化为一行代码

fun getLargeNumber(num1: Int, num2: Int) = if (num1 >= num2) num1 else num2

5.1.2、when条件语句

Kotlin中的when类似于Java中的switch,但是比switch强大了很多,在java中switch只能传入整形、字符串、枚举或短于整形的变量作为条件,相比来说when就比较强大了,可以传入任意类型的值。
先看一个用if实现的简单例子

fun getScore(name: String) = if (name == "Tom") {
        88
    } else if (name == "LiLi") {
        90
    } else {
        100
    }

1、精确匹配
再看下用when如何实现相同的功能

fun getScoreByWhen(name: String) =
            when (name) {
                "Tom" -> {
                    Log.e("TAG","when的每一个条件的最后一句的返回值,也可以作为返回值和if一样")
                    88
                }
                "LiLi" -> 90
                else -> 100
            }

可以看到when也是有返回值的,每一个条件的最后一句来作为返回值,和if的使用是一样的。
when允许传入一个任意类型的参数,when中结构体的标准格式是

匹配值 -> {执行逻辑}

2、类型匹配
when除了上面的精确匹配外还有类型匹配看个例子

fun checkNum(number: Number) {
        when (number) {
            is Float -> Log.e("TAG", "传入的是Float类型")
            is Double -> Log.e("TAG", "传入的是Double类型")
            is Int -> Log.e("TAG", "传入的是Int类型")
        }
    }

其中is关键字是类型匹配的核心,和Java中的instanceof的作用一样,在KotlinInt、Float、Double等数字相关的类都是其子类。
3、不带参数匹配
when除了上面的用法外,还有一种不带参数的匹配方式

fun noParamWhen(name: String) = when {
        name == "Tom" -> 88
        name == "LiLi" -> 90
        else -> 100
    }

这种写法看着有点麻烦,其实它还是有存在的意义的,下面举例说明

fun noParamWhen(name: String) = when {
        name.startsWith("Tom") -> 88
        name == "LiLi" -> 90
        else -> 100
    }

想实现上面这种功能的话就不能使用带参数的方式来实现。

6、循环语句

Java中主要有2中循环:while循环和for循环,在Kotlin中也提供了while循环和for循环,其中Kotlin中的while循环和Java中没什么区别,所以这里只需要学习下for循环的使用。
Kotlin中摒弃了Java的for-i循环,并将Java中的for-each循环修改成了for-in循环,先看下for-in循环的使用。

fun forCircle() {
        for(i in 0 .. 10){
            Log.e("TAG", "for-in循环::"+i)
        }
    }

..是定义区间的关键字,0 .. 10就表示区间为[0,10],可以看到这个区间是左闭右闭的,如何表示左闭右开呢?这就用到了until关键字

fun forCircle2(){
        for(i in 0 until 10){
            Log.e("TAG", "for-in循环,区间是左闭右开:"+i)
        }
    }

上面两个例子循环的步长都是1,那么如何修改步长呢?这就需要使用关键字step

fun forCircle3(){
        for(i in 0 .. 10 step 5){
            Log.e("TAG", "for-in循环,步长为5:"+i)
        }
    }

上面的例子都是升序的,如何实现降序呢?使用关键字downTo即可实现

fun forCircle4(){
        for(i in 10 downTo 0 ){
            Log.e("TAG", "for-in循环,降序:"+i)
        }
    }

相关文章

  • Kotlin 变量、函数、程序的逻辑控制以及循环

    1、Kotlin的原理 编程语言大致可以分为二类: 1、编译型语言编译型语言的特点是:编译器将我们编写的代码一次性...

  • Kotlin | 2.Kotlin基础

    声明函数、变量、类、枚举以及类型Kotlin中的控制结构智能转换抛出和处理异常 函数学习 函数和变量 函数 变量 ...

  • Kotlin学习 1 -- 快速入门Kotlin

    本篇文章主要介绍以下几个知识点:Kotlin 语言简介变量和函数程序的逻辑控制面向对象编程Lambda 编程空指针...

  • 编写可读艺术的代码

    前言 编写代码,实质是在梳理逻辑,为了完善整个逻辑流程,我们借用编程语言的变量、函数、流程控制、循环、注释、方法等...

  • kotlin基础

    kotlin基础 这次的内容主要是kotlin的基本要素:变量、函数、类。同时学习kotlin的控制语句,if、w...

  • Kotlin与Java语法对比(首次了解)

    变量的声明。 字符串拼接: 函数构建 使用循环 Kotlin的Win表达式 Kotlin的in关键字

  • 7月20日学习总结

    总结今天学习内容 跟任何编程语音一样kotlin也拥有着 变量 函数 以及面向对象的语法结构 变量: Kotlin...

  • Kotlin-入门(二)

    上一篇文章《Kotlin-入门》写了kotlin的介绍、HelloWorld、函数定义、变量声明、各种注释以及字符...

  • JavaScript基础-第2章

    目标 常用数据类型 基本语法 变量的定义与赋值 数据类型与转换 逻辑控制语句 条件语句 循环语句 函数定义 基本语...

  • Kotlin实战02 — Kotlin基础

    这章将讲述声明函数、变量、类、枚举和属性Kotlin的控制结构智能强转抛和处理异常 1 基本元素: 函数和变量 K...

网友评论

      本文标题:Kotlin 变量、函数、程序的逻辑控制以及循环

      本文链接:https://www.haomeiwen.com/subject/jastyktx.html