android使用kotlin开发基础(二)变量跟属性

时间:2021-07-05 20:05:37
基本类型
  • 数字类型中不会自动转型
val sum1: int = 10 val sum2: double = sum1.toDouble()
  • 字符(Char)不能直接作为一个数字来处理

  • 位运算不同(变得更加清晰)
java 下表示   flag   |   flag1a      flag   &   flag1
kotlin 下表示 flag   or   flag1      flag    and   flag1 
  • 可以写具体的类型也可以使用val来弱类型(让编译器自己去判断类型)
val v = 12  //is int val v1 = 12.0 //is  a float val v2 = "sample"//is a String val v3  = ActionBar // is a object 
  • String可以像数组一样访问,并且可以被迭代
val v = "simple" val v1 = v[3] for(v1  in v ){ print(v1); }
变量
  • 分可变变量(var)和不可变变量(val)
相对的:存在不可变对象和可变对象,可变对象在实例化之后还可以修改,而不可变对象实例化后不可以修改,这样可以使所有线程访问的都是同一个对象,所以说不可变对象是线程安全的。
一个重要的概念就是:尽可能去使用不可变量(val),不得已的情况下才去使用(var)
  • 使用范型需要指明出来
val v : Any = 23val v1 : Context = MainActivity 


属性
  • 相比java中bean 的写以及用法,kotlin会显得更加简洁些
java:
public class Person{
String name = "";public String getName(){return name;}public void setName(String name){this.name = name;}}

Person p = new Person(); p.setName("xiao hui"); String name = p.getName();
kotlin:
class Person{ val name : String = "" }
(备注:默认的情况下kotlin会调用set和get方法,当然你也可以修改成你想要的代码) val p = person() p.name = "xiao hui " String name = p.name
  • 当你需要使用到属性自己的值,可以使用kotlin预留字段field(backing field只能在属性访问器内访问)
当操作Java代码的时候,Kotlin将允许使用属性的语法去访问在Java文件中定义的getter/setter方法。编译器会直接链接到它原始的getter/setter方法。所以当我们直接访问属性的时候不会有性能开销。