学习一下Kotlin(二)

看一下Kotlin的基本类型

作为一种编程语言,多少也要有自己的基本数据类型,Kotlin也设有Double(64)、Float(32)、Long(64)、Int(32)、Short(16)、Byte(8)这几个,和Java对比一下,包括位数都都相差不大,不知道大家注意没有,在kotlin不过char不是基本类型。这些东西应该怎么用呢?也就是说在kotlin这个万物皆对象的世界中怎么声明一个变量,接触过弱语言的同学应该知道一个var,kotlin还有一个val。var 和 val 就的区别就是在一个可变,一个不可变,简单来说就是相当于val就相当于加了一个final。kotlin1.1版本后可以直接这么声明(var 同理):

val oneMillion = 1_000_000
val creditCardNumber = 1234_5678_9012_3456L
val socialSecurityNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010

在Java平台,我们定义一个变量的时候需要给一个为空,举个例子:

  var tv_first: TextView //这肯定报错
  var  tv_first: TextView = null //也是错误
  var  tv_first: TextView = null!! //指定为NULL了,编译通过了,APP崩了

kotlin中给一个可以为null的一个方式(TextView?)

var tv_first: TextView? = null
类型转换

简单提一点小类型不能转成大的类型,就拿Int和Double举一个例子

val a: Int = 100  
val b: Double = a//ERROR

幸好 它里面有一个方法提供转换,想的很周到,每一个都含有
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char

val b: Double = a.toDouble()//SUCCESS

说到这还有一个相加的时候的一个转换,看一下例子,规则和Java差不多

val l = 1L + 3 // Long + Int => Long
运算符

shl(bits) – 左移 ( 相当于Java<<)
shr(bits) –右移 ( 相当于Java>>)
ushr(bits) – 无符号右移,忽略符号位 (相当于Java >>>)
and(bits)
or(bits)
xor(bits) – 异或
inv() – 取反

这地方啰嗦两句,简单说 左移 也就是乘以2的几次方 , 右移就是除2几位。这个东西换成2机制就好理解

Java :
int number = 1;
System.out.print(number<<2);//输出为4
System.out.print(number<<3);//输出为8

int number_t = 3 
System.out.print(number>>1);//输出1
System.out.print(number>>2);//输出0
1 存储为 00000001  左移两位  00000100  二进制 转为十进制也就是4

同理 3 存储 00000011  右移1位  00000001 输出1 

字节

字节同样的Char的类型,但是还是像开头说的没有成为基本类型,很神奇。

fun check(c: Char) {
    if (c == 1) { // ERROR
        // ...
    }
}

说一个正确例子,转一个到Int类型

fun decimalDigitValue(c: Char): Int {
        if (c !in '0'..'9')
            throw IllegalArgumentException("Out of range")
        return c.toInt() - '0'.toInt() // Explicit conversions to numbers
    }
Boolean

Boolean 同样也不是基本类型,true和false 两个值
||
&& (这三个东西就不用说了)

Array是一个类

这是个很NB的东西,很强大,怎么玩?看例子 就是ArrayOf

var x: IntArray = intArrayOf(1,2,3);
var k: DoubleArray = doubleArrayOf(1.2,1.3,1.0)

同样你还能这么实例:

// Creates an Array<String> with values ["0", "1", "4", "9", "16"]
val asc = Array(5, { i -> (i * i).toString() })

很厉害吧,再看一下这个Array类支持泛型:

class Array<T> private constructor() {
    val size: Int
    operator fun get(index: Int): T
    operator fun set(index: Int, value: T): Unit

    operator fun iterator(): Iterator<T>
    // ...
}
String

String 在Kotlin 中有两种实现:
一种就是和Java一样:

val s = "Hello, world!\n"

另外一种就是要用(”“”)这个东西

val text = """
    for (c in "foo")
        print(c)
"""
/** 打印出来就是
   for (c in "foo")
      print(c)
 **/

trimMargin() 看例子

  val text = """
    |Tell me and I forget.
    |Teach me and I remember.
    |Involve me and I learn.
    |(Benjamin Franklin)
    """.trimMargin()
    /**
    输出
    Tell me and I forget.
    Teach me and I remember.
    Involve me and I learn.
    (Benjamin Franklin)**/
 val text = """
    |Tell me and I forget.
    |Teach me and I remember.
    >Involve me and I learn.
    >(Benjamin Franklin)
    """.trimMargin(">")
/**
   输出
   |Tell me and I forget.
   |Teach me and I remember.
   Involve me and I learn.
   (Benjamin Franklin)
 **/

还有一个”$”的用法

val i = 10
val s = "i = $i" //  "i = 10"

val s = "abc"
val str = "$s.length is ${s.length}" // "abc.length is 3"

看到这如果我单独就是打印”$”字符怎么办?比如说9.99美元

val price = """
${'$'}9.99
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值