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

Kotlin基本语法和使用技巧

在使用第一次变量之前,一定要保证为questionTextView赋值 , 不然会出现空指针异常。...强⾏行行调⽤用符 ?. 安全调⽤用符 kotlin默认不能空,变量类型后面跟?号定义,表明这是一个可空类型 ?....代表着如果该类型为空的话就返回null不做后续的操作,如果不为空的话才会去访问对应的方法或者属性 !!....代表着如果该类型为空的话就抛出NullPointerException,如果不为空就去访问对应的方法或者属性, 所以只有在很少的特定场景才用这种符号,代表着程序不处理这种异常的case了,会像java代码一样抛出...List,mutableListOf() 创建可变的 List Kotlin 中集合分为两种类型:只读的和可变的。

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

    Kotlin与Java互操作

    表示“可以可变或不可变、可空或不可空的 T 的 Java 集合”; Array! 表示“可空或者不可空的 T(或 T 的子类型)的 Java 数组”。...返回void的方法 如果在Java中返回void,那么Kotlin返回的就是Unit。如果在调用时返回void,那么Kotlin会事先识别该返回值为void。...getID(C c) { return c.ID; } } 延迟初始化的属性(在Java中)也会暴露为字段, 该字段的可见性与 lateinit 属性的 setter 相同。...静态字段 在命名对象或伴生对象时,声明的 Kotlin 属性会在该命名对象或包含伴生对象的类中包含静态幕后字段。通常这些字段是私有的,但可以通过以下方式之一暴露出来。...Kotlin 中我们可以这样写 unboxBase(boxDerived(“s”)),但是在 Java 中是行不通的,因为在 Java 中类 Box 在其泛型参数 T 上是不型变的,于是 Box 并不是

    3.5K30

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

    Day 5:循环,范围表达式与解构 for 循环在与其他两种 Kotlin 特性一起使用时可以获得超级能力:范围表达式和解构。...Day 6:属性 在 Kotlin 中,类可以具有可变和只读属性,默认情况下生成 getter 和 setter。如果需要,您也可以实现自定义的。...您可以在您的类中使用解构,或者扩展现有的类来添加解构。 第一周学习小结: 本周以基本知识为主:处理空错误,简化循环和条件,属性,解构架。下一周我们将会深入探索 Kotlin 的更多功能。...Day 17:Lateinit Android 中,在 onCreate 或者其它的回调初始化对象,但在 Kotlin 中不为空的对象必须初始化。那么怎么办呢?可以输入 lateinit。...它们将被编译为字段和静态访问器。

    2.2K30

    Kotlin学习之路(4)函数的运用

    public 表示该函数为公共方法,而Kotlin默认就表示函数是公开的,所以省略了关键字 ③ Java使用 void表示该函数没有返回值,而Kotlin中没有关键字void ,若没有返回值不用特别声明...Kotlin 中引用了空安全机制,允许某个变量为空,就需要在变量类型后面加个“?”...在Java体系中,可变参数可以采用“Object…args”的形式。但是在Kotlin中新增了关键字vararg,表示其后面的参数个数不确定。...以可变的字符串为例 Java写法“String…args”,而Kotlin中的写法“vararg args:Sting?”,函数内部解析的时候,Kotlin会把可变参数当成一个数组。...,以T声明的参数 包括输入输出参数,参数必须在函数调用时指定。

    74910

    Spring中国教育管理中心-Apache Cassandra 的 Spring 数据教程十四

    请注意,由 lambda 表达式实现的回调不会公开类型信息,因此使用不可分配的实体调用这些会影响回调吞吐量。使用classorenum为回调 bean 启用类型过滤。...在单个实现类中组合多个实体回调接口。...(Kotlin 允许使用具有可为空值的函数式构造。请参阅Kotlin 空值安全性综合指南。)...Kotlin 对 JSR-305 注释和 Spring 可空性注释的支持为Kotlin 开发人员提供了整个 Spring Data API 的空安全,具有null在编译时处理相关问题的优势。...尚不支持通用类型参数、可变参数和数组元素可空性,但应在即将发布的版本中提供。 15.3.对象映射 有关Kotlin对象如何具体化的详细信息,请参阅Kotlin 支持。

    1.7K40

    深入学习 Kotlin:基础语法与高级特性

    Kotlin 基础语法3.1 变量与常量val:用于声明不可变的变量(常量),相当于 Java 中的 final。var:用于声明可变的变量。...val name = "Kotlin" // 自动推断为 Stringval age = 25 // 自动推断为 Int3.3 函数Kotlin 中的函数声明简洁,可以在顶层直接定义函数...强制解除 null 检查(不推荐使用,因为会抛出 NullPointerException):val length = name!!....Kotlin 的优势简洁性:相对于 Java,Kotlin 更加简洁,可以减少冗余代码。空安全:内建的空安全特性,避免了常见的空指针异常。...随着 Kotlin 的普及,越来越多的开发者选择 Kotlin 来替代 Java,特别是在开发 Android 应用时,Kotlin 的优势尤为明显。

    14910

    干货 | Kotlin超棒的语言特性

    所有的对象都通过一个指针所持有,而指针只有两种类型:var 表示指针可变,val表示指针不可变。...即Elvis表达式的含义在于为整个 ?表达式托底,即若整个表达式已经为null的情况下,Elvis表达式能够让这个表达式有个自定义的默认值。这样进一步保证了空安全,同时代码也不失简洁性。...值得注意的是,Kotlin允许这个接收者为null,这样我们可以写出一些在Java里面看似不可思议的代码。比如我们要把一个对象转换成字符串,在Kotlin中可以直接这么写: ?...如果我们把数据做成可观察属性,在观察回调方法中直接刷新ListView,可以杜绝这个问题。 ? 10 函数类型 Kotlin中一切皆是对象,函数也不例外。...然后需要一个属性来保存回调对象。最后在View滑动的时候,我们调用这个回调对象的onScroll以实现回调。 ?

    1.5K40

    Better Kotlin

    当我第一次使用 Kotlin 的时候,我以为val 和 var 的区别在于val 代表不可变,而 var 代表是可变的。但事实比这更加微妙:val 不代表不可变,val 意味着只读。。...访问一个伴生对象的私有常量字段需要经过以下方法: 调用伴生对象的静态方法 调用伴生对象的实例方法 调用主类的静态方法 读取主类中的静态字段 为了访问一个常量,而多花费调用4个方法的开销,这样的 Kotlin...代表它们可以为空,然后为它们赋值为 null。实际上,我们在使用中一点都不希望它们为空。这样造成的后果就是,我们每次要使用它的时候都必须去先判断它不为空。这样无用的代码,无疑是浪费了我们的工作时间。...7 注意 Kotlin 的可空和不可空 最近闹了一个笑话,在项目中需要写一个上传跳绳数据的功能。于是有了下面的代码。...找到了原因,解决方案也就很简单,在 Kotlin 接口中允许参数 data 为 null 或者直接在调用点加上 @NotNull 注解即可。

    1.3K20

    阿里云大神亲码“Kotlin深度笔记”,不讲一句废话,全是精华

    基本类型、包、控制流、返回与跳转 image.png 3.类和对象 主要内容:类和继承、属性和字段、接口、可见性修饰词、扩展、数据对象、泛型、嵌套类、枚举类、对象表达式和声明、代理模式、代理属性 4.函数和...操作符 换行 巧用 Android Studio 为已有基于 Java 的 Android 项目添加Kotlin 支持 将 Java 文件转成 Kotlin 文件 认识 Kotlin 基本类型 基本类型代码演练...image.png 走进 Kotlin 的数组 Kotlin 数组的创建技巧 Kotlin 数组的遍历技巧 数组代码演练 走进 Kotlin 的集合 集合的可变性与不可变性 集合排序 集合中的 Set...Java 重载,在 Kotlin 中怎么巧妙过渡一下? Kotlin 中的判空姿势 Kotlin 复写 Java 父类中的方法 Kotlin “狠”起来,连TODO 都不放过!...Kotlin 编写 Gradle 脚本的优势 实战前的准备 开始重构 Kotlin DSL 实战--依赖管理 Kotlin 编程的三重境界 前期准备 为工程添加 Kotlin 支持 Kotlin 高阶函数

    1.1K10

    Kotlin 与 Java 对比Kotlin 开发者社区

    Kotlin 解决了一些 Java 中的问题: Kotlin 通过以下措施修复了 Java 中一系列长期困扰我们的问题 空引用由类型系统控制。...无原始类型 Kotlin 中数组是不型变的 相对于 Java 的 SAM-转换,Kotlin 有更合适的函数类型 没有通配符的使用处型变 Kotlin 没有受检异常 Java 有而 Kotlin 没有的东西...受检异常 不是类的原生类型 静态成员 非私有化字段 通配符类型 Kotlin 有而 Java 没有的东西 Lambda 表达式 + 内联函数 = 高性能自定义控制结构 扩展函数 空安全 智能类型转换...字符串模板 属性 主构造函数 一等公民的委托 变量和属性类型的类型推断 单例 声明处型变 & 类型投影 区间表达式 操作符重载 伴生对象 数据类 分离用于只读和可变集合的接口 协程

    53320

    Kotlin:02-函数的声明

    一、函数声明的基本格式 在上一篇文章中,我们在创建Intellij IDEA 和 Eclipse 的编译环境时已经写过 HelloWorld 代码,具体代码为: fun main(args: Array...1、函数无返回值 在kotlin中,如果某个函数不需要返回数据,那么这个函数的类型就是 Unit。...三、参数长度可变的函数 所谓参数长度可变的函数,就是说,在调用这个函数的时候我们可以根据实际需要传入参数,参数的个数由我们的具体需要决定,可能是1个,也可能是2 个或3个等等。...参数长度可变的函数在声明的时候需要使用关键字 vararg,示例如下: fun varList(vararg vars: Int) { //关键在vararg for (v in vars) {...// 表示单行注释 ,上面在参数可变的函数示例中就使用了单行注释 /* */ 表示多行注释

    61130

    Kotlin学习笔记

    会类型推导出变量的类型 var age = 17 val id = "1000" 注意:val 表示该变量 引用不可变,但是对象里的内容可以变 1.3 when、循环语句 1.3.1 when 在 Java...跟在类名后面,表示这个对象允许为null; 把"!!"跟在类名后面,表示这个对象不允许为null; 2. 调用对象时: 把"?"跟在对象后面,表示如果为null,程序就会视而不见,不会空指针。...// 因为在调用时加上了问号,所以程序不会抛出异常 Log.d("TAG", "-->> room name = ${room?....(items.getClass()); //数组类型 return Arrays.asList(items); } Kotlin 和 Java 不一样,Kotlin 使用 vararg 关键来定义可变参数...内部类 在 Kotlin 中内部类默认是静态的( Java 与此相反),不持有外部类的引用: class OuterClass { //在 Kotlin 中内部类默认是静态的,不持有外部类的引用

    1.9K30

    Kotlin 开发中遇到的坑(持续更新)

    1、空类型安全 1.1、可空类型正确用法 kotlin是强类型判断的,每一个对象都有可以为空和不可以为空之分。...但是在kotlin中,当mUser为null时,mUser?.grade的取值为null,而null != -1 ,在kotlin是成立的,这就不符合我们实际逻辑了。 解决方法如下:通过 ?...的方法: 3.1、用 val 而不是 var 在 Kotlin 中 val 代表只读,var 代表可变。建议尽可能多的使用 val。val 是线程安全的,并且不需要担心 null 的问题。...只需要注意 val 在某些情况下也是可变的就行了。对于普通变量来说,不可变( immutable )和只读( read-only )之间没什么区别。...的值,并且注意: 在Person中name的类型是String,也就是说是不允许name=null的 输出结果: null 是不是有些奇怪,感觉意外绕过了Kotlin的空类型检查。

    4.6K02

    Kotlin 变量、常量和类型

    数据类型 数值类型 在 Kotlin,一切都是一个对象,你可以调用任何变量的成员函数和属性。...如果不超过 Int 的范围,则该类型为 Int。如果超过,则类型为 Long。若要显式指定 Long 值,请将后缀 L 附加到该值。显式类型规范触发编译器检查值是否不超过指定类型的范围。...声明一个不可变变量 val 并初始化它。 声明一个不可变变量,并在不指定类型的情况下初始化它。 你可以自由选择何时初始化变量,但是,它必须在第一次读之前初始化。...Kotlin 为每一种非空类型提供对应的可空类型(Nullable),就是在非空类型后面加上问号(?)表示可空类型。 var n: Int? = 10 Int?...否则,告诉调用方字符串为空或 null。 可空类型在具体使用时会有一些限制: 不能直接调用可空类型对象的函数或属性。 不能把可空类型数据赋值给非空类型变量。

    98510

    Java 反射 VS Kotlin 反射

    Kotlin 反射的特性包含: 提供对属性和可空类型的访问权限,这是由于 Java 没有属性和可空类型的概念。 Kotlin 反射不是 Java 反射的替代品,而是功能的增强。...不可变属性的引用 Kotlin 使用::属性来获取不可变属性的引用,并返回 KProperty 类型的值。它的get()方法会返回属性的值,它的name属性会返回可变属性的名称。...1 x val y: kotlin.String hello y 可变属性的引用 Kotlin 使用::属性来获取可变属性的引用,并返回 KMutableProperty 类型的值。...Java 反射与 Kotlin 反射的互操作性 为一个 Kotlin 属性获取一个 Java 的 getter/setter 方法或者幕后字段,需要使用 kotlin.reflect.jvm 包。...幕后字段 (backing field) 是 Kotlin 属性自动生成的字段,它只能在当前属性的访问器(getter、setter)内部使用。

    2.6K30
    领券