从事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. VC6生成随机浮点数、C++11的random头文件以及Dev C++支持C++11
  2. 如何在python中构造想要的时间戳参数
  3. vs2010 常见问题处理
  4. 杂谈——杭州考驾照历程
  5. twisted系列教程十二–为server 增加一个service
  6. 07:有趣的跳跃【一维数组】
  7. 全军出击机器人进房间_科沃斯扫地机器人T8 POWER/MAX开箱测评推荐
  8. asp.net gridview 模板列 弹出窗口编辑_Mac桌面多窗口整理工具Moom,使用教程
  9. Java设计模式-装饰者设计模式
  10. VC-应用程序正常初始化失败-0xc0150002
  11. zheng win 环境搭建
  12. 2021-08-05 得帆技术培训Linux作业
  13. 【关于四足机器人那些事】足端轨迹规划-八次多项式轨迹
  14. 大数据实际案例系列一
  15. 【剑桥摄影协会】色彩管理之色彩空间
  16. hdf5 python_HDF5 文件及Python模块之h5py
  17. 做设计师要用到的工具软件
  18. 李嘉诚的区块链应用投资哲学
  19. android系统广播汇总
  20. 从“平板之父”到连续创业者, Jerry Kaplan传奇来袭

热门文章

  1. js 生成二维码_QRcode.js 生成二维码
  2. linux squid日志滚动,linux squid 日志
  3. 理解Git的设计思想,详解git文件夹,以及详解add、commit、push,fetch、pull、merge指令
  4. Redis可以登录,但有些值不能获取或者设置,PING命令也用不了
  5. java ee s2sh复习题_JavaEESSH框架答案试题题目及答案,期末考试题库,章节测验答案...
  6. 简单android音乐播放器课程设计,android音乐播放器课程设计报告.doc
  7. html显示本地磁盘 图片,手把手教你为本地磁盘增添背景图片(图解)
  8. python2.0教程_django2.0入门教程第一节
  9. 口碑好的mysql数据监控平台_构建狂拽炫酷屌的 MySQL 监控平台
  10. docker日志存放路径