首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

这玩意真的有用?对,是的!Kotlin Nothing 详解

但——它有啥啊? Nothing 本质 大家好,是扔物线朱凯。上期讲了 Kotlin Unit,这期讲 Nothing。...;并且源码里 Kotlin 也没有帮我们创建实例。...} } 在这个函数里,一个 if 判断,true 就返回,false 就抛异常,这个写法很常见吧?它在 else 这个分支,是不是就只抛异常不返回值了?...一个元素类型为Nothing List,将会导致无法找到任何元素实例来填充进去,但是这个 List 本身是可以创建: val emptyList: List = listOf...,你利用 Nothing 可以创建一个通用「空白」对象,它什么实质内容也没有,什么实质工作也做不了,但可以用来作为泛型变量一个通用空白占位值。

22930

Kotlin 程序设计》第三章 Kotlin 类型系统第三章 Kotlin 类型系统基本数据类型2.字符类型CharKotlin类型系统参考资料

Kotlin 是一门完全面向对象(Object Oriented)语言。Kotlin中一切皆是对象。所有对象皆继承自Any(类似Java所有对象祖先类Object)。...Kotlin 处理数字某种程度上接近 Java,但是并不完全相同。例如,对于数字没有隐式拓宽转换( Java int 可以隐式转换为long),另外有些情况字面值略有不同。...当然,从编译器角度,完全可以通过字符数多少来判断是char类型还是String类型。 同时,Kotlin与Java不同是,它不能直接去应用一个Number类型。...库函数 arrayOfNulls() (初始化值为null),emptyArray(其实现是(arrayOfNulls(0) as Array)) 可以用于创建一个指定大小、元素都为数组...然而,如果当你调用List一些函数来返回T的话,你将会得到一个Object,不是String。

1.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin学习之路(2)数据类型

Kotlin 语言中有两个由编译器定义特定标识符,它们只能在特定场景中使用有特定作用,而在其他场景可以做标识符使用。...= 0 Kotlin声明语句是“变量名”:“变量类型”,不是Java常见“变量类型 变量名”这种格式,在这里你会惊奇发现Kotlin与Java正好相反,Kotlin声明完毕无需分号,直接回车即可...(0,text.indexOf(".")) } split方法使用,javasplit返回是Sting数组,但是Kotlinsplit返回则是Sting类型队列,List...size 对于如何获取指定位置数组元素,Java通过方括号加下标来获取,比如intarray[0] 获取数组一个元素。...就是一个类型,这种类型可以接受Int值和null;Int类型只能接收Int值不能接受null。

75120

Kotlin入门(4)声明与操作数组

上一篇文章介绍了基本变量类型Kotlin用法,不过这只针对单个变量,如果要求把一组相同类型变量排列起来,形成一个变量数组,那又该如何声明和操作呢?...但在Kotlin,声明并赋值一个整型数组语句是下面这样: var int_array:IntArray = intArrayOf(1, 2, 3) 两相对比,对于整型数组声明,Java...要想在Kotlin声明字符串数组,得使用Array,也就是把String尖括号包起来;同时,分配字符串数组方法也相应变成了arrayOf,具体代码如下所示: var string_array...,常见处理包括获取数组长度、获取指定位置数组元素等等,这些功能在Java与Kotlin之间区别包括: 关于获取数组长度,Java使用.length,Kotlin使用.size。...关于获取指定位置数组元素,Java通过方括号加下标来获取,比如“int_array[0]”指的是得到该数组一个元素;Kotlin也能通过方括号加下标来获取指定元素,不过Kotlin还拥有get和set

1.2K30

Kotlin-字符、字符串与数组

字符 字符是 Kotlin 一种数据类型。 字符对应类型关键字为Char。 字符值只能包含一个值。 字符值必须包含在''单引号里。...val char1: Char = 'AB' val char2: Char = 'CD' 字符串 String 开发中使用非常频繁。 Kotlin 字符串类型是String。...String ""表示。 定义与使用 单行字符串。 val str = "Hello Kotlin" 多行字符串。 """ 静夜思 唐•李白 床前明月光,疑是地上霜。 举头望明月,低头思故乡。...Kotlin 使用Array表示数组,是一个泛型集合类型(泛型后面会讲,现在可理解为指定数组里面放什么类型数据)。 定义与使用 使用Array表示数组类型。...数组元素由,隔开。 使用arrayOf创建

1.3K20

Kotlin初探

3 示例 首先我们还和以前一样,创建一个Android项目,自动创建一个Activity之后我们再创建一个java类: 那上面的代码如果kotlin实现是什么样子呢。...我们由一个简单"Hello World!"输出程序开始。与新建java文件类似,如下图,我们选择Kotlin File/Class.创建一个Kotlin文件。...我们也可以这样写var str= ""省略了生命变量类型,它可以根据赋自动推断出类型。...Kotlin中表达式也可以作为函数体,编译器可以推断出返回类型,可以简化为 为了更好理解表达式可以作为函数体,我们可以创建一个函数获取两个数最大值,如下: 需要注意是若if后有多个表达式,如下...简洁性,我们创建一个Staff类,有String类型name,position和泛型T(使用泛型仅仅是为了Kotlin接触以下泛型) java实现代码: Kotlin数据类: 通过对比我们就看出了优点了

1.6K20

从 Java 到 Kotlin,再从 Kotlin 回归 Java

Kotlin 中方法参数是一个值,所以你不能改变 num 参数。这是好语言设计,因为你不应该改变方法参数。但是你可以相同名称定义另一个变量,并按照你想要方式初始化。...是面向对象静态成员不是面向对象,” Kotlin回答。 “好吧,但我需要用于 MyClass 日志记录器,该怎么办?” “没问题,可以使用伴生对象。” “伴生对象是什么鬼?”...“它是与类绑定一个单例对象。你可以把日志记录器放在伴生对象,” Kotlin 如此解释。 “明白了。是这样?”...“嗯……是的,但是它不是静态成员!它只是一个对象。可以想像那是一个匿名内部类单例实现。实际上,这个类并不是匿名,它名字是 Companion,你可以省略这个名称。明白?这很简单。”...: 0 } 可以?是的,但并不是这么简单。上面的代码可能会出错,从 parseInt() 抛出 NPE。

1.5K10

从 Java 到 Kotlin,再从 Kotlin 回归 Java

,以满足由Java方法填充所有Kotlin变量。 ? 类字面量 ? 使用Log4j或Gson之类Java库时,类字面量是很常见Java,我们.class后缀来写类名: ?...是面向对象静态成员不是面向对象,” Kotlin回答。 “好吧,但我需要用于 MyClass 日志记录器,该怎么办?” “没问题,可以使用伴生对象。” “伴生对象是什么鬼?”...“它是与类绑定一个单例对象。你可以把日志记录器放在伴生对象,” Kotlin 如此解释。 “明白了。是这样?” ? “对!...“嗯……是的,但是它不是静态成员!它只是一个对象。可以想像那是一个匿名内部类单例实现。实际上,这个类并不是匿名,它名字是 Companion,你可以省略这个名称。明白?这很简单。”...通常,使用 Optional 时,你会先进行一系列安全转换,最后来处理值。 比如在 Java : ? Kotlin 也没问题,使用 let 功能: ? 可以

1.8K40

怎样JavaScript创建填充任意长度数组

没有空洞数组往往表现得更好 大多数编程语言中,数组是连续值序列。 JavaScript ,Array 是一个将索引映射到元素字典。...空洞默认值一般不会是元素初始“值”。常见默认值是 `Array` 构造函数后面加上 `.fill()` 方法 .fill()方法会更改当前 Array 并使用指定值去填充它。...(arr, [0, 0, 0]); 这一次,我们创建填充一个数组,同时里面没有出现漏洞。...侧重点是可读性,不是性能。 你是否需要创建一个数组,以后将会完全填充? 1new Array(LEN) 你需要创建一个原始值初始化数组?...1new Array(LEN).fill(0) 你需要创建一个对象初始化数组? 1Array.from({length: LEN}, () => ({})) 你需要创建一系列整数

3.2K30

【100 种语言速成】第 5 节:Kotlin

他们母语很糟糕,但是使用完全非母语语言会导致与本地 API 交互巨大复杂性。于是就创建了折衷解决方案,比如用于 JavaScript ES6 和用于 Java Kotlin。...Kotlin Android 开发人员特别受欢迎,但你可以在任何可以使用 JVM 地方使用它,而且现在真的很难找到使用“纯 Java”正当理由。...代码库包含了一个允许 ./run file.kt 简短脚本。 斐波那契 我们需要一些类型注释,感觉它们应该是可推断,但它们都是完全合理代码。...通常我会问“你应该使用 Kotlin ”,但那是向后看。...真正问题是“你应该使用 Java”?答案是明确明确 NO!如果你需要在 JVM 上运行某些东西并与“Java”生态系统交互,那么你可以做到这一点,而无需触及语言那个可悲借口。

1.6K51

数据库中间件 MyCAT 源码解析 —— 分片结果合并(一)

MyCAT 实际处理时,只处理第一个返回 记录头(header) 。因此,使用时要保证表 Schema 相同。...分片节点响应 记录头(header) 可以直接返回 MySQL Client ?答案是不可以。AVG函数 是特殊情况,MyCAT 需要将 AVG 拆成 SUM + COUNT 进行计算。...欢迎订阅公众号噢)。...每个字段对应值占用格子数 = 字段对应值长度 / 8 Byte,如果无法整除再 + 1。 因为字段对应值可能无法刚好占满每个格子,未使用 bit 0 占位。...当然肯定是,也不是这么“简单”实现。 ?具体怎么实现呢?我们《MyCAT 源码解析 —— 分片结果合并(二)》继续分析。

1.5K130

Kotlin 初体验:主要特征与应用

因为Alice年龄没有指定,Elvis运算符使用代替了它,所以Bob幸运地成了年纪最大的人。 喜欢这样代码 ? 继续读下去,你将会学习到更多,并成为一名Kotlin 专家。...其中最重要概念是 Kotlin 对可类型支持,通过在编译期检测可能存在 指针异常,它让你可以写出更可靠程序。 另一个 Kotlin 类型系统新概念是对函数类型支持。...lambda 表达式,让你最少样板代码方便地传递代码块 数据类,提供了创建不可变值对象简明语法 标准库包括了丰富 API 集合,让你函数式编程风格操作对象和集合 Kotlin 允许你使用函数式编程风格但并没有强制你使用它...这些应用通常并不是孤立地开发或者从开始,它们 几乎总是对现有的系统进行扩展、改进或者替换,新代码必须和系统现有部分进行集成,而这些部分可能很多年之前就写成了。...这个特性一个最简单例就是 HTML 生成库,它可以一个外部模板语言 替换成简洁且完全类型安全解决方案。这里有一个例子: ?

83630

Kotlin 程序设计》第九章 Kotlin与Java混合调用

,你可以把他理解为外部类自动创建一个对象作为自己field。...当然,扩展并不能真正修改它所扩展类。通过定义一个扩展,我们并没有一个插入新方法,仅仅是可以通过该类型变量点表达式来调用这个新函数。...完全兼容,与Java互操作 这是Kotlin与Scala相比,优势突出一点。我们可以Kotlin调用现存Java代码,并且也能在Java代码顺利调用Kotlin代码。...这意味着我们可以马上现有的Java项目中使用上Kotlin,同时所有之前旧Java也一样有效。 这是很关键,也是之所以很看好Kotlin一个原因。...作为一名开发者,眼里,Kotlin设计出来不是抛开Java谈,而是Java毛病基础上,进行再开发,拥有很多其他语言优秀特性,同时完全兼容Java。

1.5K50

31 天,从浅到深轻松学习 Kotlin

Day 10:Data 类和 equality 可以创建具有一个具有处理数据?将它们标记为 "Data" 类。...Day 17:Lateinit Android onCreate 或者其它回调初始化对象,但在 Kotlin 不为对象必须初始化。那么怎么办呢?可以输入 lateinit。...序列是迭代器表亲,一次只能懒散地产生一个值。这在使用 map 和 fifter 时非常重要 - 它们将创建序列,不是为每一步都复制列表! 您可以从列表创建序列或指定下一个功能。...如果您永远不会终止一个序列,它可以是无限长不会耗尽内存。使用 Kotlin 协程您也可以使用生成器!...Android KTX 允许您使用默认参数视图一侧设置填充。一行代码可以节省很多代码!

2.2K30

Kotlin 极简教程 》第4章 基本数据类型与类型系统

这样我们就可以直接使用类型较高层次方式思考,不是繁重低层次实现。 例如,我们可以将字符串想成一个值,以此取代仅仅是字节数组。字符串就是一个抽象数据类型。...函数 arrayOfNulls() 可以用于创建一个指定大小、元素都为数组。这个特殊数组创建时候,我们需要指定元素类型。...Kotlin类型系统和Java相比,首要区别就是Kotlin对可类型显式支持。 本节,我们将讨论Kotlin类型。...,要时刻注意这一点:Integer默认值是null不是0。...KotlinUnit类型实现了与Javavoid一样功能。不同是,当一个函数没有返回值时候,我们Unit来表示这个特征,不是null。

2K20

Android开发必备知识:为什么说Kotlin值得一试

哈哈,实际上你完全可以不用这么痛苦, Kotlin 替代 Java 开发你程序,无论是 Android 还是 Server,你都能像之前写 Java 一样思考,同时又能享受到新一代编程语言特性,说到这里你是不是开始心动了呢...从外观上,乍一看还以为是 Scala,曾经琢磨着把 Scala 作为下一门语言,不过想想用 Scala 来干嘛呢,又不做大数据,它又太复杂了o(╯□╰)o Kotlin创建一个数据类 ?...3.2 安全与属性代理 第一次见到类型安全设计是 Swift 当中,那时候还觉得这个东西有点儿意思哈,一旦要求变量不能为以后,因它导致指针异常可能性就直接没有了。...还是举个例子,需要在 Activity 当中创建一个 View 引用,通常我们 Java 代码这么写: ? Kotlin 当中呢? ? 每次 aTextView 都要加俩!...这活干不了啦。。 不过 Kotlin Android 扩展插件,我们就可以这样: 先上布局文件: main.xml ? Activity : ?

1.1K90

hello Kotlin

哈哈,实际上你完全可以不用这么痛苦, Kotlin 替代 Java 开发你程序,无论是 Android 还是 Server,你都能像之前写 Java 一样思考,同时又能享受到新一代编程语言特性,说到这里你是不是开始心动了呢...从外观上,乍一看还以为是 Scala,曾经琢磨着把 Scala 作为下一门语言,不过想想用 Scala 来干嘛呢,又不做大数据,它又太复杂了o(╯□╰)o Kotlin创建一个数据类 ?...3.2 安全与属性代理 第一次见到类型安全设计是 Swift 当中,那时候还觉得这个东西有点儿意思哈,一旦要求变量不能为以后,因它导致指针异常可能性就直接没有了。...还是举个例子,需要在 Activity 当中创建一个 View 引用,通常我们 Java 代码这么写: ? Kotlin 当中呢? ? 每次 aTextView 都要加俩!...这活干不了啦。。 不过 Kotlin Android 扩展插件,我们就可以这样: 先上布局文件: main.xml ? Activity : ?

88750

号称取代 Java Kotlin 语言到底是什么鬼?

Kotlin , 方法参数无法修改,因此本例你不能改变 num。这个设计很好,因为你不应该改变方法输入参数。但是你可以相同名称定义另一个变量并对其进行初始化。...这个想法很好, Kotlin ,类型默认不可为。如果你需要添加一个可为类型,可以像下列代码这样: val a: String?...: 0) // fine, prints 0 那么是不是如果你同时拥有不可为和可为变量,就可以避免 Java 中最常见 NullPointerException 异常?...“这是局限到你单独对象。把你 logger 放在伴生对象。”Kotlin解释说。 “懂了。这样对?”...如今,Optional 是 API 边界处理返回类型非常流行方式。 Kotlin 没有 Optional 等价物,所以你大概应该使用 Kotlin 类型。

2.2K50
领券