Kotlin-基础---数据类型

一、Boolean 类型

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

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

二、Number 类型

Number类型.png

var aLong: Long = 123L
var aInt: Int = 1234567890
var aShort: Short = 12345

var aFloat: Float = 23F
var aDouble: Double = 23.0

var aByte: Byte = 127

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

三、Chat 类型

var aChar: Char = ‘中’
var nChar: Char = ‘\n’
var bChar: Char = ‘国’

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

四、数值类型的显式转换

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

var aInt: Int = 10
var aLong: Long = 10000

// 编译器会报错
aLong = aInt

// 必须调用 toXXX 方法显示转换
aLong = aInt.toLong()

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

  • toLong:Long
  • toInt:Int
  • toShort:Short
  • toFloat:Float
  • toDouble:Double
  • toByte:Byte
  • toChar: Char
  • 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 = “”"
a
b
${a + b}
“”"

六、数组

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

val arrayOfString: Array = arrayOf(“fancy”, “luo”)
val arrayOfUser: Array = arrayOf(
UserInfo(“fancyluo”, “音乐”),
UserInfo(“jack”, “篮球”))

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

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

总结

Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

上面分享的字节跳动公司2021年的面试真题解析大全,笔者还把一线互联网企业主流面试技术要点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

【Android高级架构视频学习资源】

Android部分精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值