周末雨会(二):变数基本型态 Basic Types

「强硬的将变数改变型态会发生什麽问题?」诗忆好奇地发问。

「什麽都可能发生。」

唯心从包里掏出一张纸,展开後放在诗忆桌上,这是一张因为放歪而印坏的A4纸。

「好一点的情况,像这张讲义,列印超出范围,内容被截断仍然可以取得一些资讯,这通常发生在相似型态之间的转换;坏一点的情况,不同资讯凑在一起,让程序崩坏。」

她手腕一转,「唰」地一声将讲义翻面,各种颜色的计算式中间还混杂少许涂鸦,看起来是被某人当作废纸利用。

唯心把纸张摺好收回包里,拿出另一张白纸。「刚刚说的好坏是针对程序是否能执行,如果是考虑到结果正确性的话,前者也可能会很糟糕,因为没注意到程序里被埋下一颗未爆弹。」

诗忆紧张的吞了吞口水。

唯心放下笔,以指节敲击单词NumbersBooleansCharactersStringsArrays。「这些是基本型态,中文翻译成数字、布林值、字元、字串和阵列,其他型态都来自它们的组合。」

资讯太多,诗忆一时脑袋转不过来。

「这些不难记,之前你已经见过半数的成员——CharactersCharactersNumbers。」唯心不知道诗忆脑海里还存着刚刚的涂鸦,打开之前的程序档案,把'+'"Hello World!"指出来。「单引号包夹的是字元Characters,双引号包夹的是字串String;两者的差别还有一个,字元只有一个字符。」

最後她把游标移动到1上,想了想决定讲更多一点,开了一个新档案。

「至於数字Number的话,刚刚提到的相似型态,正好可以用数字大家庭说明。小数在程序里被称为浮点数,把浮点数直接转型成整数,会只留整数的地方。」

fun main() {
    val x = 1.5
    val y = x.toInt()
    println(x)
    println(y)
}

程序结果输出1.51

fun main() {
    val x = -1.5
    val y = x.toInt()
    println(x)
    println(y)
}

程序结果输出-1.5-1

「既然说是大家庭,成员当然不止两位。根据能存的数字长度,整数又被分成四个形态,其中最常用的是IntLong。单纯写1就是Int,想表明是Long的话写成1L。而浮点数就只分成两个,FloatDouble。这两张图是从官网印下来的,给你参考。」

诗忆从她手中接过两张印得整整齐齐的A4纸。

https://kotlinlang.org/docs/basic-types.html#integer-types
图1

https://kotlinlang.org/docs/basic-types.html#floating-point-types
图2

注意到外面的天色暗下来,而基本型态除布林值和阵列以外也差不多讲完了,唯心走去窗边低头注视下方的行人。

「至於无符号整数,这堂课是不会考,不过可以先记着它的存在,因为没有负数的存在,最大值大了近两倍。比如Int的最大值是2的31次方减1,对应的UInt范围就是0到2的32次方减1。布林值和阵列我们用到时再说,外面雨好像停了,一起去吃晚餐吧。」来时湿掉的外衣已经乾了,她穿上後挽着提包,在门边等着诗忆。


<<:  Day13. 有了Blue Prism,谁说办公室恋情影响工作-BP的用途

>>:  Day13 原来Background可以有这麽多设定

Day 26 | Overfitting v.s. Underfitting

我们已经学会了运用画出图表的方式来检视模型的训练过程,有时候图表曲线所呈现的结果相当理想,和我们预想...

完赛的一天

今天,在铁人赛团报小圈圈里,战友们欣慰地迎接完赛日的到来。 有人快速发了总结心得文(啊,不需要讲正经...

【Day 24】Swift 资源整理

目前正在学的 SwiftUI入门: SwiftUI Tutorials(苹果官方) SwiftUI ...

python 流水号变数

之前打某个程序码时 刚好要设流水号变数 那时用eval 但会出现can't assign to fu...

Mysql执行成本-Part2(连接查询的成本、调节成本常数)

方便後续解释概念,我们在创建一个跟原先single_table一样的表,叫single_table2...