美文网首页
kotlin基础语法记录(一)

kotlin基础语法记录(一)

作者: 大冷月 | 来源:发表于2021-08-22 13:49 被阅读0次
  1. 可读、可读写、延迟初始化
var  //可读写
val  //只读
lateinit  //晚一点再进行初始化,会被声明为可空类型
//可空类型,不可空类型
//平台类型
java中是通过注解实现可空类型和不可空类型(Nullable、NonNull)


var name: String? = null // ? 声明一个可空类型的变量
name?.length()   // ? 安全调用,判空
name!!.length() // !! 强制调用,不判空

//Java中int float double long
对应kotlin->Int Float Double Long  不可空类型

//java中Int Float Double Long
对应kotlin->Int?  Float?  Double?  Long? 可空类型

//声明一个延迟初始化的不可空变量
private lateinit name : String 

静态类型编程语言:一个变量的类型一旦确定了就不能改变
动态类型编程语言:一个变量的类型可以随时改变。python\js\groovy

  1. 静态方法
//1、kotlin中没有static关键字
//2、kotlin中静态方法写法,文件中直接定义方法和变量,也叫顶层函数,包级函数
//       a)java调用kotlin静态方法--->类名Kt.方法名()
//       b) @file:JvmName("AAA")修饰后,在Java中可以使用AAA.方法名()调用。需要写在文件最上面,package之前

//object创建类并创建其对象
//object修饰的类,可以认为变量和方法都会被定义为静态的。其实是创建了CacheUtils的对象
object CacheUtils{
}  
//在kotlin中调用使用CacheUtils.getXX()
//在Java中调用使用CacheUtils.INSTANCE.getXX()
//该方法其实是创建了这个类的单例对象去使用的。创建匿名内部类也使用object关键字


//非object的类里面使用
class MyApplication{
    companion object {
        fun getXX():String{}
    }
}
//在Java中使用XX.Companion.

companion object {
     //加上  @JvmStatic可以在Java类里面使用类名.方法名()调用
    @JvmStatic 
    fun getXX():String{}
}
  1. 类型判断和转换
is  instanceof
as  强转
AAA::class kotlin的class
AAA::class.java java的class

void对应Unit
Object对应Any
  1. switch case
when  Java中switch的高级版,支持表达式
when (code){
  in 200..299 ->{}

}
  1. 构造方法
construct(name:String) String super(name){}
  1. get set方法
set

//保证只生成一个公开的成员变量,而不是生成set get方法
@JvmField
var username:String? = null
  1. 数组
创建数组
arrayOf("a","b","c")  基本类型会自动装箱,因此基本类型不使用
intArrayOf(1,2,3)
数组长度size
arrayOf()
intArrayOf()
  1. 枚举

  1. 编译器常量
class XXX {
    companion object {
      //使用const关键字,类似于java中的static final String
      private val const NAME = "张三"
    }
}

  1. List、Map等集合类
//要么显示的声明类型
val list:ArrayList<String> = ArrayList()

//要么使用类型推断
val list = ArrayList()

//要么使用类型推断
val list = arrayListOf<String>()

//要么使用
val list = mutableListOf<String>()

//要么使用
val list:MutableList<String> = ArrayList()

//不能使用List,因为kotlin中List是不可修改的,没有add函数的
val list:List<String> = ArrayList()

//遍历
for (name : in list) {  
}

  1. 内部类
//非静态内部类,需要inner修饰符
inner class XX {}

//静态内部类
class XXX {}

  1. internal
当前模块内可见,可以使某个public的类,仅在当前module内被访问到,其他moudle内访问不到
某些类,希望在当前module内到处哭访问,但是又不希望外部mudule访问。
  1. 内部类使用外部类this对象
internal class Outer {
    internal inner class Inner {
        var outer: Outer = this@Outer
    }
}
  1. 受检异常
Kotlin 不需要使⽤ try-catch 强制捕获异常
  1. 声明接⼝/抽象类/枚举/注解
// 声明抽象类
abstract class
// 声明接⼝
interface
// 声明注解
annotation class
// 声明枚举
enmu class
  1. 编译期常量
在静态变量上加上 const 关键字变成编译期常量
  1. 标签
在 Java 中通过 「 类名.this 例如 Outer.this 」 获取⽬标类引⽤
在 Kotlin 中通过「 this@类名 例如 this@Outer 」获取⽬标类引⽤
  1. 遍历
for(item in items)
  1. 嵌套类
在 Kotlin 当中,嵌套类默认是静态内部类 (不持有外部类引⽤)
通过 inner 关键字声明为普通内部类 (内部使⽤外部对象时就会持有外部类引⽤)
  1. 可⻅性修饰符
默认的可⻅性修饰符是 public
新增的可⻅性修饰符 internal 表示当前模块可⻅
  1. open/final
Kotlin 中的类和函数,默认是被 final 修饰的 ( abstract 和 override 例外)
  1. 注释
注释中可以在任意地⽅使⽤ [] 来引⽤⽬标,代替 Java 中的 @param @link 等。
  1. ⾮空断⾔
可空类型强制类型转换成不可空类型可以通过在变量后⾯加上 !! ,来达到类型转换。

相关文章

  • 快速上⼿ Kotlin

    快速上⼿ Kotlin 基础语法 函数基础语法 与 Java 代码互调 Java 与 Kotlin 交互的语法变化...

  • kotlin进阶—函数、泛型、高级特性

    以下是我的kotlin系列文章kotlin基础知识—基本语法(一)kotlin基础知识—基本语法(二) 前言 我个...

  • kotlin基础语法记录(一)

    可读、可读写、延迟初始化 静态类型编程语言:一个变量的类型一旦确定了就不能改变动态类型编程语言:一个变量的类型可以...

  • kotlin学习笔记

    kotlin基础知识 基础语法 kotlin中的特殊语法 object创建匿名内部类的写法kotlin中声明单例的...

  • Kotlin基础语法<二>

    学习需要一步步进行,前面已学习过了部分kotlin基础语法。基础语法的学习与总结会让我对...

  • Kotlin 循环和条件控制(五)

    Kotlin 循环和条件控制(五) 上一篇我们讲了Kotlin的基础语法Kotlin 实战语法(四) ,现在我们要...

  • kotlin入门潜修系列教程

    kotlin入门潜修之开门篇—kotlin是什么? kotlin入门潜修之基础篇—基础语法kotlin入门潜修之基...

  • Kotlin 进阶之路 目录

    Kotlin 进阶之路 目录 Kotlin 进阶之路1 基础语法Kotlin 进阶之路2 集合类型Kotlin 进...

  • Kotlin 基础语法使用

    Kotlin 基础语法 一、基础语法 .kt.java 一个public的class toplevel.kt,变量...

  • Kotlin 进阶之路1 基础语法

    Kotlin 进阶之路 目录 1.Kotlin 基础语法 1.1第一程序 1.2常量 1.3变量 2.Kotlin...

网友评论

      本文标题:kotlin基础语法记录(一)

      本文链接:https://www.haomeiwen.com/subject/cvfxoktx.html