Kotlin:学习笔记一

1.引言

从今天开始在以后的2个月内熟悉使用kotlin,快速的将kotlin用于实战项目中。以Mvp+Dagger+Okgo+Rxjava+Kotlin的方式来开发以后的app。

2.正题

kotlin中一切皆是对象。数值,字符串,布尔等都是属于内置对象。字节大小如下:


image.png

在程序中使用这些内置对象,就像在java中使用一样的。只不过kotlin里面对数值,字符串等进行自动装箱。例如:

image.png

s的类型返回的Int。
同理缓存"123",也是一样,将“123”自动装箱成String.
注意:字符不能当成数字,必须得调用toInt() 转换下

kotlin中小类型的变量不能隐式转换成大类型的。例如java中:

 public void t(){
        int a=12;
        double b=a;//小类型隐式转换成大类型
    }

但是在kotlin中

fun  test(){
  var i:Int=123
  var d:Double=i;//编译出错 正确姿势i.toDouble()
}

kotlin运算

kotlin提供的语法糖真的是多。
这是完整的位运算列表(只用于 Int 和 Long):

shl(bits) – 有符号左移 (Java 的 <<)
shr(bits) – 有符号右移 (Java 的 >>)
ushr(bits) – 无符号右移 (Java 的 >>>)
and(bits) – 位与
or(bits) – 位或
xor(bits) – 位异或
inv() – 位非

浮点比较

区间实例以及区间检测:a..b、 x in a..b、 x !in a..b

    fun test() {
        var s = 16;
        val x = (s shl 1)//32
        if (x !in 1..33){
        }
    }

kotlin 数组 Array<T>

  • 生成一个带值的数据,通过arrayOf函数 。例如 arrays= arrayOf("1","2","3")
  • 生成一个没得数值,只有大小的数据.通过arrayOfNulls函数,例如:var a: Array<String?> = arrayOfNulls<String>(5);

kotlin for循环

  • for (item in collection) print(item) item为collection中的每个数值,不是下标
  • i in array.indices 通过下标i 来循环遍历array,例如:
  for (n in arrays!!.indices){
       Log.d("4577155", arrays!![n]);
  }
  • 区间中的循环for(item in a..b).例如:

kotlin 返回和跳转

kotlin中break ,continue,return 与java的break ,continue,return用法基本一致。唯一不同的是kotlin给 return,break ,continue增加了“标签功能”。例如return得标签:

return标签
java public fun test(){
        arrays!!.reduce reduce@{ s, s1 ->
            return@reduce s+s1    //reduce操作符要求返回一个String
        }
        return   //要求返回一个Unit
    }

去掉 标签就会编译出错,提示返回值是Unit 而不是String。说明kotlin并不能根据return 返回的结果,对应到 对应的方法。

Break 和 Continue 标签

在 Kotlin 中任何表达式都可以用标签(label)来标记。 标签的格式为标识符后跟 @ 符号,例如:abc@、fooBar@都是有效的标签。 要为一个表达式加标签,我们只要在其前加标签即可。例如:

 public fun test1() {
        wxy@for (a in 1..10) {
            wxy1@for (b in 5..10) {
                if (a==b){
                    break@wxy
                }
            }
        }
    }

Kotlin if表达式

  • kotlin拥有java中if/else得用法,除此之外还有if作为代码块的使用,将if的结果当成结果返回
   var max1 = if (a < b) {
      b
   } else {
      a
  }
  • if还可以引入区间判断方法,例如判断 String 是不是在字符串数组中,可以如下所示进行判断:

        if (x in arrays!!){
            
        }

Kotlin when表达式

kotlin中没得switch控制语句,取而代之的是when表达式.

 when (a) {
            1 -> {
                System.out.println("1")
            }
            2 -> {
                System.out.println("2")
            }
            else -> {
                System.out.println("3")
            }
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容

  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,201评论 9 118
  • 本文主要官方文档的翻译:https://kotlinlang.org/docs/reference/basic-t...
    心田祭思阅读 1,220评论 3 0
  • 在 Kotlin 中,所有的东西都是对象,这就意味着我们可以调用任何变量的成员函数和属性。一些类型是内建的,它们的...
    Jancd阅读 331评论 0 0
  • A校校长室内,林皓坐在校长对面。 “王校长,我们想找些学生问几个问题。” “林警官,我之前就说过,我不想让我的学生...
    眼睛娘阅读 386评论 0 0
  • 前几篇我们讲了项目目标设定、工作界面建立等等。这些前置的准备工作是影响项目成败的关键。这一篇开始正式进入项目的流程...
    靳顺隆阅读 1,726评论 0 50