kotlin入门学习(一)

1.基础类型

基础类型,比如ineger,float,character和boolean依旧存在,但是在kotlin里这些基础类型都对象化了。这些基础类型都和java里的基础类型表现的很相似,但是也有不同之处。

第一个就是这些基础类型不会再智能转换,比如,你不能把一个Int值定义为Double类型的变量,java中就可以。至于为什么不能这么做呢,接下来会说到。一切类型的定义都要很精确,比如:

1
2
var i: Int =7     //<----注意Int要大写首字母
var d: Double = i.toDouble() //<----看来是都自带了转换方法

2.Char不能再当成数字使用了,要像下面这样用:

1
2
var c: Char ='c'
var i: Int= c.toInt()

3.String可以当成数组来访问,并且还可以被遍历…

1
2
3
4
5
6
7
var s = "Example"
var c = s[2] //肯定要输出‘a’啦,难道你认为会输出'x'嘛、

var s ="Example"
for(c in s){
print(c) //打印就是如此简单
}

2.变量

在kotlin中,你可以轻易的把一个变量定义为可变的(var)或是不可变的(val),就跟在java中使用或者不使用final关键字一样。👿 不可变在kotlin中是个很重要的概念。

一个不可变对象在初始化后,自身的状态就不会再发生改变。你不能修改这个对象,只能重新创建一个,
然后进行修改。这会让代码写起来更加撸棒性和可预测(将会发生什么)。而在java中,大部分的对象都是可变的,这意味着可以访问对象的任意一部分代码都可以改变它,可能就会因此影响其他部分的运行。

不可变对象也是线程安全的,毕竟它们不会改变,这样也就不用做什么特殊的访问控制。因为所有的线程访问到的都是同一个对象

所以如果想要充分利用这个不可变特性的话,用kotlin写代码肯定要做出点改变吧。记住一句话就够了
尽可能多使用val 。虽然这个不是每一个地方都使用,但是大多数情况下用这个是没错的。

还需要注意一点,我们通常不需要特意指定对象类型,因为类型可以自动从值里面推测出来,这一点很安逸,可以让代码更加干净,也更容易更改。举个栗子:

1
2
3
var s ="Example" //我们已经知道i是Int类型了
var i = 23 //你猜i是什么类型
var actionBar = supportActionBar //我们已经知道actionBar是ActionBar了

我们也可以更加精确的指定,毕竟,总有需要的地方:

1
2
var a: Any =23
var c: Context= activity

3.属性

kotlin中属性(property)和java中的属性概念一样,不过更强大一些(要不我不会说的).我们只需要定义好一个属性
,我们根本再写长长的get和set了,只需要:

1
2
3
4
5
6
7
8
public class Person{
var name: String =""
}
//接下来就可以:

var person =Person()
person.name = "帅气小哥"
var name = person.name

如果什么都没指定,属性会使用默认的getter和setter.当然,我们也可以定制默认的getter和setter:

1
2
3
4
5
6

var name: String= ""
get() =field.toUpperCase()
set(value){
field= "Name: $value"
}