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中有多个分支可以匹配上,但是也只走第一个分支,后面分支不再执行