-
Kotlin中的private和public
Kotlin中创建的默认变量都是私有类型,会隐式生成对应的get/set函数。调用的时候虽然是直接通过变量名调用,实际上调用的是变量对应的get/set方法。要是变量变为public 需要使用@JvmFiled注解。
私有变量:class User{ var name:String? = null //相当于private //如果对get set只是返回变量值,则可以省略 set(value){ filed = value //field为中间变量 } get(){ return field } }公有变量:
class User{ @JvmField var name:String? = null //相当于public修饰 } -
Kotlin中的类型系统
Java中所有类的基类是Object,Kotlin中是Any。class Java extents Object{ }class Kotlin : Any() { }Java中函数无返回值使用void,Kotlin中使用Unit。
public void test(){ }public fun test(): Unit{ } //Unit可以省略 -
数组
private String[] array = new String[]{"a","a","a"}; //javaprivate var array = arrayOf("a","a","a”) //kotlin使用基本类型数组时,arrayOf会将数据进行装箱拆箱操作,会增加内存开销 。推荐使用IntArray,FloatArray等。。
var intArray == intArrayOf(1,2,3,4) //InArray var floatArray == floatArrayOf(1,2,3,4) //FloatArray -
基本数据类型
基本数据类型的特点:不可为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") //kotlinUtils.INSTANCE.getLength(" sadads ")//java3.使用companion object创建, 并用使用JvmStatic注解
class MainActivity : BaseActivity(){ companion object { const val VERSION_CODE = 10 //静态常量用const修饰,在编译期赋值 @JvmStatic fun getLength():Int { //… } } }调用:
MainActivity.getLength("asdasdas") //kotlin MainActivity.getLength(" sadads ")//java -
构造函数
Kotlin中构造函数使用constructor关键字声明:class Apple:Fruit{ constructor():this("") {} constructor(name:String):super(name) {} //调用父类的构造方法 } -
集合
Kotlin中的List是不支持修改的,通常使用ArrayList或者MutableList。同理Map也是不支持修改的,通常使用HashMapvar 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
【Kotlin】和【Java】使用对比小结
于 2022-02-13 14:32:57 首次发布
本文对比了Kotlin和Java在变量访问权限、类型系统、函数返回值、数组、基本数据类型、静态方法调用、构造函数以及集合等方面的差异。Kotlin中变量默认为私有,使用get/set,public需加@JvmField。Java的void对应Kotlin的Unit。推荐使用Kotlin的IntArray等避免装箱。Kotlin无static,可通过object或companion object实现类似功能。Kotlin的List默认不可变,常用ArrayList或MutableList。

8628

被折叠的 条评论
为什么被折叠?



