从事android开发转眼间已经两年多了呢,一直用的java开发,早就想试试用kotlin进行开发,稍微瞄一眼 = =,感觉真的,某人说的还真的有点道理,kotlin比起你们用的那些垃圾语言要高级的多。(有点“不是我针对谁,在座的各位都是垃圾!”的感觉)

废话不多说,开始战斗!

说说学习方法吧,个人不怎么信网上的教程,节奏慢,技术太落后,鱼龙混杂。感觉还是自己看书来的效率高。并且这里,我也只是记录一些思维的零碎的片段,并没有像书一样有着完整的条分缕析,只是单纯为了记忆的需求,不喜勿喷。参考书:《kotlin实战》,顺便普及一下个人选书的原则,太厚不要,国人编的不要,封面印成国内应试课本或者参考书一样的不要。

1.Kotlin在线playground site:http://try.kotl.lin

2.Kotlin和java一样是一种静态类型的编程语言。动态类型的编程语言,会减少代码量并增加创建数据结构的灵活性,缺点是在编译器不能发现像名字拼写错误这样的问题,继而导致运行时的错误。

***3.函数式编程风格:可以轻易地将这段逻辑中公共的部分提取到一个函数中,并将其他不同的部分作为参数传递给他。

4.Kotlin团队打造的Anko给许多AndroidApi添加了Kotlin友好的适配器,进一步提升了Android的开发体验。

5.在Kotlin中,我们努力的保证你写的代码都具有实际的意义,而不是仅仅为了满足代码结构的需要。许多标准的Java样板代码,例如getter,setter以及将构造方法的参数赋值给字段的逻辑,在Kotlin中都是隐式的,并不会使你的源代码变得混乱。

6.INTELLIJ IDEA 小贴士Intellij IDEA提供了在两种函数风格直接转换的intention actions(意向动作)和“convert to expression body”(转换成表达式函数体)和“Convert to block body”(转化成代码块函数体)。

7.val,不可变引用。使用val声明的变量不能在初始化之后再次赋值。它对应的是Java的final变量。

var,可变引用。这种变量的值可以被改变。这种声明对应的是普通(非final)的java变量。

即使var关键字允许变量改变自己的值,但他的类型却是改变不了的。

e.g.var answer = 42

answer = "no answer"

8.kotlin源码布局:目录和包

如果其他文件中定义的声明也有相同的包,这个文件可以直接使用它们;如果包不相同,则需要导入它们。

9.枚举类的使用

enum class Color(var r:Int, val g:Int, val b:Int) {

RED(255, 0, 0), ORANGE(255, 165, 0),
    YELLOW(255,255,0), GREEN(0,255,255), BLUE(0,0,255),
    INDIGO(75, 0, 130),VIOLET(238,130,238);
    
    fun rgb() = (r*256+g)*256 +b
}

10.使用when处理枚举类

fun getMnemonic(color:Color) =

when(color) {

Color.RED ->"Richard"

Color.ORANGE->"Of"

Color.Yellow->"York"

}

当遇到多个值返回的是同一个结构的情况,这样表示

Color.ORANGE, Color.Yellow->"York"

***在when结构中允许使用任意对象,不像java中只允许常量。

11.使用不带参数的“when”

代码可读性会变差,但这是为了达到更好性能而必须付出的代价。

fun mixOptimized(c1:Color,c2:Color) =

when{

(c1 == RED && c2 == YELLOW) ||

(c1 == YELLOW && c2 == RED)->ORANGE

else -> throw Exception("Dirty color")

}

**简单地来说就是将条件从原来的变量变成各种情况的表达式,而不是仅仅对变量的各种情况进行判定,相比Java要更加灵活

12.合并类型检查和转换

interface Expr

class Num(val value:Int) :Expr

class Sum(val left: Expr, val right:Expr):Expr

fun eval(e :Expr):Int{

if(e is Num) {

val n = e as Num

return n.value

}

if(e is Sum) {

return eval(e.right)+eval(e.left)

}

throw IllegalArgumentException("Unknown expression")

}

**相当于对抽象的概念的进一步拓展。

未完待续。。。

Kotlin学习 PART 1:kotlin定义和目的相关推荐

  1. Kotlin学习笔记-----函数的定义

    函数定义 kotlin的函数其实就是java中的方法, 名字不一样, 定义方式和java中也类似, 函数名(方法名), 参数, 返回值 区别在于, kotlin的函数定义需要加上fun, 这里和jav ...

  2. Kotlin学习九:Kotlin中的“==”和“===”

    说明 在java中我们经常遇到的面试问题两个String的''和'equals'比较的结果,这就是考验大家对String关于''和'equals'的理解.在kotlin中出现了一种=的比较两个对象的运 ...

  3. Kotlin学习之ListView

    Kotlin学习之ListView Kotlin学习之ListView 前言 一.创建xml 二.创建ListView的adapter 三.在mainactivity中设置listview的adapt ...

  4. 学习Kotlin(一)为什么使用Kotlin

    推荐阅读: 学习Kotlin(一)为什么使用Kotlin 学习Kotlin(二)基本语法 学习Kotlin(三)类和接口 学习Kotlin(四)对象与泛型 学习Kotlin(五)函数与Lambda表达 ...

  5. Kotlin学习笔记20 阶段复习2

    参考链接 示例来自bilibili Kotlin语言深入解析 张龙老师的视频 lambda表达式 内联函数 Kotlin学习笔记 第三章 函数 高阶函数 lambda表达式 内联函数_积跬步 至千里- ...

  6. Android Kotlin学习笔记(一)—— Kotlin Koans

    文章目录 题记 1.资料阅读 2.辅助插件 3.习题演练 3.1 Introduction 1.Hello world 2.Java to Kotlin conversion 3.Named argu ...

  7. 为什么推荐 Java 开发人员都学习并使用 Kotlin?

    我使用 Java 已经有很长的时间了,工作中的使用有15年.如果算上在学校的时间的话,那就更长了.Java 的一个很大的优势是平台的开放性.这得益于 Java 字节代码和虚拟机的存在.由于 Java ...

  8. android studio val,Kotlin学习笔记之const val与val

    const的使用 const 必须修饰val const 只允许在top-level级别和object中声明,使用方式如下: const val THOUSAND = 1000 object myOb ...

  9. Kotlin 学习笔记(八)—— Kotlin类与对象之接口

    Kotlin 学习笔记(八)-- Kotlin类与对象之接口 Kotlin学习笔记系列教程 Kotlin 学习笔记(一)-- 概述.学习曲线.开发工具.参考资料 Kotlin 学习笔记(二)-- 基础 ...

  10. Kotlin学习笔记(3)- 语法

    系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...

最新文章

  1. 第十六 届全国大学生智能汽车竞赛 讯飞创意组 全国 选拔赛 竞赛规则
  2. nodejs npm常用命令
  3. 封条格式用word怎么打_大门封条格式用word怎么打
  4. Python dataframe列拆分多行与统计
  5. 【2017年第2期】专题:大数据管理与分析
  6. 不等号属于不等式吗_初中数学:关于解不等式应用题的难点突破策略,用了就能拿高分...
  7. 按键精灵saystring无法使用的几种解决方案
  8. 互联网架构设计漫谈 (5)-搞清SpringCloud
  9. 11_条件随机场CRF1_统计学习方法
  10. [Ext JS 4] Extjs 图表 Legend(图例)的分行与分列显示
  11. 典型相关分析(CCA)及其python实现
  12. Java 简单TCP文件传输
  13. java数组表示方法_Java中数组总结
  14. linux mysql 集群搭建_MySQL分布式集群搭建
  15. 1stopt(应用集锦)
  16. 新媒体推广之标题写作的4项原则+6大元素,爆款标题一招就够了! | 黎想
  17. html是编程语言表情包,语言编程表情包 - 语言编程微信表情包 - 语言编程QQ表情包 - 发表情 fabiaoqing.com...
  18. 跨月作废发票,红字冲红注意事项 如何整理上交发票
  19. 简述计算机用二进制的原因,简述计算机采用二进制的原因
  20. 《系统集成项目管理工程师》必背1-10题

热门文章

  1. oracle cols user_tab_columns,user_tab_cols和user_tab_columns的区别
  2. MySQL的datetime日期格式化,和Oracle的datetime日期格式化
  3. 让计算机自己写作文,写电脑的作文300字左右
  4. mysql单列索引和多列索引_mysql 单列索引与多列索引
  5. 小程序如何用data的数据控制页面展示_17. 教你零基础搭建小程序:小程序事件绑定(1)
  6. php时间函数 1天,PHP函数第20款:两个时间相差的天数SubTime,不满1天按1天算
  7. java个人所得税计算_java个人所得税计算器 | 学步园
  8. elasticsearch的多索引联合查询以及范围日期查询示例
  9. Linux权限管理(基本权限、默认权限、
  10. 初面蚂蚁金服,java微积分第三方计算包