您的位置:首页 > 其它

Kotlin学习日记(一)Kotlin介绍与数据类型

2018-03-12 17:18 155 查看
之前就听说Kotlin的一些新的特性,一直感到好奇,最近打算学习一下,看看这门语言到底有什么神奇的地方和存在哪些坑。
入门之前怎么都得了解一下这东西是干什么的、有什么用,要不学来干嘛(๑•ᴗ•๑)
所以先了解一下这门语言的用途:
Kotlin的用途
Kotlin Script。可以用来写Kotlin脚本,Gradle3.0开始部分支持Kotlin脚本,尚在完善中。
Java虚拟机应用:①Web应用,Kotlin完美支持 ②JavaFx,Kotlin完美支持
前端开发。在1.1版本正式支持Kotlin-JavaScript
Android开发。
Native程序。直接将Kotlin代码编译成机器码,不依赖Jvm,支持与C代码交互,目前功能有限
目前看来Kotlin能干的事真不少,也能称它为全栈语言,我想在未来这门语言完善了之后能更加出色。

详细的语法规则、使用及介绍可以浏览Kotlin官方文档,我这里先附上一个Kotlin中文文档:
http://www.kotlindoc.cn

这里我只记录一些需要注意的语法规则、常用的语法与知识点的概括和容易进坑的地方O(∩_∩)O。
Kotlin的特点
更易于表现
安全性更高
是函数式的,是面向对象的语言  
它可以拓展函数,可以拓展类的更多特性,即使我们没有权限去访问这个类中的代码
有高度相互操作性:kotlin和java代码可以相互调用,相互操作,可以实现混编
更简洁,最直观的是一行代码尾部可以不写‘;’了

Kotlin的基本数据类型
在 Kotlin 中,所有变量的成员方法和属性都是一个对象。一些类型是内建的,它们的实现是优化过的,但对用户来说它们就像普通的类一样。
举个例子:
一些基本类型integer,boolean,float仍然存在 但都是作为对象存在的 和java里面基本相似但是转换的时候有所不同在java中
int intV = 10;long longV = intv;
在kotlin中 需要明确类型 并不支持隐式转换 比较严格var intV:Int = 10var longV:Long = intV.toLong()
Kotlin中的字符串
String模板
//字符串可以包含模板表达式,即可求值的代码片段,并将其结果连接到字符串中。
//一个模板表达式由一个 $ 和简单名称组成。
val i = 10
val s = "i = $i" // 结果为 "i = 10"
//一个模板表达式由一个$ 和大括号括起来的表达式组成。
val s = "abc"
val str = "$s.length is ${s.length}" // 结果为 "abc.length is 3"
//如果想输出$ ,需要怎么写。
${'$'}29.18

//三引号的String模板 """

var msg:String = "666"
var str:String = """
abc
///
$$
$msg
"""
println(str)
kotlin智能类型转换 普通转换 类似java类型转换val sub:SubClass = parent as SubClass 安全的类型转换 转换失败也不抛异常val sub:SubClass? = parent as? SubClass

字符串的新用法var str : String = ”Example“var c = s[2] //是字符‘a’//迭代strfor(c in s){print(c)}

空安全符:?val notNull : String = null 编译不通过val notNull :STring? = null 指定notNUll可以是空的notNull?.length() 在notNull对象不为空的情况下才可以打印
知道一个字符串一定不为空 需要直接调用一些方法的时候 编译器不通过
4000
这是使用‘!!’来告诉编译器可以执行
使用Elvis操作符给一个值是null的情况下的替代值var value = notNull? : "empty"
比较符号在java中比较两个字符串的值是否一样 需要equal符号String str = “ABC”;String strOther = “ABC”;if(str == strOther) 一定输出flase
在kotlin中var str:String = “ABC”var strOther:String = “ABC”if(str == strOther)输入true在kotlin中 == 相当于 equal如果比较对象地址怎么办?在kotlin中使用===来比较对象地址
变量于常量变量 var 可以创建之后改变他的状态常量 val 创建后不能改变他的状态 类似于final关键字 但是有区别 它的线程是安全的 可以减少代码出错的可能性在kotlin中的一个重要的概念:尽可能的使用val 最大的原因是省内存在定义变量时需要灵活运用var 与val,在数据类中var与val之间的区别很大 具体是这里不过都的说明
var intVAlue = 100val HELLO = "hello"与java不同凡的是编译器认识的类型一律不用写
区间(Ranges)java里面没有的概念 表示一个值的范围 概念比较简单 看文档吧 n(*≧▽≦*)n
数组(Array)实际上跟java里面的数组区别还是挺大的 使用上差不多
val arrayOfInt: IntArray = intArrayOf(1,3,5,7)
val arrayOfChar: CharArray = charArrayOf('H', 'e','l','l','o','W','o','r','l','d')
val arrayOfString: Array<String> = arrayOf("我", "是", "码农")
arrayOfInt[0] = arrayOfInt[1] + arrayOfInt[2]
详细的东西看文档吧
后记:由于也是刚学习这门语言,可能会有错的地方,这篇文章如果有人看的话(并不会有ヽ(*。>Д<)o゜),请见谅,能帮我指正就更好了。
写的不是很详细,只是用于学过之后的总结复习,更具体的一些东西在Kotlin文档上有的详细的说明,详细的看文档就好。我这里记录的东西有些文档里面不一定会有,可能有些东西忘记了方便重新查阅。
感谢其他Kotlin大神的博客帮我查漏补缺!
这里附上一个可以用于练习Kotlin的连接:
https://try.kotlinlang.org/#/Examples/Hello,%20world!/Simplest%20version/Simplest%20version.kt  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Kotlin开发