Kotlin学习笔记(一)

0、数据类型

Byte Short Int Long Float Double 取值范围同Java

1、HelloWorld

fun main(args: Array<String>) {
    println("HelloKotlin")
}

2、var 定义变量 val定义常量 自动类型推断

var i = 18
i = 99999999999 // 报错,系统推断i为Int,装不下这么多位的数字
i = "hello" // 同样报错,同理

var i: Long = 18 // 显式指定i的数据类型
i = 9999999999999 // 不报错

var i // 报错,需要指定数据类型
var i: Int // 不报错,显式指定类型
var i = 18 // 不报错,自动推断类型

val j = 20 // 常量
j = 21 // 报错,常量不能被重新赋值

3、自定义函数

fun main(args: Array<String>) {
    var haha = "hello"
    myPrint(haha)// 调用自定义函数
}

// 自定义函数myPrint,name是形参,类型为String,返回值为Unit(相当于Java中的void)可以省略不写,如myPrint2
fun myPrint(name: String): Unit {
    println(name)// 调用系统的打印函数
}

fun myPrint2(age: Int) {
    println(age)// 调用系统的打印函数
}

// 计算加法并返回
fun plus(a: Int, b: Int): Int {
    return a + b
}

4、Boolean 及 调用Java函数

fun main(args: Array<String>) {
    var i = 5
    var j = 6
    println(i < j)// true
    // 直接调用Java的Math函数
    println(Math.sqrt(5.0))// 5开根号
    println(Math.pow(2.0, 10.0))// 2的10次方
}

5、三元运算符(所谓的三元运算符)

fun main(args: Array<String>) {
    var i = 0
    println(if (i == 0) "haha" else "hello")// haha
}

6、字符串模板

fun main(args: Array<String>) {
    var str = "hello"
    println("${str} kitty")// hello kitty
    println("${str} 有 ${str.length} 个字母")// hello 有 5 个字母
}

7、if else 流程控制

fun main(args: Array<String>) {
    var i = 0
    // 0
    if (i == 0) {
        println("haha")
    } else if (i == 1) {
        println("nihao")
    } else {
        println("hello")
    }
    // 1
    if (i == 0)
        println("haha")
    else if (i == 1)
        println("nihao")
    else
        println("hello")
    // 2
    if (i == 0) println("haha") else if (i == 1) println("nihao") else println("hello")
}

8、字符串比较

fun main(args: Array<String>) {
    var a = "hello"
    var b = "Hello"
    println(a == b)// false,相当于Java中的equals,比较字符串值
    println(a === b)// false,即比较值又比较地址
    println(a.equals(b))// false
    println(a.equals(b, true))// 第二个参数表示忽略大小写,结果为true
}

9、关于接收null值

fun main(args: Array<String>) {
    myFunc("hello")// 编译通过
    myFunc(null)// 编译报错

    myFunc2(null)// 编译通过,在基本数据类型后加问号"?"表示允许接收null

    // 例如:
    var str: String = "hello"// 编译通过
    var str2 = null// 编译通过
    var str3: String = null// 编译报错
    var str4: String? = null// 编译通过
}

fun myFunc(str: String) {
}

fun myFunc2(str: String?) {
}

10、when(Java中的switch)

fun main(args: Array<String>) {
    // 0
    var i = 0
    when (i) {
        0 -> println("haha")
        1 -> println("nihao")
        else -> println("hello")
    }
    // 1
    var str = "hello"
    when (str) {
        "nihao" -> println("no hello")
        "hello" -> println("yes hello")
        (str.length == 0) -> println("what?")// 编译报错,传入类型为String类型,但是(str.length == 0)为Boolean类型,无法将两者做比较
        (if str == "hello" "hel" else "llo") -> println("heihei")// 编译报错,需要加括号
        (if (str == "hello") "hel" else "llo") -> println("heihei")// 编译通过,前方括号运算完了返回内容是字符串,可以和传入的字符串做比较
        else -> {// 也可以写成这样执行多行逻辑
            println("${str.length}")
            println("nihao ${str}")
            println("${str} haha")
        }
    }
}

说明:如果遇到when中有多个分支可以匹配上,但是也只走第一个分支,后面分支不再执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值