| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 写给Javaer看的Kotlin教程 -> 正文阅读 |
|
[移动开发]写给Javaer看的Kotlin教程 |
查看此文的基础是您拥有很好的Java基础, 且愿意尝试一下Kotlin.本文只是列举了一些Java和Kotlin语法上的一些区别. 三元:
输出
返回为空的类型:Unit 定义只读局部变量使用关键字?val?定义。只能为其赋值一次。 可重新赋值的变量使用?var?关键字。 函数的变长参数可以用?vararg?关键字进行标识:
$varName 表示变量值 ${varName.fun()} 表示变量的方法返回值: //age为空返回-1
类型转换:
在 Kotlin 中,三个等号 === 表示比较对象地址,两个 == 表示比较两个值大小。
主构造器中不能包含任何代码,初始化代码可以放在初始化代码段中,初始化代码段使用 init 关键字作为前缀。
次要构造函数: constructor 内部类使用 inner 关键字来表示。 abstract? ? // 抽象类 final ? ? ? // 类不可继承,默认属性 enum? ? ? ? // 枚举类 open? ? ? ? // 类可继承,类默认是final的 annotation? // 注解类 Kotlin 中所有类都继承该 Any 类,它是所有类的超类 接口中的属性 接口中的属性只能是抽象的,不允许初始化值,接口不会保存属性值,实现接口时,必须重写属性:
扩展函数可以在已有类中添加新的方法,不会对原类做修改,扩展函数定义形式:
标准库提供了?Pair?和?Triple Kotlin 使用 object 关键字来声明一个对象。 Kotlin 中我们可以方便的通过对象声明来获得一个单例。 里面的方法都是public static的 类内部的对象声明可以用 companion 关键字标记,这样它就与外部类关联在一起,我们就可以直接通过外部类访问到对象的内部元素。
val instance = MyClass.create() ? // 访问到对象的内部元素 声明可空变量 var/val 变量名 : 类型? = null/确定的值 后期初始化 // 声明组件
常量
索引遍历:
函数的入参的默认参数 numC : Boolean = false
Kotlin的默认修饰符为public,Java的默认修饰符为default Kotlin的超类是:Any
当一个类不是用open修饰符修饰时,这个类默认是final的。即: class A{} 等价于 final class A{} ? // 注意,则的`final`修饰符在编辑器中是灰色的,因为Kotlin中默认的类默认是final的 数据类 data class User(val name : String, val pwd : String) 修改属性值. val mUser = User("kotlin","123456") val mNewUser = mUser.copy(name = "new Kotlin") //Koltin要修改数据类的属性,则使用其独有的copy()函数。其作用就是:修改部分属性,但是保持其他不变 密封类 不能被实例化
// 其子类可以定在密封类外部,但是必须在同一文件中 v1.1之前只能定义在密封类内部 object NotANumber : SealedExpr() 密封类的子类必须是在密封类的内部或必须存在于密封类的同一文件。这一点就是上面提到的有效的代码保护。 因为kotlin没有static,所以使用伴生对象
有名字的伴生对象:
遍历 map/pair型list
k、v?可以改成任意名字。 使用区间: for (i in 1..100) { …… }? // 闭区间:包含 100 for (i in 1 until 100) { …… } // 半开区间:不包含 100 for (x in 2..10 step 2) { …… } for (x in 10 downTo 1) { …… } if (x in 1..10) { …… } If not null 缩写 val files = File("Test").listFiles() println(files?.size) If not null and else 缩写 val files = File("Test").listFiles() ?println(files?.size ?: "empty") if null 执行一个语句 val values = …… val email = values["email"] ?: throw IllegalStateException("Email is missing!") 在可能会空的集合中取第一元素 val emails = …… // 可能会是空集合 val mainEmail = emails.firstOrNull() ?: "" if not null 执行代码 val value = …… value?.let { ? ? …… // 代码会执行到此处, 假如data不为null } 映射可空值(如果非空的话) val value = …… val mapped = value?.let { transformValue(it) } ?: defaultValue // 如果该值或其转换结果为空,那么返回 defaultValue。 try-catch 表达式:
TODO():将代码标记为不完整 Kotlin 的标准库有一个?TODO()?函数,该函数总是抛出一个?NotImplementedError。 其返回类型为?Nothing,因此无论预期类型是什么都可以使用它。 还有一个接受原因参数的重载: fun calcTaxes(): BigDecimal = TODO("Waiting for feedback from accounting") IntelliJ IDEA 的 kotlin 插件理解?TODO()?的语言,并且会自动在 TODO 工具窗口中添加代码指示。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 22:12:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |