序章
在2017年五月的时候,Google宣布Kotlin成为Android开发的官方语言,虽然有那么一丝钦定的意思,不过使用Kotlin进行开发的好处与迫切性毋庸置疑,包括语言简洁(懒惰症福音)、空指针异常(马虎眼福音)、方法扩展、函数式编程等,这一方面的的博客,在网上早已泛滥成灾,在此不做赘述,有兴趣的自行找资料了解。
本系列文章,旨在为想学习Kotlin的同学全面而详细地讲解Kotlin语言,以实例展示,从基础出发,包括数据类型,语法,面相对象,到比较高端的知识,包括高阶函数,协程,DSL,反射,并在间中穿插与Java异同的比较。
这一系列的文章,不仅仅适用于Android开发的同学,因为Kotlin是一门全栈语言,且在文章中的代码实例都是用IntelliJ(实际上跟AS没什么大区别)写的。当然,有一定的Java基础是坠吼滴。
看到这里可能有同学想问了,你写这些,图啥呀?有啥好处啊?emm..只是想对过去学习的知识做一个小小总结并顺便分享一下而已。要是写的不好,你来打我呀。
戏精完毕,开讲!
本篇文章主要对Kotlin进行简单介绍,以及讲解Kotlin的基本数据类型,字符串等,对Java有比较深厚基础的同学可以快速阅读,只需要注意其中区别于Java的部分,包括字符串比较,字符串模板等。
Kotlin简介
Kotlin是一门可以运行在Java虚拟机、Android、浏览器上的静态语言,与Java100%兼容。Kotlin除了使用自己的标准库之外,大多仍然使用经典的Java集合框架。
上面的话意味着什么呢?只要你学了Kotlin,前端,后端,客户端,你啥都能做,你有了做全栈的基础。
Kotlin工程的建立
首先打开IntelliJ,在下图的Configure设置中选择Plugins,下载安装好Kotlin插件
接着选择create new project,在弹出来的窗口中左侧选择Gradle,右侧勾选Kotlin和Java,点击Next,GroupId等随便填写,创建出来一个Kotlin工程,目录大概如下:
可以选择New Directory创建图中的src/mian/Kotlin文件夹,并在其中通过New File创建Kotlin文件。
基本数据类型
Boolean基本类型
Kotlin中的Boolean类型在大多数情况下相当于Java基本类型中的boolean,只有极少数情况下才会装箱成为Java 中的装箱类型Boolean。
val mBoolean:Boolean = true
val nBoolean:Boolean = false
Number基本类型
主要包括整型和浮点型,与Java中没有大的差别
浮点型:
Double 位宽 : 64
Float 位宽 : 32
整型:
Long 位宽 : 64
Int 位宽 :32
Short 位宽 : 16
字节:
Byte 位宽 : 16
在Kotlin中,并不区分普通类型和装箱类型,会根据情况自动转换类型
val mInt:Int = 1
val mMaxInt:Int = Int.MAX_VALUE //2的31次方减一
val mMinInt:Int = Int.MIN_VALUE //-2的31次方
需要注意的是,Float.MIN_VALUE指的是Float类型的最小非零正数,Double同理
/**
* A constant holding the smallest *positive* nonzero value of Float.
*/
public val MIN_VALUE: Float
所以,想要得到字面意义上的Float.MIN_VALUE,可以用 -Float.MAX_VALUE
Char基本类型
Char字符对应Java中的Character,占两个字节,表示一个16位的Unicode字符,使用单引号‘’引起来,比如‘a’,‘0’,‘\n’等。
以及一些特殊的转义字符:
\t 制表符
\b 光标后退一个字符
\n 回车符
' 单引号
" 双引号
\ 反斜杠
$ 美元符号,Kotlin支持美元符号开头的字符串模板(参考C++)
字符串模板使用示例:
val mInt:Int = 1
val mMaxInt:Int = Int.MAX_VALUE //2的31次方减一
val mMinInt:Int = Int.MIN_VALUE //-2的31次方
fun main(args: Array) {
println("$mMinInt + $mMaxInt = ${mMinInt + mMaxInt}")
}
输出 : -2147483648 + 2147483647 = -1
同样的需求,在Java中表达要比Kotlin繁琐的多。
还有一点需要注意的是:
在Kotlin中,基本类型不可隐式转化,
比如在Java中:int i = 5; long m = i ;
这样表达式合法的。
但在Kotlin中,类似的转化比较严格:
val mInt:Int = 5
val mLong:Long = mInt.toLong()
这样才能进行编译。
字符串
字符串其实就是“一串”Char,使用双引号“”引起来,比如:
val mString:String = "HelloWorld"
需要注意的是:
① 字符串的比较,a == b表示比较内容,相当于Java中的equals,使用a === b表示比较对象是否相同。
val mString:String = "HelloWorld"
val nString:String = String(charArrayOf('H','e','l','l','o','W','o','r','l','d'))
fun main(args: Array) {
println(mString == nString)
println(mString === nString)
}
输出结果 : true false
②在kotlin中使用三个双引号表示原始字符串,原始字符串中支持字符串模板,不支持字符串的转义,如果要打出转义字符,添加空格
val tString:String = """
\t
\b
\\\\\$$$ mInt
"""
fun main(args: Array) {
println(tString)
}
输出结果:
\t
\b
\\\\\$$$ mInt
③支持字符串模板
比如 定义 : val name:String = "陈先生"
那么输出 "Hello ,$name" 结果就是 "Hello,陈先生"
本篇文章对基础知识的介绍到这里告一段落,下一篇文章将介绍 类与对象,数组与区间,空类型与智能类型转换等。(Kotlin类与对象,数组与区间,类型转换)
如果对文章有什么疑问或者发现了什么错误,欢迎留言一起探讨。