0
点赞
收藏
分享

微信扫一扫

kotlin<第一篇>:入门

Sky飞羽 2023-12-12 阅读 57

一、main和打印

fun main() {
     println("Helo Kotlin")
}

kotlin中,新建一个main函数可以调试kotlin程序,println函数可以将结果输出到控制台。

二、常量和变量

val:只读变量(只读,不可变化)
var:变量
const val: 常量
常量不能在函数中使用,只能在方法外面使用,比如:

const val USERNAME: String = "zhangsan"
fun main() {
}

如果在类中使用的话,比如:

class Hello {
    const val USERNAME: String = "zhangsan"
}

这种做法是不被允许的,它在源码阶段就直接报错,因为外界根本无法用类直接访问该
常量,为了让外界能用类访问常量,可以改成:

object Hello {
    const val USERNAME: String = "zhangsan"
}

访问方式:Hello.USERNAME

被 object 修饰的类相当于将该类的成员变量和成员方法都添加了java的static的
关键字。

一般情况下,将类中所有的成员都static化很少见,甚至不可取,所以我们可以将类
中的部分成员static化,使用kotlin的伴生 companion object 可以实现:

class Hello {
    companion object {
        const val USERNAME: String = "zhangsan"
    }
}

在类中,凡是 companion object 闭包下的成员在外接都可以直接通过类访问。
不在companion object 闭包下的成员在外界无法直接用类访问。

三、基本类型

在 Kotlin 中,基本类型包括 数字字符布尔值数组字符串

【1】数字

Kotlin 提供了一组表示数字的内置类型。 对于整数,有四种不同大小的类型,因此值的范围也不同。

kotlin<第一篇>:入门_浮点

val byteClassType = 1.toByte()
println(byteClassType::class.java)

val shortClassType = 128.toShort()
println(shortClassType::class.java)

val intClassType = 1
println(intClassType::class.java)

val longClassType = 9223372036854775807
println(longClassType::class.java)

如上代码打印了四种数据类型:

byte
short
int
long

整型值初始化的变量默认推断为 Int 类型,Byte和Short的精度比Int小,如果需要使用它们,需要转换类型,一般使用 toByte 和 toByte 函数来转换。
如果数字在Long范围内,会自动推断为Long类型。

除此之外,可以在数字后面加上 L 来强制限定数字的类型为Long类型。

val longClassType = 1L

如果数字超过Long的范围,那么编译器报错。

kotlin还提供了两种浮点类型,分别是Float、Double

类型

大小(比特数)

有效数字比特数

指数比特数

十进制位数

Float

32

24

8

6-7

Double

64

53

11

15-16

浮点类型默认推断为Double类型:

val floatClassType = 3.14

如果想要用Float类型表示,那么需要在数字前面添加字母F或者f

val longClassType = 3.14F

【2】字面常量

1、十进制表示:123
    Long类型表示:123L
2、二进制表示:
    0b00001011
3、十六进制表示:
    0x0F
4、不支持八进制
5、默认浮点类型是Double类型 123 或者 1.23e2(e可以是大写E也可以是小写e)
    Float类型需要添加`F` 或者 `f`

【3】数字字面值的下划线

val one = 1_000_000
val two = 1234_5678_9012_3456L
val three = 999_99_9999L
val four = 0xFF_EC_DE_5E
val five = 0b11010010_01101001_10010100_10010010

数字如果太长,可以使用下划线类分割。

【4】数字的显示转换

kotlin中数字不支持隐式转换,但支持显示转换

val a = 3
val b:Long = a.toLong()

数字的显示转换函数有:

toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char

【5】运算符

+ 加
- 减
* 乘
/ 除

shl  有符号左移
shr 有符号右移
ushr 无符号右移
and 按位与
or 按位或
xor 按位异或
inv() 按位非

== 等于
!= 不等于
< > <= >= 小于 大于 小于等于 大于等于
a..b 区间
x in a..b 在区间内
x !in a..b 不在区间内

【6】字符类型

val c : Char = 'c'

kotlin的字符类型是 Char。

【7】布尔类型

val b : Boolean  = true

【8】字符串

val s : String = "S"

四、控制流

kotlin的控制流有:if、when、for、while

【1】if 表达式

kotlin中,if是一个表达式,并非是一个关键字

// if
var max = a 
if (a < b) max = b

// if else 
var max: Int
if (a > b) {
    max = a
} else {
    max = b
}

fun largerNumber(num1: Int, num2: Int): Int {
    var value = 0
    if (num1 > num2) {
        value = num1
    } else {
        value = num2
    }
    return value
} 

if 有返回值,可以写成:

fun largerNumber(num1: Int, num2: Int): Int {
    val value = if (num1 > num2) {
        num1
    } else {
        num2
    }
    return value
}

可以直接 return

fun largerNumber(num1: Int, num2: Int): Int {
    return if (num1 > num2) {
        num1
    } else {
        num2
    }
}

去除大括号

fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) {
    num1
} else {
    num2
}

当 if 里面只有一句代码时,可以省略大括号

fun largerNumber(num1: Int, num2: Int) 
                         = if (num1 > num2) num1 else num2

【2】when

当 if...else... 太多时,可以考虑使用 when 语句,相当于 Java 的 switch 语句

fun getScore(name: String) = when (name) {
    "Tom" -> 86
    "Jim" -> 87
    "Jack" -> 88
    "Lily" -> 89
    else -> 0
}

when还可以检查数据类型,结合 is 使用

fun checkNumber(num: Number) {
    when (num) {
        is Int -> println("number is Int")
        is Double -> println("number is Double")
        else -> println("number not support")
    }
}

is 相当于 Java 的 instanceof

if(num is Int) {}

【3】for 循环

for (i in 0..10) { // 闭区间
    println(i)
}

for (i in 0 until 10) { // 左开右闭
    println(i)
}

for (i in 0 until 10 step 2) { // step 相当于 i = i + 2
    println(i)
}

in:在什么范围内
!in:不在什么范围内


区间的表示?

闭区间:
  val range = 0..10 // 升序
  val range : IntRange = 0..10 // 升序
  val range = 10 downTo 0 // 降序

左闭右开:
  val range = 0 until 10 // 升序

【4】while

while (x > 0) {
}

do {
} while (y != null)

举报

相关推荐

0 条评论