Kotlin学习 PART 1:kotlin定义和目的
从事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定义和目的相关推荐
- Kotlin学习笔记-----函数的定义
函数定义 kotlin的函数其实就是java中的方法, 名字不一样, 定义方式和java中也类似, 函数名(方法名), 参数, 返回值 区别在于, kotlin的函数定义需要加上fun, 这里和jav ...
- Kotlin学习九:Kotlin中的“==”和“===”
说明 在java中我们经常遇到的面试问题两个String的''和'equals'比较的结果,这就是考验大家对String关于''和'equals'的理解.在kotlin中出现了一种=的比较两个对象的运 ...
- Kotlin学习之ListView
Kotlin学习之ListView Kotlin学习之ListView 前言 一.创建xml 二.创建ListView的adapter 三.在mainactivity中设置listview的adapt ...
- 学习Kotlin(一)为什么使用Kotlin
推荐阅读: 学习Kotlin(一)为什么使用Kotlin 学习Kotlin(二)基本语法 学习Kotlin(三)类和接口 学习Kotlin(四)对象与泛型 学习Kotlin(五)函数与Lambda表达 ...
- Kotlin学习笔记20 阶段复习2
参考链接 示例来自bilibili Kotlin语言深入解析 张龙老师的视频 lambda表达式 内联函数 Kotlin学习笔记 第三章 函数 高阶函数 lambda表达式 内联函数_积跬步 至千里- ...
- Android Kotlin学习笔记(一)—— Kotlin Koans
文章目录 题记 1.资料阅读 2.辅助插件 3.习题演练 3.1 Introduction 1.Hello world 2.Java to Kotlin conversion 3.Named argu ...
- 为什么推荐 Java 开发人员都学习并使用 Kotlin?
我使用 Java 已经有很长的时间了,工作中的使用有15年.如果算上在学校的时间的话,那就更长了.Java 的一个很大的优势是平台的开放性.这得益于 Java 字节代码和虚拟机的存在.由于 Java ...
- android studio val,Kotlin学习笔记之const val与val
const的使用 const 必须修饰val const 只允许在top-level级别和object中声明,使用方式如下: const val THOUSAND = 1000 object myOb ...
- Kotlin 学习笔记(八)—— Kotlin类与对象之接口
Kotlin 学习笔记(八)-- Kotlin类与对象之接口 Kotlin学习笔记系列教程 Kotlin 学习笔记(一)-- 概述.学习曲线.开发工具.参考资料 Kotlin 学习笔记(二)-- 基础 ...
- Kotlin学习笔记(3)- 语法
系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步!kotlin学习笔记系列首发简书和CSDN Kotlin学习笔记(1)- 环 ...
最新文章
- 第十六 届全国大学生智能汽车竞赛 讯飞创意组 全国 选拔赛 竞赛规则
- nodejs npm常用命令
- 封条格式用word怎么打_大门封条格式用word怎么打
- Python dataframe列拆分多行与统计
- 【2017年第2期】专题:大数据管理与分析
- 不等号属于不等式吗_初中数学:关于解不等式应用题的难点突破策略,用了就能拿高分...
- 按键精灵saystring无法使用的几种解决方案
- 互联网架构设计漫谈 (5)-搞清SpringCloud
- 11_条件随机场CRF1_统计学习方法
- [Ext JS 4] Extjs 图表 Legend(图例)的分行与分列显示
- 典型相关分析(CCA)及其python实现
- Java 简单TCP文件传输
- java数组表示方法_Java中数组总结
- linux mysql 集群搭建_MySQL分布式集群搭建
- 1stopt(应用集锦)
- 新媒体推广之标题写作的4项原则+6大元素,爆款标题一招就够了! | 黎想
- html是编程语言表情包,语言编程表情包 - 语言编程微信表情包 - 语言编程QQ表情包 - 发表情 fabiaoqing.com...
- 跨月作废发票,红字冲红注意事项 如何整理上交发票
- 简述计算机用二进制的原因,简述计算机采用二进制的原因
- 《系统集成项目管理工程师》必背1-10题
热门文章
- oracle cols user_tab_columns,user_tab_cols和user_tab_columns的区别
- MySQL的datetime日期格式化,和Oracle的datetime日期格式化
- 让计算机自己写作文,写电脑的作文300字左右
- mysql单列索引和多列索引_mysql 单列索引与多列索引
- 小程序如何用data的数据控制页面展示_17. 教你零基础搭建小程序:小程序事件绑定(1)
- php时间函数 1天,PHP函数第20款:两个时间相差的天数SubTime,不满1天按1天算
- java个人所得税计算_java个人所得税计算器 | 学步园
- elasticsearch的多索引联合查询以及范围日期查询示例
- Linux权限管理(基本权限、默认权限、
- 初面蚂蚁金服,java微积分第三方计算包