Kotlin修仙之旅:基础知识(一)

序章

在2017年五月的时候,Google宣布Kotlin成为Android开发的官方语言,虽然有那么一丝钦定的意思,不过使用Kotlin进行开发的好处与迫切性毋庸置疑,包括语言简洁(懒惰症福音)、空指针异常(马虎眼福音)、方法扩展、函数式编程等,这一方面的的博客,在网上早已泛滥成灾,在此不做赘述,有兴趣的自行找资料了解。

本系列文章,旨在为想学习Kotlin的同学全面而详细地讲解Kotlin语言,以实例展示,从基础出发,包括数据类型,语法,面相对象,到比较高端的知识,包括高阶函数,协程,DSL,反射,并在间中穿插与Java异同的比较。

这一系列的文章,不仅仅适用于Android开发的同学,因为Kotlin是一门全栈语言,且在文章中的代码实例都是用IntelliJ(实际上跟AS没什么大区别)写的。当然,有一定的Java基础是坠吼滴。

看到这里可能有同学想问了,你写这些,图啥呀?有啥好处啊?emm..只是想对过去学习的知识做一个小小总结并顺便分享一下而已。要是写的不好,你来打我呀。

Kotlin修仙之旅:基础知识(一)_第1张图片
来打我呀

戏精完毕,开讲!

本篇文章主要对Kotlin进行简单介绍,以及讲解Kotlin的基本数据类型,字符串等,对Java有比较深厚基础的同学可以快速阅读,只需要注意其中区别于Java的部分,包括字符串比较,字符串模板等。

Kotlin简介

Kotlin是一门可以运行在Java虚拟机、Android、浏览器上的静态语言,与Java100%兼容。Kotlin除了使用自己的标准库之外,大多仍然使用经典的Java集合框架。

上面的话意味着什么呢?只要你学了Kotlin,前端,后端,客户端,你啥都能做,你有了做全栈的基础。

Kotlin大法好

Kotlin工程的建立

首先打开IntelliJ,在下图的Configure设置中选择Plugins,下载安装好Kotlin插件

Kotlin修仙之旅:基础知识(一)_第2张图片
步骤一
Kotlin修仙之旅:基础知识(一)_第3张图片
步骤二

接着选择create new project,在弹出来的窗口中左侧选择Gradle,右侧勾选Kotlin和Java,点击Next,GroupId等随便填写,创建出来一个Kotlin工程,目录大概如下:


Kotlin修仙之旅:基础知识(一)_第4张图片
工程目录

可以选择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类与对象,数组与区间,类型转换)

如果对文章有什么疑问或者发现了什么错误,欢迎留言一起探讨。

你可能感兴趣的:(Kotlin修仙之旅:基础知识(一))