摘要: 解构声明(Destructuring declarations) 解构声明可以用于将一个变量拆分成由其多个成员属性构成的组合来表示,例如: class Person(var name: String?, var email: String?) { operator fun component1() 阅读全文
posted @ 2023-06-01 20:21 jqc 阅读(35) 评论(0) 推荐(0) 编辑
摘要: Any Kotlin中的Any即相当于Java中的Object类,是一切其他非空类型的父类型,Any?则表示一切可空类型的父类型。 Any拥有三个方法: equals() hashCode() toString() 事实上Any在编译成字节码后正是会转成java.lang.Object类。 Unit 阅读全文
posted @ 2023-06-01 12:30 jqc 阅读(281) 评论(0) 推荐(1) 编辑
摘要: 字符串模板的使用 在Kotlin中可以直接在字符串字面值中引用变量,例如: val name = "william" val str = "my name is ${name}" println(str) 并且Kotlin官方文档建议使用字符串模板来替代字符串连接符的使用,原因在于我们知道Strin 阅读全文
posted @ 2023-06-01 12:30 jqc 阅读(123) 评论(0) 推荐(0) 编辑
摘要: Kotlin中的可空类型 在Kotlin中可以通过在类型后加一个?来表示该类型是可空类型,例如: var name : String? var id: String 上述代码表示name是一个可空的String类型变量,而id是一个不可为空的String类型变量。 如果在代码中试图将一个可空的值赋值 阅读全文
posted @ 2023-06-01 12:10 jqc 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 扩展函数 Kotlin中可以给一个类额外添加这个类中没有的函数,即扩展函数。例如: fun Int.dp2px(context: Context) { TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, this.toFloat(), con 阅读全文
posted @ 2023-05-30 20:34 jqc 阅读(97) 评论(0) 推荐(0) 编辑
摘要: lateinit lateinit 关键字用来修饰一个类的非空成员变量,表示该成员变量的值在稍后合适的时机会初始化,例如: class Test { lateinit var name: String fun test() { if (::name.isInitialized) { println( 阅读全文
posted @ 2023-05-26 12:34 jqc 阅读(373) 评论(0) 推荐(0) 编辑
摘要: 无符号数据类型 Kotlin支持了几种常见的无符号整型,如下表所示: 数据类型 数据大小 取值范围 UByte 1字节 0 ~ 255 UShort 2字节 0 ~ 65535 UInt 4字节 0~ 2^32-1 ULong 8字节 0 ~ 2^64-1 除此之外,还支持了对应无符号整型的数组类型 阅读全文
posted @ 2023-05-24 15:37 jqc 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 线程是CPU调度执行的基本单位,多个线程共享系统为进程分配的资源,又可以被系统独立调度执行。 多线程模型 实现多线程主要有3种模型:内核线程模型、用户线程模型、混合线程模型 内核线程模型 内核线程模型即完全依赖操作系统内核提供的内核线程( Kernel Level Thread ,KLT )来实现多 阅读全文
posted @ 2018-08-26 19:19 jqc 阅读(3034) 评论(0) 推荐(0) 编辑
摘要: Java语法糖 语法糖即为了方便开发人员进行代码开发而在语言层面添加了一些语法支持,这些语法对程序性能并不会有什么提升,仅仅用于提升开发效率。 Java语法糖需要Java编译器提供支持,在将源代码编译成字节码的过程中,编译器会进行解语法糖操作,将语法糖还原成更普通的Java语法。 常见的Java语法 阅读全文
posted @ 2018-03-18 01:30 jqc 阅读(291) 评论(0) 推荐(0) 编辑
摘要: Java编译期的概念 编译期即将源代码转变成本地代码的过程,对于Java来说,这个过程会更加的多样。 Java编译期因为采用的编译器类型不同而导致概念也不同,Java编译器可以分为以下三种类型: 前端编译器 前端编译器将java源代码转变成字节码,常见的前端编译器包括Javac编译器、ECJ编译器( 阅读全文
posted @ 2018-03-10 18:01 jqc 阅读(522) 评论(0) 推荐(0) 编辑