首先大家先记住Kotlin官网的一句话:万物皆对象。
1.初始化
这个万物皆对象和java还是有很大的不同。在Kotlin里面,你定义的byte,String,int都是作为对象存在的,直接看代码吧。
我们先定义一个数字num,
int num=Int
Log.d("num=",""+num)
如果是Java的话,肯定是打印num=0,但是在Kotlin中默认都是Object类型,打印如下:
num=: kotlin.jvm.internal.IntCompanionObject@5a1cd3f
但是别担心,Kotlin还是可以根据你写的字面值,默认给他一个合适的类型的。
1 val i=12//An Int 1 val iHex = 0x0f // An Int from hexadecimal literal 3 val l=3L//A Long 4 val d=3.5//A Double 5 val f=3.5F//A Floatzhe
2.类型转换
java中是有隐式转换的,但是Kotlin必须指定要转换的类型才可。
比如我们定义一个 var i:Int 8 现在想要把它转为double,java中你可以直接写 double dnum=i,但是在kotlin中会报错的,要这样写
val d=i.toDouble()
而且,Char字符是不能直接用做数字来加减的,比如,var c:Char='C', var i=c.toInt()这样得到的才是一个整数,大家来猜测下面这段代码打印什么
var num :Char='C'
var sum=num+2
Log.d("sm=", sum+"")
结果是D。
3.| 和 &简单的唯一运算
大家肯定习惯了 var result=FLAG1|FLAG2或者 var result=FLAG1&FLAG2这种写法了,不好意思,你可能需要一点小小的改变了,Kotlin用文字 or和and 替换了 |和&
// Java
2 int bitwiseOr = FLAG1 | FLAG2;
3 int bitwiseAnd = FLAG1 & FLAG2;
emmm ,这点爸爸不满意,希望后续版本会更正
所以你现在看到的是下面这种的
//Kotlin
val bitwiseOr = FLAG1 or FLAG2
val bitwiseAnd = FLAG1 and FLAG2
4:被加强的String
之所以说被加强,是因为,字符串可以用到某些数组的语法,这个感觉很方便,
比如 var str="abcdefghig" ,str[2]的值就是c,
而且Iterable 可以用在String上,虽然听起来并没什么卵用,但是,有胜于无?
var str="abcdefghig"
for(c in str){
print(c)
}
5:变量和属性
kotlin中是根据var(可变的)和val(不可变)两类。这点和java中的final几乎是没什么区别的,比如我们可以把很多类属性定义为val (final),这样即成了线程安全的变量,因为每个线程都是拿到的同一个副本
如果你已经厌倦了java的set和get的写法,在我看来造成了很大的代码冗余,kotilin终于开始重视了这个问题,你不在需要定义set或者get。kotlin已经有了默认的get和set,而且你可以自自定义自己的get和set方法。
class Person { var name: String = "" get() = field.toUpperCase() set(value) { field = "名字是" + value } } var p = Person() p.name = "david" Log.d(TAG, p.name)
本文暂时没有评论,来添加一个吧(●'◡'●)