Kotlin开发Android笔记4:Kotlin中变量及属性

 Kotlin中,一切都是对象,和Java相比,不存在java中原始基本类型等。这种特点使我们操作更加容易:可以使用统一的方式来处理所有的可用的类型。

—-基本类型——
像Integer,float或者boolean等基本数据类型仍然存在,但全都作为对象存在。基本类型及操作方式与Java极为相似的,我们要考虑到的区别有:

    //数字类型不会自动转型。不能给Double变量分配一个Int。必须要做明确的类型转换,可以使用众多的函数之一,如:
vali:Int=7 
val d:Double=i.toDouble()
//字符(Char)不能直接作为一个数字来处理。需要把他们转换为 一个数字,如:
valc:Char='c' 
val i:Int = c.toInt()
//位运算也有一点不同。在Android中,我们经常在 flags   中使用“或”,所以我 使用"and"和"or来举例:
//Java中位运算
int    bitwiseOr    =    FLAG1    |    FLAG2; int    bitwiseAnd    =    FLAG1    &    FLAG2;
//Kotlin中位运算
val bitwiseOr = FLAG1 or FLAG2 val bitwiseAnd = FLAG1    and    FLAG2

当然还有很多其他的位操作符,比如 sh1 ,shs,ushr或inv等。可以在Kotlin官网查看。

 Kotlin中定义变量时,数据类型不是必须定义的,我们可以让编译器自己去推断出

具体的类型,如:

val j = 12         //   Int类型
val iHex = 0x0f    //   一个二进制的Int类型 
val l = 3L         //   Long类型
val d = 3.5        //   Double类型
val f = 3.5F       //   Float类型
*上面的变量我们都没有在定义的时候指定数据类型,但Kotlin会判断出你定义的相应数据类型。

—–Kotlin变量—–

变量可以简单地定义成可变(var)和不可变(val)的两种类型的变量。这个与Java中的final相似。不可变在Kotlin(和其它很多现代语言)中是很重要的概念。
  • 不可变对象意味着它在实例化之后就不能再去改变它的状态了。如果你需要一 个这个对象修改之后的版本,那就会再创建一个新的对象。这个让编程更加具有健壮性和预估性。Java中大部分的对象是可变的,那就意味着任何可以访问它这 个对象的代码都可以去修改它,从而影响整个程序的其它地方。
  • 不可变对象也可以说是线程安全的,因为它们无法去改变,也不需要去定义访问控 制,因为所有线程访问到的对象都是同一个。所以在Kotlin中,如果我们想使用不可变性,我们编码时思考的方式需要有一些改 变。
  • 一个重要的概念是:尽可能地使用 val 。除了个别情况(特别是在Android 中,有很多类我们是不会去直接调用构造函数的),大多数时候是可以的。
val s = "Example"   //定义String类型
val i = 23     //   Int类型
val actionBar = supportActionBar // 定义ActionBar

如果我们需要使用更多的范型类型,则需要指定:

val a:  Any =   23 
val c:  Context =   activity

—-变量对应属性——

 属性与Java中的字段是相同的,但是更加强大。属性做的事情是字段加上getter加 上setter。来比较他们的不同之处。这是Java中字段安全访问和 修改所需要的代码:
//java中定义一个类,并写get和set方法
public class Person {
    private String name;

    public String getName() {
        return name;

    public void setName(String name) {
        this.name = name;
    }
}

在java中使用我们定义好的Person类

      Person person=new Person();
        person.setName("name");
        String name=person.getName();

同样的功能,用Kotlin实现:

//在Kotlin中,只需要一个属性就可以
public  class   Person  {   
var name:   String  =   "" 
}
注:Kotlin如果没有任何指定,属性会默认使用getter和setter

kotlin中使用定义好的Person类:

  val   person  =   Person()
  person.name   =   "name"
  val   name    =   person.name
另外当Kotlin操作Java代码的时候,Kotlin将允许使用属性的语法去 访问在Java文件中定义的getter/setter方法。
编译器会像往常一样使用它的 getter/setter方法。所以当我们直接访问属性的时候不会有性能开销。

当然还有更多的特点,我们可以参考Kotlin官网:http://kotlinlang.org/
博客学习来自《Kotlin for Android Developers》中文翻译。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值