android kotlin变量声明,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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值