JAVA&Kotlin比较

原创
2020/08/20 18:45
阅读数 274

JAVA&Kotlin比较

kotlin 100%兼容java;kotlin规避了java的大部分坑;kotlin提供了更多高效语法

1. 基本类型

java的基础类型

//整型
byte,short,int,long,Byte,Short,Integer,Long
//浮点型
float,double,Float,Double
//布尔型
boolean,Boolean
//字符型
char,Character
//字符串
String

//原生类型数组
int[] long[] byte[] 等等

kotlin的基础类型

//整型
Byte,Short,Int,Long
//浮点型
Float,Double
//布尔型
Boolean
//字符型
String
//原生类型数组
intArray longArray byteArray 等等

总结:kotlin收敛了基础类型数量,不在区分包装类型和非包装类型,kotlin的Int相当于java的int,其它类型依次类推。在kotlin中要使用java的Integer类型怎么办?Int? 就是 java的IntegerInt? 在kotlin中,表示类型可空。

2. 类型声明及结束符号

java

int value=0;
String content="";

kotlin

val value:Int = 0
val content = ""
var isTest = false

总结:kotlin类型声明 使用val或var开头,变量名在前,类型在后,同时可以省略类型定义(在编译时,基于值进行类型推断确定类型) val 声明相当于java的 final 关键字。在java中每一个语句结束后要用分号结尾,kotlin则不需要

3. 相等比较

java 相等比较


String a ="test1";
String b ="test1";
//字符使用equals比交相等
a.equals(b)

int v1 =1;
int v2 =2;
//数字非包装类型比较
v1 == v2

Integer vv1 = 100;
Integer vv2 = 100;
//包装类型比较 需要先判断null ,再转换成非包装类型比较,否则容易出现错误
vv1.intValue() == vv2.inValue()

//以下这种情况,在java一不小心就会导致BUG
Integer vv1 = 9999;
Integer vv2 = 9999;
vv1 == vv2;//结果 false

Integer vv1 = 1;
Integer vv2 = 1;
vv1 == vv2;//结果 true


kotlin 相等比较

val a = "abc"
val b ="abc"
a == b

val v1 =1
val v2 =2
v1 == v2

总结:kotlin简化了相等的比较,无论是字符串还是数字或其它基础类型相等比较,都使用 == 号来实现,比java好,并且kotlin支持运算重载,可以自己实现==比较的逻辑。

4. Null判断

java

//java null判断,示例获得取 name值
TestData testData = new TestData();
testData.basic.rule.name
//在java 获取name值,不报空指针异常
String name ="";
if(testData.basic!=null && testData.basic.rule!=null){
    name = testData.basic.rule.name;
}
else{
   name ="default";
}

kotlin


val testData = TestData();
//kotlin 中null判断非常简单,不需要if ,?语法相当于if
val name = testData.basic?.rule?.name ?: "default"

总结:kotlin 采用了?号语法来进行判null操作,比javat简化不少。上面示例中kotlin一句话的语法与java多行语法是等价的。?:的意思是:如果?:左边的计算结果为null 则返回?:右边的值(示例:"default")做为默认值。

5.类型转换

java


//转字符串
int idInt = 5;
String idString = String.valueOf(idInt);

Integer idInteger = 5;
String idString = idInteger.toString();

//字符串转数字
Integer i = Integer.valueOf("5");
int i = Integer.valueOf("5").intValue();

//类转换
Employee employee = new Employee(); 
User u =(User)new employee;

kotlin


//转字符串
val idInt:Int =5 
val idString = idInt.toString();

//字符串转数字 
val idString ="5"
val idInt:Int = idString.toInt()

//类转换
val employee = Employee() 
val u = employee as User


总结:java的字符串和基础类型互转,方式不统一,不够流畅。kotlin 提供的互转方式简单、统一都以toXXX()方法实现。kotlin 提供了 as 关键字进行类型转换

6.单例类

java没有提供单例类的语法,在kotlin中 用object 关键字可以自动实现一个单例类



object SingleClass{

    fun goto(){
    }
}
//使用单例类
SingleClass.goto()

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部