目录:
1、声明变量
2、声明函数
3、Java与Kotlin交互的语法变化
---3.1、调用方法
---3.2、kotlin传java的class
---3.3、kotlin的class和java的class格式不一致
---3.4、关键字冲突
1、声明变量
var age:Int = 18
val name:String = "LIuJia"
val name2:String? = null
fun main(args:Array<String>){
name = name2!!
name2 = name
}
声明变量语法:
var age:Int = 18
var 变量名:类型=值
var:变量
val:不可变的变量(!=常量)
- String和String?是两种类型,不可相互赋值
- name2!!,双叹号表示强转
- String可以赋值给String?,因为String?类型是必然包含String的。
2、声明函数
fun println(str: String):String{
println("这个字符串是:$str")
return str
}
函数语法:
fun 函数名(参数名:参数类型):返回值类型{}
3、Java与Kotlin交互的语法变化
3.1、调用方法
//Utils.kt
fun echo(name:String){
println("&name")
}
//Main.java
public static void main(String[] args){
UtilsKt.echo("hello");
}
- Utils中声明的所有函数,变量最终都会编译成这个类的public static的方法或变量,所以在Java中调用Kotlin代码就要加上这么个类名了
object Test{
fun sayMessage(msg:String){
println(msg)
}
}
//kotlin code:
Test.sayMessage("hello")
//java code:
Test.INSTANCE.sayMessage("hello");
- 以object关键字开头,后面跟随类的声明,这种语法在kotlin中是创建一个匿名内部类的写法。可用此方法在kotlin单例中。
3.2、kotlin传java的class:
//java code:
TestMain.class
//kotlin code:
TestMain::class.java
3.3、kotlin的class和java的class格式不一致
fun testClass(clazz:Class<JavaMain>){
println(clazz.simpleName)
}
fun testClass(clazz:KClass<KotlinMain>){
println(clazz.simpleName)
}
fun main(args:Array<String>){
//在kotlin中调用java的class
testClass(JavaMain::class.java)
//在kotlin中调用kotlin的class
testClass(KotlinMain::class)
}
3.4、关键字冲突
public class JavaMain{
public static String in = "in"
}
println(JavaMain.'in')
- kotlin调用java的变量名in导致冲突,用反引号''解决。
网友评论