Studio立即提示编译不通过,刚开始学Kotlin便掉到坑里,看来要认真对待Kotlin,不能这么轻易让它坑蒙拐骗了。...但在Kotlin中,不可以通过前缀来强制转换类型,只能通过调用类型转换函数输出其它类型的变量,下面是常见的几个类型转换函数: toInt : 转换为整型数。 toLong : 转换为长整型。...toDouble : 转换为双精度数。 toChar : 转换为字符。 toString : 转换为字符串。 isNaN : 判断该变量是否为空值。...tv_convert.text=long.toString() } var float:Float btn_float.setOnClickListener { float=origin.toDouble...其实val和var的区别在于,前者修饰过的变量,只能在第一次声明时赋值,后续不能再赋值;而后者修饰过的变量,任何时候都允许赋值。
逻辑非 数组 数组在 Kotlin 中使用 Array类来表示,它定义了 : get和 set函数(按照运算符重载约定这会转变为 []) size属性 以及一些其他有用的成员函数: class...另一个选项是用接受数组大小和一个函数参数的工厂函数,用作参数的函数能够返回 给定索引的每个元素初始值: // 创建一个 Array 初始化为 ["0", "1", "4", "9", "...基本类型 在Kotlin中,所有东西都是对象,所以我们可以调用成员函数和属性的任何变量对象。有些类型是内置的,他们的实现被优化过, 但是用户看起来他们就像普通的类....因此较小的类型不能隐式转换为较大的类型。 因此我们不能声明一个 Byte 类型给一个 Int 变量,在不进行显示转换的情况下。...字符串可以使用for{: .keyword }循环遍历: for (c in str) { println(c) } 字符串字面量 Kotlin有两种类型的字符串: 转义字符串可能由转义字符、原生字符串
数据类型 数值类型 在 Kotlin,一切都是一个对象,你可以调用任何变量的成员函数和属性。...在 Kotlin 中声明变量,就是在标识符的前面加上关键字 var。 变量一旦赋值就不能更改。要声明只读变量,使用 val 关键字。常量一旦初始化后就不能再被修改。...根据某些条件使用不同的值初始化变量。 读取变量是可能的,因为它已经被初始化了。 您可以在顶层声明变量。...= "You can keep a null here" nullable = null 接受可为空的字符串并返回其说明的函数。 如果给定的字符串不为空,也不为空,则返回有关其长度的信息。...否则,告诉调用方字符串为空或 null。 可空类型在具体使用时会有一些限制: 不能直接调用可空类型对象的函数或属性。 不能把可空类型数据赋值给非空类型变量。
修饰符关键字(Modifier Keywords),修饰符关键字是一种特殊的软关键字,它们用来修饰函数、类、接口、参数和属性等内容,在此场景中不能作为标识符。...Float float = origin.toDouble().toFloat() LogUtil.printLog(LogUtil.E, "XX1", "原始值 " +...origin + " 转换值 " + float.toString()) var double: Double double = origin.toDouble()...) (3)字符串模板及其拼接 Kotlin允许字符串中嵌套变量或者表达式,我们只要把变量或者表达式放进${ }中就OK了,这样Kotlin将该变量或表达式的值嵌入到该字符串中 var Price : Double...就是一个可空类型,这种类型可以接受Int值和null;而Int类型只能接收Int值不能接受null。
空安全类型 在实际开发中,会经常碰到空值的情况,空值在 Kotlin 中表示为null。 在 Kotlin 中,默认情况下,不允许将变量或者常量设置为null,只有声明成空安全类型才可以。...= "Hello Kotlin" str = null 取值 ?::非空直接返回,为空返回后面的值。 var str: String?...// 报错 基本类型 Kotlin 支持隐式转换即较大的类型可以隐式转换为较小的类型,但反过来较小的类型不能隐式转换为较大的类型。 所有数字类型都支持转换为其他类型。...toByte(): Byte toShort(): Short toInt(): Int toLong(): Long toFloat(): Float toDouble(): Double 字符串模板...字符串可以包含模板表达式,会求值并把结果合并到字符串中。
Number): Int { return this.toDouble().compareTo(other.toDouble()) } val number = if (validation(...请注意,Kotlin 在表达联合类型时实际上是取了一个类型的近似值,这个值就是公共父类。...因此,Kotlin 编译器将分支表达式的类型推导为 Any,pet 自然无法直接访问 layEggs 了,尽管 Bird 和 Fish 都有这个函数。...按照 Kotlin 语言规范的说法,Kotlin 当中的交叉类型和联合类型都是不能直接声明的,只是会在某些语法现象中产生,例如类型智能转换等等。...这一点从 Kotlin 对函数类型的支持上就可见一斑,当然不同之处在于函数类型确实是刚需。 对于这个问题大家怎么看呢?留言说出你的看法吧。
每种数据类型使用对应方法,可将其他类型转换成其他数据类型 toByte():Byte toShort():Short toInt():Int toLong():Long toFloat(): Float toDouble...():Double toChar():Char 2.2 字符(Characters) Kotlin中的字符类型采用 Char 表示,必须使用单引号’ '包含起来使用 & 不能直接和数字操作 val ch...删除了前置空格 } 补充说明:字符串模版(String Templates) 即在字符串内通过一些小段代码求值并把结果合并到字符串中。...函数 4.1 定义 & 调用 // 模板: fun 函数名(参数名:参数类型):返回值类型{ 函数体 return 返回值 } // 说明: // 1....: 有传入参数 & 无返回值 无传入参数 & 无返回值 // 有传入参数 & 无返回值 // 模板: fun 函数名(参数名:参数类型){ 函数体 } // 或返回Unit(类似Java
在 Kotlin 中,三个等号 === 表示比较对象地址,两个 == 表示比较两个值大小。...(boxedA == anotherBoxedA) // true,值相等 } ---- 类型转换 由于不同的表示方式,较小类型并不是较大类型的子类型,较小的类型不能隐式转换为较大的类型。...这意味着在不进行显式转换的情况下我们不能把 Byte 型值赋给一个 Int 变量。...数组的创建两种方式:一种是使用函数arrayOf();另外一种是使用工厂函数。...方括号 [] 语法可以很方便的获取字符串中的某个字符,也可以通过 for 循环来遍历: for (c in str) { println(c) } Kotlin 支持三个引号 """ 扩起来的字符串
发送HTTP请求和解析响应然后,我们需要编写一个函数,用来发送HTTP请求到JD.com的搜索接口,并解析响应中的商品信息,如下所示:suspend fun searchProducts(keyword...绕过反爬 .authenticate(PROXY_USER, PROXY_PASS) // 设置代理认证信息 .awaitStringResponse() // 使用协程等待字符串响应...获取商品名称、价格、评分、评论数 val name = match.groupValues[1] val price = match.groupValues[2].toDouble...() val score = match.groupValues[3].toDouble() val comments = match.groupValues...使用多线程提高采集效率最后,我们需要编写一个主函数,用来调用上面的函数,并使用多线程提高采集效率,如下所示:fun main() = runBlocking { // 定义一个搜索关键词 val
:参数 : 类型 相较于java, kotlin的函数有fun关键字进行标注,其次函数的传参是参数在类型的前面....还有一个区别在于,返回值,写在了函数的最后. 常量与变量 介绍: 通过var关键字定义可变变量 通过val 关键字定义不可变变量.类似于java之中的final修饰符.赋值后不能修改....:-1 println(t2); } 输出: null -1 函数值返回NULL 定义 如果一个函数的参数,不能确定一定有值,可能返回Null的情况下.在返回值类型后面添加?...类型转换 介绍: 由于没有基础类型, 全是封装的独立对象.所以在Kotlin之中,不能隐式转换. Kotlin之中不支持这种直接转换....(): Char 但是在某些情况下,也支持自动类型转换.
函数的定义一定有以下几个部分: 函数头:包括函数名和标识函数的关键字,如fun; 参数:包括参数名和参数类型; 返回值:包括返回值类型; Kotlin代码: fun add(a: Int, b: Int...至于参数,与定义Kotlin变量的方式相同。如果函数有返回值,那么返回值类型在函数定义部分末尾指定,与函数定义部分用冒号(:)分隔。...而Kotlin不可以,Kotlin提供了一系列的方法用来进行类型转换: toByte() toShort() toInt() toLong() toFloat() toDouble() toChart(...与Java一样,字符用单引号,Kotlin也支持反斜杠转义符,如常见的\n,\t,\b 等等。 虽然字符不能直接作为数值使用,但是可以使用toInt()方法将字符转成相应的ASCII码值。...Kotlin中使用String表示字符串,有以下两种字符串: 普通字符串:类似于Java,在字符串中可以加转义字符以实现换行等要求; 保留原始格式字符串:不能使用转义字符串,格式直接在字符串中展示,
变量与常量 Kotlin和一些脚本语言一样,在定义变量的时候不需要指定变量类型,Kotlin会根据默认值来确定变量类型。...Kotlin使用var来定义变量,使用val来定义不可变值,而使用const来定义常量 变量定义 有默认值的变量定义方式: 在类属性以及函数中都可以使用var来定义变量,如果没有指定类型的话,Kotlin...会根据默认值推导变量类型 class TestKotlin { var stringVar = "test" // 定义字符串 var intVar = 10 // 定义int类型的值...在Java中可以强转,或者隐式转换,如int+float=>int,而Kotlin中则不能直接强转。...val sumV=intV+longV.toInt() return sumV } } 同样,还有toLong,toDouble等等用于数值转换 函数 一个简单函数会通过
字符串转浮点数:调用String对象的toFloat方法 字符串转双精度数:调用String对象的toDouble方法 字符串转布尔型:调用String对象的toBoolean方法 字符串转字符数组:调用...Kotlin对字符串带来的便利并不限于此,大家知道,Java如果要把几个变量拼接成字符串,要么用加号强行拼接,要么用String.format函数进行格式化。...对于格式化这个痛点,Kotlin恰如其分地进行了优化,何必引入这些麻烦的格式转换符呢?直接在字符串中塞进“$变量名”表示此处引用该变量的值,岂不妙哉!...心动不如行动,赶紧动起手来,看看Kotlin如何格式化字符串,代码如下所示: btn_format.setOnClickListener { tv_convert.text = "字符串值为...}" } 注意到在Kotlin中,美元符号$属于特殊字符,因此不能直接打印它,必须经过转义才可打印。
1.2变量转换 Kotlin中进行数据转换和Java中不同,就不一一对比了,直接说Kotlin中如何进行数据类型转换,Kotlin中都是使用类型转换函数来进行数据类型转换的,让我们来认识一下,如下表 Kotlin...的数据类型转换函数 转换函数说明 toInt 转换为整型 toLong 转换为长整型 toFloat 转换为浮点数 toDouble 转换为双精度数 toChar 转换为字符 toString 转换为字符串...字符串变量的toDouble方法 Double.parseInt(字符串变量) 字符串转布尔类型 字符串变量的toBoolean方法 Boolean.parseInt(字符串变量) 字符串转字符数组...代码中,我们频繁用到了 $ ,美元符号,它在Kotlin中属于特殊字符,因此不能直接打印,需要经过转义后方可打印,转义的方法是使用${’***’}表达式,该表达式外层的“ ${‘’} ”为转义声明,内层的...(3)不能通过下标获取指定位置的元素。
类型可以确认一个值或者一组值具有特定的意义和目的(虽然某些类型,如抽象类型和函数类型,在程序运行中,可能不表示为值)。...JavaScript 中的所有事物都是对象:字符串、数值、数组、函数等等。此外,JavaScript 提供多个内建对象,比如 String、Date、Array 等等。...同时,Kotlin与Java不同的是,它不能直接去应用一个Number类型。...库函数 arrayOfNulls() (初始化值为null),emptyArray(其实现是(arrayOfNulls(0) as Array)) 可以用于创建一个指定大小、元素都为空的数组...可以用 foreach 循环迭代字符串: for (c in str) { println(c) } 字符串字面值 Kotlin 有两种类型的字符串字面值: 转义字符串可以有转义字符,以及原生字符串可以包含换行和任意文本
上一篇文章讲了 Kotlin 泛型:基本使用,接下来我们再进一步了解泛型使用相关的进阶知识。本篇是 Kotlin 泛型类型参数约束的讲解,更多内容可点击链接查看。...Kotlin 泛型:基本使用Kotlin 泛型:类型参数约束系列持续更新中,欢迎关注订阅。...为什么需要类型参数约束在上一篇文章里,我们使用泛型定义了一个泛型列表List,使用这个列表,我们可以在使用的时候,实例化出各种具体类型的列表,比如字符串列表List、整型列表List...// 字符串列表val stringList: List = TODO()// 整型列表val intList: List = TODO()// 浮点数列表val doubleList...「任意类型」的sum()函数。
1、基本数据类型 基本类型 Int、Long、Float、Double、Boolean、Char、String 类型之间的转换 toInt()、toLong()、toFloat()、toDouble...()、toBoolean()、toChar()、toString() 2、数组 (1)、数组的声明 (2)、数组元素操作 3、字符串 (1)、字符串操作 查找——indexOf() 截取——substring...() 替换——replace() 分割——split() 注意: Java中 split()返回的是一个String[], 而 kotlin中返回的是一个 List (2)、字符串模板和拼接 (3)、如何显示货币符号...容器初始化的函数如下: listOf()、mutableListOf() setOf()、mutableSetOf() mapOf()、mutableMapOf() (2)、Set/MutableSet...方法仅添加元素,但不知道添加到了哪个位置 MutableSet没有修改元素值的方法,元素被添加之后不可被修改 MutableSet的 remove 方法仅接收元素作为参数,不能接收索引——因为Set无序没有索引
Extension methods 就是我们常说的扩展函数,像 Kotlin 等语言也有 扩展函数 的特性,因此如果你了解其他语言的扩展函数,Dart 中的扩展函数与其他语言基本一致。...简单理解,扩展函数就是在现有的库或者类中扩展一个函数,比如,我们希望将一个整数字符串转换为 int 类型整数,正常情况下,实现如下: int.parse('10'); 但是此中写法不是很美观,比较美观的写法是这样的...有人觉得这个例子并不能体现 扩展函数 的强大之处,看下面这个例子,假设有一个第三方库的类 Person: class Person { final String name; Person(this.name...); } 有2个实例 person1 和 person2,我们希望这个2个实例相加,返回一个 Person 对象且name 值为2个name的拼接,中间用 , 隔开,不使用扩展函数实现: Person...var 和 dynamic 不能对 dynamic 类型使用扩展函数,下面的用户在运行时出现异常: dynamic a = '10'; a.toInt(); toInt 是 String 类型的扩展函数
另一方面它们值相等: val a: Int = 10000 print(a == a) // Prints 'true' val boxedA: Int?...因此较小的类型不能隐式转换为较大的类型。 因此我们不能声明一个 Byte 类型给一个 Int 变量,在不进行显示转换的情况下。...widened 每个number类型支持如下的转换: toByte(): Byte toShort(): Short toInt(): Int toLong(): Long toFloat(): Float toDouble...内置对Booelan的操作 || – 短路或 && – 短路与 数组 数组在Kotlin中使用 Array类来表示, Array类定义了set和get函数(使用时可以用[],通过符号重载的约定转换)...字符串可以使用for{: .keyword }循环遍历: for (c in str) { println(c) } 字符串字面量 Kotlin有两种类型的字符串: 转义字符串可能由转义字符、原生字符串
例如,具有 Double 参数的函数只能对 Double 值调用,而不能对 Float、 Int 或者其他数字值调用。 注:=== 表示比较对象地址,== 表示比较两个值大小。...2.2 字符类型 Kotlin中字符类型用Charactor表示,与Java不同的是,它们不能直接当作数字,它无法直接使用Char类型的ASCII进行算数运算。...(值初始化为其索引值) var arr = IntArray(5) { it * 1 } 2.5 字符串 Kotlin中字符串同Java,用String表示。...字符串用 String 类型表示。字符串是不可变的。 字符串的元素——字符可以使用索引运算符访问: si。 可以用 for 循环迭代字符串。 Kotlin提供了字符串的内嵌表达式,也被称为字符串模板。...): Int = max(num1, num2) 再结合Kotlin出色的类型推导机制,由于max()函数返回的是一个Int值,因此Kotlin可以推导出largerNumber()函数返回的必然也是一个
领取专属 10元无门槛券
手把手带您无忧上云