Kotlin 入门学习教程总结

简介:

最近公司开展了一个新项目,自己考量了一下决定用kotlin来写.那么分享一下我的学习历程,希望对您有所帮助
  • implementation "org.jetbrains.anko:anko:0.10.8" anko是使用kt语言来编写的一个android增强库,封装了很多东西,使我们的操作更加简化.
  • kt有自动映射功能,xml写了id,直接可以在kt中使用,无需findViewByid,直接把控件id当作对象使用即可.

数据类型

A:数据类型跟java一样(写法不一样)分别都有:
Int Long Folat Double Boolean Char String
转换的话--> i.toInt...其他方法一样
B:数组(数组其实也是大同小异,只不过String的时候有一些区别)
IntArray LongArray FolatArray DoubleArray BooleanArray CharArray
使用: var long:LongArray =longArrayOf(1,2,3)
使用StringArray: var string:Array<String> = arrayOf("哈","哈","大","笑")
C:集合的话跟Java都一些不一样:kt分为只读跟可变,就跟val跟var一样(前面是只读,后面是可变)
Set MutableSet List MutableList Map MutableMap
使用: var list:MutableList = listOf("1","2","3","4")
Map使用有一些不一样 (2种方式初始化,个人喜欢第一种,简单清晰)

val mapList: Map<String, String> = mapOf(Pair("1", "王涛"), Pair("2", "王飞"), Pair("3", "王伟"))`
`val mapList1: Map<String, String> = mapOf("1" to "王涛", "2" to "王飞", "3" to "王伟")

D:循环: for-in forEach 迭代器遍历(非常不喜欢)

  for (item in mapList) {
               string = "内容: ${item.key} --- ${item.value}"
               toast(string)
           }
           mapList.forEach { key, value ->
                string = "${string} 大家:${key} -- ${value}"
      }

控制语句

A:条件分支:if-else基本没改动 swtich defult 改成 when else

     tv.text = if(a == 1){"a 等等于 1"} else {"a 不等于 1"}
               tv.text = when(t.text){
                  "1" -> "2"
                  "2" -> "3"
                  else ->"成功了"
               }

B:等式判断: kt中String判断也可以使用 == .还有一种方式是 === 三个等号,自己去研究一下,是跟clone有关
C:is 和 in: instanceof == is (校验变量是否为某种类型)
in:java 中没有这个东西,他是判断数组或者集合中,存不存在此参数 (变量名 in 数组名)

D:条件循环: 比如从20-100循环偶数 恐怕之前的循环就做不到了.所以这边有条件循环

for(i in 10 until 22){ 这是10-20 包括10 但是不包括20} 
for(i in 20 downTo 10) { 循环递减 从20递减到10 其中20跟10都包括}
for(i in 10 .. 20 step 2){每次循环递增2,其中包括10跟20,可以把..改成until,这样就只包括10}

E:跳出多层循环: outside@ while(){....break@outside} outside可以随便起名字 重要的是@符号

 fun ss() {
        var i = 1
        outSide@  while (i<100000){
            if (i == 50){
                break@outSide
            }
        }
    }

F:swtich去掉了,改成了when,写法如下

      when (10) {
            1 -> 0
            2 -> 1
            else -> 2
        }

函数的基本用法

  • A:Java中使用@Override 表示改函数重载父类的方法,kt使用小写的 override 在同一行表达重载操作
  • B:Java中使用 public 表示该函数是公公方法,kt默认函数是公开,所以省略了public(省略不代表没有)
  • C:Java中使用 void 表示改函数没有返回参数,kt不存在关键字 void(这个是没有)
  • D:kt新增fun,类似于Java中的class
  • E:Java的参数格式是:(变量类型 变量名称 举例:String str) kt(变量名称:变量类型 举例:str:String)
  • F:kt引入了空安全机制,如果某个变量允许为空,就需要在变量类型后面加个? val string: String? = "123"
       over fun onCreate(...)
            fun getText(str:String,age:Int):String{
                    return string
            }   
       //这样就不用全部传入了 只需要传入age
            fun getText(age:String,str: String = "王涛", inte: Int = 2): String {
                    return "$str 第 $inte 次进入"
            }

可变参数

  • Java中是(String... args) kt中是(vararg args:String)
            fun getVarText(vararg other: String): String {
                var str = ""
                return str
            }

泛型函数

  • 上面都说传入基本类型的比如(int,String,Double...),在开中传入集合,数组等也是很有必要的
      fun <T> getListVararg(vararg other: T): String {
                var str = ""
                for (item in other) {
                    str = "$str 哈喽- $item \n"
                }
                return str
            }

内联函数
-必须这么写,将<T>改为<reified T:Number>,同时必须在fun前面添加关键字inline 他跟上面的泛型函数的区别是,不支持多个,并且可以返回 T 类型

        //这是Map
             inline fun <reified T : String> getTextMap(other: Map<T, T>): String {
                var str = ""
                for (item in other) {
                    str = "$str 哈喽- ${item.key} -- ${item.value} \n"
                }
                return str
            }
            //这是List (返回list<T> 范型函数没办法返回List<T>)
            inline fun <reified T : String> getTextList(other: List<T>): List<T> {
                return other
            }

简化函数

  • 我认为他就是一个递增循环(自己调用自己),适合54321这种方式来用简化函数
        //如果n==1, 输出的结果就是 5*4*3*2*1的结果
        fun factorial(n:Int):Int = if(n<1)n else n*factorial(n-1) 

同步java

在方法后面加入 @JvmOverloads constructor 这段代码 他就会给我去自动的同步java
companion object {} == static 同时{}里面可以方静态方法

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

推荐阅读更多精彩内容

  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,139评论 9 118
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,729评论 2 9
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,114评论 0 13
  • Google在今年的IO大会上宣布,将Android开发的官方语言更换为Kotlin,作为跟着Google玩儿An...
    蓝灰_q阅读 76,754评论 31 489
  • 又来了,令人不快的眼神和嘴角的笑意: “你连这个都不知道?” 我的视线停留在他脸上,语气陡然冷下来:“各自喜欢...
    bikkkke阅读 230评论 0 0