android kotlin 学习笔记基础篇(一)

android kotlin 学习笔记基础篇(一)

一、基本类型

类型  长度   对应java类型
Double  64      double
Float   32      float
Long    64      long
Int     32      int
Short   16      short
Byte    8       byte

二、属性字段

1 声明一个string类型的属性name
eg:var name : String? = null;
其中 var表明该字段的字值为可变的,val表示不可变。
注:kotlin下声明属性必须初始化,除非是抽象属性
abstract var name : String;
这种情况下也是可以的哦。
2 声明一个有非空默认值的属性name
eg:var name : String = "tom"
像这种非空有值的赋值就不需要在String类型后加?。
其实这种情况可以更简单的写为:var name = "tom"
这两种方式是等价的。

三、类

1 创建一个无属性的People类
class Prople{

}

2 创建一个有属性的Prople类
class People{
    var name : String? = null
    var age : Int = 25
    var remark = "hello world"
}

3 创建一个有构造器的Prople类

    1)第一种构造方法:主构造方法
    class People(var name : String,var age : Int, var remark : String){}
    对,你没有看错,括号里的内容就是Prople类的构造方法。其实这里只是把constructor省略了,它的完整形式应该是这样的:
    class People constructor(var name : String,var age : Int, var remark : String){}
    当然这只是其中一种构造方法的声明方式,这种方式声明的构造方法叫主构造方法。构造方法里的参数就是类里的属性。

    2)第二种构造方法:主构造方法
    class People(name : String, age : Int, remark : String){
           val name = name;
           val age = age;
           val remark = remark;
    }
    其实第二种构造方法也是主构造方法,只是属性的声明放在了类体里。

    3)第三种构造方法:次构造方法
       class People(name : String, age : Int, remark : String) {
           var name = name;
           var age = age;
           var remark = remark;

           constructor(name : String,parent : People) : this(name,0,""){
               parent.name = name;
               parent.age = age;
               parent.remark = remark;
           }
       }
       在People类里声明三个属性,同时主构造方法传入这三个参数,并且声明只有一个name参数的次构造方法。Kotlin语法要求,次构造方法必须委托给主构造函数去初始化成员属性,委托方式即上面代码的this部分:this(name,0,"")。

4 继承
    java里的继承关键字是extends。这里又帮同志们省略了一个单词。假如我们想新建个Strudent类,使其继承People类,可以通过如下方式:
    1) 首先需声明People为open
    open class People{
    }
    2) 继承People
    class Student : People{

    }
与open对应的修饰词是final,open表示可继承的,final则相反-禁止继承。

5 对象生成
对象的生成在kotlin里可没有new关键字。kotlin的对象生成是这个样子的:
var prople = People("tom",25)
直接类名,括号,传入构造方法里要求的参数即可。
还是比较简洁的。

四、可见性修饰域

上面代码始终没有出现publicprivate等修饰域,这里是准备统一描述下。
kotlin的可见性修饰域有4个:privateprotectedinternalpublic。属性、方法或类不声明的话默认是public.
 1)函数、属性和类、对象和接口可以在顶层声明,即直接在包内:
    函数、属性和类、对象和接口的作用范围:
    如果你不指定任何可见性修饰符,默认为 public,这意味着你的声明 将随处可见;
    如果你声明为 private,它只会在声明它的文件内可见;
    如果你声明为 internal,它会在相同模块内随处可见;
    protected 不适用于顶层声明。
  2)对于类内部声明的成员:
    private 意味着只在这个类内部(包含其所有成员)可见;
    protected—— 和 private一样 + 在子类中可见。
    internal —— 能见到类声明的 本模块内 的任何客户端都可见其 internal 成员;
    public —— 能见到类声明的任何客户端都可见其 public 成员。

  注:kotlin的外部类无法访问内部类的private成员。

五、函数(方法)

Kotlin 中的函数使用 fun 关键字声明.我们先来一个最简单的无参无返回对象的方法:
fun sayHello(){
    println("hello world")
}
调用:sayHello()

有参数无返回值方法:
fun sayHello(name : String){
    var content = name + ":hello world";
    println(content)
 }
 调用:sayHello("tom")

 有参数有返回值方法:
fun sayHello(time : Int):String{
    var content = StringBuffer().append("I have said ").append(time).append(" times!")
    return content.toString()
}
调用:var content = sayHello(100)

六、控制语句

1.if语句
基本用法还是跟c、java差不多的
if(a > b){
    ...
}else{
    ...
}
但是比java牛叉一点的是它不仅仅是一个控制语句,它还可以作为一个表达式,是不是很厉害?就问你怕不怕?!
eg:求a和b的最大值
    var max = if(a>b) a else b


2 when
when相当于java里的switch。kotlin里没有switch了,改用了when。用法如下:
when(a){
    0 -> {
        ...
    }
    1 -> {
        ...
    }
    else ->{
        ...
    }
}
这里的else块明显就相当于java的default了,当其他分支条件不满足的事情,就会进入else的方法里。
另外when也可以作为表达式使用
eg:
    fun testWhen(a : Int){
            var text = when(a){
                0 -> "i'm 0"
                else-> "i'm else"
            }
            println(text)
     }
     testWhen(0)
     结果输出的是0选项的字符串

3 for循环
先吃一个遍历集合对象的栗子吧
fun testFor(list : Collection<Menu>){
        for (menu in list){
            println(menu.title)
        }
 }
 结果:依次输出了集合中menu的title属性。

还可以通过索引去遍历集合或数组中的元素:
 fun testFor(list : MutableList<Menu>){
        for (i in list.indices){
            println(list[i].title)
        }
    }
 来,再看个更洋气的:
  fun testFor(list : MutableList<Menu>){
         for ((i,value) in list.withIndex()){
              println("position:$i,value:$value")
          }
   }
通过withIndex方法直接遍历出该对象在集合中的index和其对象本身。


4 while和do while循环
到了while这里终于回归正常了,用法跟java一样
while (x > 0) {
    ...
}

do {
     var a = getValue()
     println(a)
    }while (a < 10)// a 在此处可见
do while循环这里就又多了个只是点,在do块里声明的变量可以在while里使用。

未完待续…

学习地址

https://www.kotlincn.net/docs/reference/

kotlin demo演示(持续更新哦)

https://github.com/cnliwy/Android-Kotlin
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值