IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> kotlin学习笔记 -> 正文阅读

[移动开发]kotlin学习笔记

kotlin官方学习网站:https://developer.android.google.cn/kotlin/add-kotlin

.kt编译成.java

tools--->kotlin--->Show Kotlin Bytecode-->Decompile


Kotlin 基础语法

1.Var 与 Val

var 关键字: 可变变量
var <标识符> : <类型> = <初始化值>
// 可以改,可以读 ?get ?set 如:var info1 : String = "A"

val 关键字: 不可变变量,只能赋值一次的变量(有一点点类似Java中final修饰的变量)
val <标识符> : <类型> = <初始化值>
// 只能读, 只有 get 如:val info2 : String = "B"

2.函数

//普通函数 返回类型 ?== 类型推导 Int
fun add2(number1: Int, number2: Int) = number1 + number2

// 可变参数 (可变长 参数函数)vararg关键字
fun lenMethod(vararg value: Int) {
? ? for (i in value) {
? ? ? ? println(i)
? ? }
}

3.字符串模板

?// $ 表示一个变量名或者变量值

?// $varName 表示变量值

?// ${varName.fun()} 表示变量的方法返回值

4.NULL检查机制

? // Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,
? // 有两种处理方式,字段后加!!像Java一样抛出空异常,
如:var info: String? = null ? ?println(info!!.length)//!! 我自己负责info 不会为null == ?(不管null不null必须执行) ?== ?Java
? ? ?另一种字段后加?
如:var info: String? = null ? ?println(info?.length) ?// ? 如果info是null,就不执行 .length


?// ?: ?如果值为null ?就输出设置的字符串 ?“你很牛逼”
如: var info: String? = null
? ? println(info?.length ? ?: "你很牛逼")//打印值为:你很牛逼

5.区间

// 1 到 9
? ? for (i in 1..9) {
? ? ? ? // println(i)
? ? }

? ? // 不会输出
? ? for (i in 9..1) {
? ? ? ? // println(i)
? ? }

? ? // 大 到 小
? ? for (i in 9 downTo 1) {
? ? ? ? // println(i)
? ? }

? ? // 用区间做判断
? ? val value = 88
? ? if (value in 1..100) {
? ? ? ? // println("包了 1 到 100")
? ? }

? ? // 步长指定
? ? for (i in 1..20 step 2) {
? ? ? ? // 1 3 5 7 ...
? ? ? ? // println(i)
? ? }

? ? // 排除 最后元素
? ? for (i in 1 until 10) {
? ? ? ? println(i)
? ? }

?比较与数组

1.比较两个值

? ? //比较值本身 == 等价 Java的equals ? ?

? ? // 比较对象地址 ? ===?


2.数组

?// 第一种形式
? ? val numbers = arrayOf(1, 2, 3, 4, 5, 6, 7, 8)
? ? println(numbers[0])
? ? ?println(numbers[7])
? ? for (number in numbers) {
? ? ? ?println(number)
? ? }

? ? // 第二种形式 ?value=0
? ? val numbers2 = Array(6, ?{value: Int -> (value + 200) })
? ? for (value in numbers2) {
? ? ? ? println(value) ? //打印值:200 201 202 203 204 205
? ? }

条件与控制

1.条件

?// 表达式 比 大小 最大值
? ? val maxValue = if (number1 > number2) number1 else number2

2.when运用

? ? /* val number = 5
? ? ?when(number) {
? ? ? ? ?1 -> println("一")
? ? ? ? ?2 -> println("二")
? ? ? ? ?3 -> println("三")
? ? ? ? ?4 -> println("四")
? ? ? ? ?5 -> println("五")
? ? ? ? ?else -> println("其他")
? ? ?}*/

? ? /*val number = 745
? ? when(number) {
? ? ? ? in 1..100 -> println("1..100")
? ? ? ? in 200..500 -> println("200..500")
? ? ? ? else -> println("其他")
? ? }*/

?循环与标签

1.for循环操作


2.自带标签与系统标签

类与对象

1.父类子类 与 构造函数等
?

// 再Kotlin 全部都是没有默认值的// 再Java 成员有默认值,但是方法内部没有默认值

// lateinit:懒加载 ?没有赋值 就不能使用,否则报错

//类: public final class Person 默认就是这样的,不能被继承, ?可以加open就可以被继承了
open class Person(id: Int) // 主构造
{

? ? // 次构造
? ? constructor(id: Int, name: String) : this(id) {

? ? }

? ? // 次构造
? ? constructor(id: Int, sex: Char) : this(id) {

? ? }

? ? // 次构造
? ? constructor() : this(787) {

? ? }

}

2.接口和抽象类

// 接口默认都是 open
interface Callback {

? ? fun callbackMethod() : Boolean

}


// 默认是 public final class Person 不能被人家继承的 ? ? ?abstract有open的特征 相当于open
abstract class Person : Callback , Callback2 {

? ? abstract fun getLayoutID() : Int

? ? abstract fun initView()

}


3.data 与 object

// 不会再修改了,可以是使用val
// get set 构造 equals hashCode toString, ?copy
data class User(var id: Int, val name: String, val sex: Char)

// 只实例一次 ? 相当于 单例
object MyEngine {

? ? fun m() {
? ? ? ? println("M run")
? ? }

}

4.自己写单例

内部类和嵌套类
?// 这个不是一个内部类,所有拿不到外部类的成员
? ? // 嵌套类 = 可以在类的里面再写一个类,但是这个类和外部类 不交换
? ? class Sub {

? ? ? ? fun show() {
? ? ? ? ? ? println()
? ? ? ? }


? ? ? ? class A {


? ? ? ? ? ? class B {


? ? ? ? ? ? ? ? class C {

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? }

? ? // 这个才是内部类
? ? inner class Sub2 {

? ? ? ? fun show() {
? ? ? ? ? ? println(I)
? ? ? ? }

? ? }

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-05 17:27:58  更:2021-08-05 17:29:46 
 
开发: 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年5日历 -2024/5/17 12:13:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码