【Android】kotlin语法学习

1 语法入门

package com.example.kotlinstudy

var age: Int = 18
var name: String = "dindin"
var nameNotNull: String ? = null

fun main(args: Array<String>){
    //name = nameNotNull!!
   nameNotNull = nameNotNull

    printLen(name)
}

fun printLen(str: String): String {

    println("kotlin的模版语法:$str")
    return str
}

2 kotlin调用java

package com.example.kotlinstudy

import kotlin.reflect.KClass

fun main(args: Array<String>){
    
    // 在kotlin调用java类
    testClass(JavaMain::class.java)

    // 在kotlin调用kotlin类
    testClass(KotlinMain::class)

    // 用反引号解决java变量与kotlin关键字的冲突
    println(JavaMain.`in`)
}

// 在kotlin调用java类
fun testClass(clazz: Class<JavaMain>) {
    println(clazz.simpleName)
}

// 在kotlin调用kotlin类
fun testClass(clazz: KClass<KotlinMain>){
    println(clazz.simpleName)
}

3 初学常见问题

  1. kotlin没有封装类,如:有int,没有Integer。可以用反射的方法调用封装类。
  2. kotlin类型空值敏感,如:
package com.example.kotlinstudy

import com.example.kotlinstudy.JavaMain.format
import kotlin.reflect.KClass

fun main(args: Array<String>){

    function("")
}

// 在kotlin调用java类
fun function(str: String) {
    val fmt1 = format(str) // String! 只会由编译器自己推断出来,我们无法声明。在kotlin中推断出是java中的类型
//    println(fmt1.length) // Exception in thread "main" java.lang.NullPointerException

//    val fmt2 : String = format(str) // Exception in thread "main" java.lang.IllegalStateException: format(str) must not be null
    val fmt3 : String? = format(str)
    println(fmt3?.length) // 空安全,如果变量为空,输出null,否则输出结果
}

java中定义的format函数:

public class JavaMain {

    public static String format(String string) {
        return string.isEmpty() ? null : string;
    }
}
  1. kotlin没有静态变量与静态方法
package com.example.kotlinstudy

fun main(args: Array<String>){
    Test.sayMessage("hello") // 在kotlin中调用
}

object Test {
    @JvmStatic   // 通过这里的注解Test类中的方法
    fun sayMessage(msg: String){
        println(msg)
    }
}
加了@JvmStatic注解,java和kotlin都用同样的方式调用Test类中的sayMessage方法:

Test.sayMessage("hello")


不加@JvmStatic注解,Kotlin调用方式不变,但java中不同了:

Kotlin code:Test.sayMessage("hello")
java code:  Test.INSTANCE.sayMessage("hello")

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值