Android Kotlin学习笔记 (1)

26 篇文章 0 订阅

        2017年谷歌 I/O 全球开发者大会正式宣布,kotlin被列为Android开发的一级语言。由捷克JetBrain公司位于俄罗斯圣彼得堡团队所研发所创。其语法最大的特点是简洁,和java,C++一样都是属于静态语言。运行原理如下图所示,列举java的和kotlin的参照理解:

 

        

         

       众所周知,java虚拟机的目的便是跨平台运行,下载的jdk,jre便包含了java虚拟机,底层在操作系统之上多了虚拟机这个环节,便将操作系统之间架构的不同给屏蔽了,不必考虑这些就能在不同系统运行java程序,kotlin和java同理,都是先编译成字节码文件再链接成机器语言,只不过链接的那一步多了kotlin的运行时库。

========================================

       基本上语法和Java很像,下面列出来整理的不同点:

没有New:

       kotlin里没有new这个关键字,需要的地方直接构造就行了。

 标识符:

       kotlin在命名的标识符方面,除了&不能参与命名,其他和java都一样。

变量常量:

       var:   可变变量 

       val:  不可变变量(只能被一次赋值的变量,类似java 的final常量) (比如代码中http协议的回执中,获得到数值之后赋给val 类型声明的变量,这就叫运行期)。

       const val  :  编译器常量(编译结束的时候,写啥就是啥了不能再改了,类似C++的宏定义),只能用于String或者基本数据类型,是顶层常量(写在类之外的,不属于任何一个类)。

函数定义:

       函数定义使用关键字 fun,参数格式跟java不同,后缀格式,为:参数 : 类型

fun sum(a: Int, b: Int): Int {   // Int 参数,返回值 Int
    return a + b
}

      如果没有返回值,默认是UInt

基本数据类型:

        kotlin的基本数据类型可以理解成Java基本数据类型的首字母大写,而且没有像Java那样的基本数据类型包装类(int --> integer),每种基本数据类型都能用如下方法进行转化,但是像java那样用加号的形式从数字转字符串的方法,在kotlin就不好用了,但是字符串之间的拼接,依然可以用“+”:

toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char

字符串模版:

     $便是字符串模版的应用,直接在字符串中塞进“$变量名”表示此处引用该变量的值,java的话多用字符串拼接处理出目标字符串,有了字符串模版倒是方便了。举例子:

fun main(args:Array<String>)
{
   val s = "runoob"
   val str = "$s.length is ${s.length}" // 求值结果为 "runoob.length is 6"
   println(str)
}

NULL检查机制:

    类型后面加 ? 说明数值可以被赋null

 

运算符:

===是引用的比较,比较的是引用的值是否相同,即栈中所存储的  堆中的内存地址是否相同。

 

表达式:

   表达式没什么特殊的,就是可以做为一个变量放到等号的右边进行赋值操作,如:

// 传统写法
var max: Int
if (a > b) {
    max = a
} else {
    max = b
}
 
// 作为表达式
val max = if (a > b) a else b

  由此可见表达式代码数量变得简洁。

 

函数体表达式(lamda):

     匿名函数,经常作为赋值在等号右边,或者是参数使用

 1. 无参数的情况 : val/var 变量名 = { 操作的代码 }

2. 有参数的情况 val/var 变量名 : (参数的类型,参数类型,...) -> 返回值类型 = {参数1,参数2,... -> 操作参数的代码 } 可等价于 // 此种写法:即表达式的返回值类型会根据操作的代码自推导出来。 val/var 变量名 = { 参数1 : 类型,参数2 : 类型, ... -> 操作参数的代码 }

3. lambda表达式作为函数中的参数的时候,这里举一个例子: fun test(a : Int, 参数名 : (参数1 : 类型,参数2 : 类型, ... ) -> 表达式返回类型){ ... }。

 

区间:

   使用 in 运算符来检测某个数字是否在指定区间内

fun main(args: Array<String>) {
    val x = 5
    val y = 9
    if (x in 1..8) {
        println("x 在区间内")
    }
}

继承:

    如果一个类要被继承,可以用open进行修饰

扩展:

    Kotlin 可以对一个类的属性和方法进行扩展,扩展函数可以在已有类中添加新的方法,不会对原类做修改,扩展函数定义形式:

fun receiverType.functionName(params){
    body
}
  • receiverType:表示函数的接收者,也就是函数扩展的对象
  • functionName:扩展函数的名称
  • params:扩展函数的参数,可以为NULL

以下实例扩展 User 类 :

class User(var name:String)

/**扩展函数**/
fun User.Print(){
    print("用户名 $name")
}

fun main(arg:Array<String>){
    var user = User("Runoob")
    user.Print()
}

Getter & Setter:

    kotlin 在bean中直接写属性就行了,不用写getter 和setter

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值