Kotlin—控制结构笔记(一)

    xiaoxiao2022-07-12  149

    变量与常量

    常量:

    val=value,值类型,类似Java的final,不可以重复赋值。

    变量:

    var=variable

    类型推导就是编译器可以推导量的类型

    package com.example.n val FINAL_HELLO_WORLD:String="Helloworld" var helloworld:String="HelloWorld" //类型推导 val FINAL_HELLO_CHINA="hellochina" fun main(args:Array<String>) { helloworld="hiworld"//可以重新赋值 }

     

    函数

    以特定功能组织起来的代码块:

    package com.example.n fun main(args:Array<String>) { val arg1=args[0].toInt() val arg2=args[1].toInt() println("$arg1+$arg2=${sum(arg1,arg2)}") } //fun sum(arg1:Int,arg2:Int):Int{ // return arg1+arg2 //} fun sum(arg1:Int,arg2:Int)=arg1+arg2;

     

    Lambda表达式

    Lambda表达式就是匿名函数

     

    遍历:

    args.forEach { println(it) } args.forEach (::println )

    Lambda表达式的简化:

    函数调用最后一个Lambda可以移出去

    函数参数只有一个Lambda,调用时小括号可以省略

    Lambda只有一个参数时可以默认为it

    入参,返回值和形参一致的函数可以用函数引用的方法作为实参传入

     

    类成员

    类成员包括属性和方法

    属性的初始化尽量在构造方法中完成

    无法在构造函数中初始化,尝试降级为局部变量

    var 用lateinit延迟初始化,val用lazy

    可空类型谨慎使用null直接初始化

    val修饰的属性相当于只读变量必须初始化

    class A{ var b=0 get(){ println("someone tries to get b") return field } set(value){ println("some one tries to set b") field=value } }

     

    运算符

    Java中没有而Kotlin中有的运算符

    1.in

    a in b  ---->   b.contains(a)

    a!in b ------>!b.contains(a)

    2.is

    用于检查对象是否是某个类的实例,相当于Java中的instanceof运算符。

     

    Kotlin和Java相同的运算符:

     

    Kotlin与Java使用有差异的运算符

    1.==和!=

    ==比较的式值,===才是比较对象

    2.[]

     与Java不同,Kotlin的这个运算符不仅可以用在数组变量后,也可以用在集合变量后,可以方便地调用和操作数组和集合中的元素。

     

    Java中有而Kotlin没有的运算符

    Kotlin中抛弃了类c风格的运算符,只是定义了几个函数

     运算符重载:

    任意类可以定义或者重载父类的基本运算符通过运算符对应的具名函数来定义对参数个数做要求,对参数和返回值类型不做要求不能定义任意运算符

    中缀表达式:

    只有一个参数,而且用infix修饰的函数

    不需要用.()的方式来调用

    运算符+重载的栗子:

    package com.example.n class Complex(var real:Double,var imaginary:Double) { operator fun plus(other: Complex): Complex { return Complex(real + other.real, imaginary + other.imaginary) } override fun toString(): String { return "$real+${imaginary}i" } } fun main(args:Array<String>) { val c1=Complex(3.0,4.0) val c2=Complex(2.0,7.5) println(c1+c2) }

     

    参考文章:

    https://www.jianshu.com/p/e9b5d263615d

    最新回复(0)