一、Boolean 类型

Boolean 值有两个值,分别为 true 或 false。多数情况下,Kotlin 中的 Boolean 相当于 Java 中的基本类型 boolean,只有在必要的情况下才会装箱成为 Java 中的装箱类型 Boolean。这一切都是交由编译器来完成,我们无需关心。

var isFirst: Boolean = true
var isSecond: Boolean = false

二、Number 类型

var aLong: Long = 123L
var aInt: Int = 1234567890
var aShort: Short = 12345var aFloat: Float = 23F
var aDouble: Double = 23.0var aByte: Byte = 127

基本类型的装箱与拆箱
Kotlin 不再区分装箱与非装箱类型,在需要的时候编译器会帮我们自动的选择是使用基本类型还是装箱类型。

三、Chat 类型
Chat 类型表示一个字符,一个字符可以是一个字,或者一个符号等等。
字符占两个字节,表示一个 16 位的 Unicode 字符。
字符使用单引号 '' 引起来,例如 '中','A','\n'。

四、数值类型的显式转换
在 Java 里面,将一个 int 值赋给 long 值,是可以允许的,因为 Int 的范围比 long 要小,所以 long 可以兼容 int。但是,在 Kotlin 中这样的隐式转换是不被支持的

var aInt: Int = 10
var    aLong: Long = 10000// 编译器会报错
aLong = aInt// 必须调用 toXXX 方法显示转换
aLong = aInt.toLong()

每个数值类型都支持下面的转换

    1. toLong:Long
    1. toInt:Int
    1. toShort:Short
    1. toFloat:Float
    1. toDouble:Double
    1. toByte:BytetoChar: Char
    1. toString: String

五、字符串类型
字符串本质上可以说是"一串" Char,字符串使用双引号 "" 引起来5.1 字符串的比较

var aName: String = "fancyluo"
var bName: String = "fancyluo"println(aName == bName) // true
println(aName === bName)// false

熟悉 Java 的同学对以上结果是不是就困惑了,怎么 == 打印出来了 true,这里我们可以看看== 的源码就可以解开疑惑了。

public open operator fun equals(other: Any?): Boolean

Kotlin 的 == 就相当于 Java 的 equeals,表示比较内容。
Kotlin 的 === 就相当于 Java 的 ==,表示比较对象是否相同。

5.2 字符串模板

在 Kotlin 中,字符串可以包含模板表达式,模板表达式由 $ 开头,如果需要进行表达式运算,可以写在 {} 里面

var a: Int = 1
var b: Int = 2// Java
println("" + a + " + " + b + " = " + (a + b))// 字符串模板
println("$a + $b = ${a + b}")// print: 1 + 2 = 3// 原始字符串
var rawString = """ab${a + b}
"""

六、数组
Kotlin 中的数组由 Array 类表示,表示以一系列的对象,可以使用函数 arrayOf 来创建数组,示例如下

val arrayOfString: Array<String> = arrayOf("fancy", "luo")
val arrayOfUser: Array<UserInfo> = arrayOf(UserInfo("fancyluo", "音乐"),UserInfo("jack", "篮球"))

可以看到,我们使用 val 来修饰数组,在 Kotlin 中,数组是不可变的。上面数组里我们放的都是对象,那么基本类型的数组呢?Kotlin 中为了防止装箱拆箱的操作,为每个基本类型都专门定制了相应的数组类型,从而避免过度装箱的消耗。例如:IntArray,CharArray 等等

val arrayOfInt: IntArray = intArrayOf(1, 2, 3)
val arrayOfChar: CharArray = charArrayOf('中', '国')

七、区间
区间是一个数学上的概念,表示范围。Kotlin 中区间是 ClosedRange 接口的子类,一般比较常用的是 IntRange。

// 闭区间 [0,1024]
var range: IntRange = 0..1024
// 半开区间 [0,1024) = [0,1023]
var untilRange = 0 until 1024fun main(args: Array<String>) {// 判断是否在区间中print(666 in range))// 区间迭代for (i in range) {print("$i, ")}
}

八、空类型安全

fun getName(): String{return null
}

上面的代码在编译器里是会报错的,普通情况下,Kotlin 中是不允许返回 null 类型的,这也就表明,我们在取这个值的时候,无需担心,直接使用即可。那我们就是想返回 null 呢? 在返回值后面加个 ? 即可。

fun getName(): String?{return null
}

但是,返回了空类型之后,要使用这个函数就不是这么简单了,如果你并不确定此函数返回的是否为空,那么你需要在函数后面加上一个?,如果你确定的知道此函数不会返回空,那么你可以在函数后面加上 !! 表示我明确知道返回值不为空,可放心使用。

// 此行代码会报错
var nameLength = getName().length// 不确定是否为空
var nameLength = getName()?.length// 确定不为空
var nameLength = getName()!!.length// getName 不为空则返回值,为空则不再执行后面的逻辑
var nameLength = getName() ?: return

转载于:https://blog.51cto.com/13983283/2363036

Kotlin 基础 - 数据类型相关推荐

  1. Kotlin 基本数据类型(五)

    Kotlin 的基本数值类型包括 Byte.Short.Int.Long.Float.Double 等.不同于Java的是,字符不属于数值类型,是一个独立的数据类型. 类型 位宽度 Double 64 ...

  2. Kotlin第二章:kotlin基础

    1. 基础数据类型 1. 整数类型 序号 类型 位宽 最小值 最大值 1 Byte 8 -128 127 2 Short 16 -32768 32767 3 Int 32 -2,147,483,648 ...

  3. Kotlin学习(一):Kotlin基础知识

    Kotlin学习(一):Kotlin基础知识 定义变量常量 在Kotlin中,定义变量时有以下几点与java不同: 位置不同:在 Kotlin 中,数据类型要放到变量后面,并且用冒号(:)分隔,这正好 ...

  4. Kotlin基础:白话文转文言文般的Kotlin常识

    这是该系列的第一篇,系列文章目录如下: Kotlin基础:白话文转文言文般的Kotlin常识 Kotlin基础:望文生义的Kotlin集合操作 这个系列记录的是kotlin使用感受,其中也会穿插基础知 ...

  5. Kotlin基础学习(1)

    Kotlin基础学习(1) 本文主要讲解kotlin的部分基础知识,并不是全部基础. 提示:纯属个人理解,如有理解错误,欢迎留言指正批评. 一.Null检查机制 kotlin对于声明可为空的参数,使用 ...

  6. Kotlin Bootcamp 自学(2):Kotlin基础

    Kotlin Bootcamp 自学(2):Kotlin基础 目录 Kotlin Bootcamp 自学(2):Kotlin基础 前言 运算符与数据类型 (Operators and Types) 数 ...

  7. Kotlin Jetpack 实战:01. Kotlin 基础

    背景 近几年,Android 相关的新技术层出不穷.往往这个技术还没学完,下一个新技术又出来了.很多人都是一脸黑人问号?不少开发者甚至开始哀嚎:"求求你们别再创造新技术了,我们学不动了!&q ...

  8. Kotlin基础语法(上)

    文章目录 Kotlin基础语法(下) Kotlin基础语法(上) 输出Hello world!!! 变量与输出 kotlin常见数据类型 变量的取值范围 kotlin函数 kotlin布尔类型 kot ...

  9. Kotlin Jetpack 实战: Kotlin 基础 | 开发者说·DTalk

    本文原作者: 朱涛,原文发布于: 朱涛的自习室 https://mp.weixin.qq.com/s/MSbSPeWNlM5PJCFmLg2SVQ 背景 近几年,Android 相关的新技术层出不穷. ...

最新文章

  1. 华中科技大学计算机通信与网络实验,华中科技大学计算机通信与网络实验报告Socket编程实验.docx...
  2. Linux的内存分页管理
  3. java设计模式---策略模式
  4. 解决方案 | tensorflow安装慢解决方案
  5. sqlserver主键自增
  6. 百度云盘下载限速破解的方法
  7. composer如何进行安装和使用
  8. W3Cschool菜鸟教程离线版下载链接
  9. 形式语言与自动机 第五章 课后题答案
  10. jquery查子元素
  11. Linux向github上传代码以及遇到的坑们
  12. 实现lightbox效果
  13. linux进化树分析的软件,一款好用的进化树可视化编辑软件
  14. OA系统-员工的添加和查询-登录功能的实现
  15. DL中常用的三种K-Lipschitz技术
  16. 世界杂志排行TOP(1-100)
  17. 用递归树方法求解递归式
  18. ftp 文件夹 上传到服务器,ftp上传文件夹到服务器 远程路径
  19. AtCoder Beginner Contest 208
  20. 前端(Javascript) + JAVA 服务端如何处理 HTTP 断点续传

热门文章

  1. 嵌入式计算机的发展阶段,嵌入式发展经历了哪四个阶段?
  2. oracle數據庫any,Oracle权限集合全集
  3. Android 应用安全性改进: 全面助力打造 零漏洞 应用
  4. 来入门一下kotlin吧
  5. 转:shell awk
  6. 《Node.js 入门系列》—— 一些简单的排错方法(一)
  7. Java 9进入第一轮问题修复阶段
  8. 根目录下各文件夹的作用
  9. error: storage class specified for parameter问题
  10. radio切换控制div显示_JavaScript连载31图片动态切换以及关闭图片案例