-
Kotlin中的private和public
Kotlin中创建的默认变量都是私有类型,会隐式生成对应的get/set函数。调用的时候虽然是直接通过变量名调用,实际上调用的是变量对应的get/set方法。要是变量变为public 需要使用@JvmFiled注解。
私有变量:
class User{
var name:String? = null
set(value){
filed = value
}
get(){
return field
}
}
公有变量:
class User{
@JvmField
var name:String? = null
}
-
Kotlin中的类型系统
Java中所有类的基类是Object,Kotlin中是Any。
class Java extents Object{
}
class Kotlin : Any() {
}
Java中函数无返回值使用void,Kotlin中使用Unit。
public void test(){ }
public fun test(): Unit{ }
-
数组
private String[] array = new String[]{"a","a","a"};
private var array = arrayOf("a","a","a”)
使用基本类型数组时,arrayOf会将数据进行装箱拆箱操作,会增加内存开销 。推荐使用IntArray,FloatArray等。。
var intArray == intArrayOf(1,2,3,4)
var floatArray == floatArrayOf(1,2,3,4)
-
基本数据类型
基本数据类型的特点:不可为null,有默认值。如Java中int, double, float等,在Kotlin中对应的是Int, Double, Float。看起来有点像Java中基本数据类型的封装类,但是并不是。封装类是可空的,所以Java中基本数据类型的封装类(Int, Double, Float等)对应的Kotlin类为(Int?, Double?, Float?)。
-
静态方法
Java中Utils中通常都是静态方法,为了方便调用。Kotlin中取消了static关键字,声明静态方法有2种方式:
1.直接在文件中创建方法。
Kotlin中的方法是可以直接写在文件中的,这样调用的时候只需import一下文件名即可调用。
2.使用object创建
object修饰的类中的方法可以通过ClassName.methordName( )直接调用。虽然用法一样但是并不是创建了静态方法,而是创建了一个单例对象。 object在kotlin中的作用就是创建单例对象。所以在Java中调用的时候要通过Instance实力调用。
object Utils {
fun getLength(content:String) : Int{
return content.length
}
}
调用
Utils.getLength("asdasdas")
Utils.INSTANCE.getLength(" sadads ")
3.使用companion object创建, 并用使用JvmStatic注解
class MainActivity : BaseActivity(){
companion object {
const val VERSION_CODE = 10
@JvmStatic
fun getLength():Int {
}
}
调用:
MainActivity.getLength("asdasdas")
MainActivity.getLength(" sadads ")
-
构造函数
Kotlin中构造函数使用constructor关键字声明:
class Apple:Fruit{
constructor():this("") {}
constructor(name:String):super(name) {}
}
-
集合
Kotlin中的List是不支持修改的,通常使用ArrayList或者MutableList。同理Map也是不支持修改的,通常使用HashMap
var list: MutableList = ArrayList()
var arrayList1 = mutableListOf(1,2,3)
var arrayList2 = arrayListOf(1,2,3)
var map = hashMapOf<>()
var map2 = mutableMapOf()
-
internal修饰符
Kotlin中的对象和方法默认是public的,如果使用internal 修饰,则只能在当前Moudle中调用。internal也可以用来修饰class