常见类型及取值范围
变量、常量、类型推断
常量:只读,用val声明。变量:可读写,用var声明。
fun main(args:Array<String>) {
var i = 18
//i = 199999999999999999999999
//i被智能类型推断为整数类型。故再次给i赋值,会超出范围。
//如何显示声明数据类型
var j:Long = 12
j = 99999999999999
var s:String = "嘻嘻哈哈"
//var a
//这一行由于没有为变量a赋值,也没有为其声明类型,故类型推断无法知道其类型。所以会报错!
var a1:Int
//这样显示的声明就不会了
val v = 123
//v = 12345
//由于v是被val声明的常量,故不可修改
}
kotlin函数
函数是计算机语言执行的单元,或称为方法。
main函数
kotlin程序的入口函数。程序运行时的默认第一个运行的函数。
printlln()函数
打印函数
函数编写规则
fun 函数名(参数名:参数类型):返回值类型{
函数体
}
kotlin中的boolean
示例代码:
fun main() {
var n1 = 1
var n2 = Math.sqrt(5.0)-Math.sqrt(4.0) //开根号
var n3 = Math.pow(2.0,100.0) //2的100次方
println(n1 > n2)
println(n2 > n3)
}
字符串模板
语法:${}
//字符串模板
fun diaryGenner(str:String):String{
var temple = """
字符串:${str}
字符串长度:${str.length}
""".trimIndent()
return temple;
}
fun main() {
var str = diaryGenner("嘻嘻")
println(str)
}
if-else
fun getSmall(a:Int,b:Int):Int{
if(a>b){
return a
}else{
return b
}
}
fun getBig(a:Int,b:Int):Int{
if(a<b) return a else return b
}
fun main() {
var a = 1
var b = 2
println("${a}与${b}中大的数是:${getBig(a,b)}")
println("${a}与${b}中小的数是:${getSmall(a,b)}")
}
字符串比较
fun main() {
var s1 = "HELLO"
var s2 = "HELLO"
var s3 = "hello"
println(s1 == s2)
println(s1.equals(s2))
println(s3.equals(s2)) //不忽略大小写比较
println(s3.equals(s2,true)) //忽略大小写比较
//返回true,在kotlin中与Java是有区别的
//在Java中==比较的是内存地址是否相同
//而kotlin中字符串比较的==,相当于java中的equals
}
空值处理
如果一定要传递一个null值,可以参照如下写法
//String?表示参数可以为空值
fun strs(str:String?):String{
return "嘻嘻-"+str
}
fun main() {
println(strs(null))
}
when表达式
fun grade(score:Int){
when(score){
10 -> println("满分")
9 -> println("不错")
8 -> println("还不错")
else -> println("需要加油")
}
}
fun main() {
println(grade(7))
}
Loop与Range
..
表示区间
- 声明1到100个数
fun main() {
var nums = 1 .. 100 //区间[1,100]
var res = 0
for(num in nums){
print("${num} ")
res += num
}
println("\n结果是:${res}")
}
until 关键字
fun main() {
var nums = 1 until 20 //[1,20)
for(num in nums){
print("${num} ")
}
}
//输出: 1 2 3 ... 18 19
step步长
fun main() {
var nums = 1 .. 20
for(num in nums step 2){
print("${num} ")
}
}
//输出:1 3 5 7 9 11 13 15 17 19
reversed()方法
fun main() {
var nums = 1 .. 15
for(num in nums.reversed()){
print("${num} ")
}
print("\n 总数:${nums.count()}")
}
//输出:15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
// 总数:15
List与Map
List集合
fun main() {
var lists = listOf<String>("Hello","你好","bonjour","Hallo")
for ((index,str) in lists.withIndex()){
println("$index $str")
}
}
Map键值对
import java.util.*
fun main() {
var map = TreeMap<String,String>();
map["hi"] = "你好"
map["1"] = "a"
map["2"] = "b"
println(map["hi"])
println(map.get("1"))
}
函数与函数表达式
//函数与函数表达式
fun main() {
println(add(1,2))
//声明一个乘法函数
var mul:(Int,Int)->Int = {x,y -> x*y}
println(mul(2,3))
//声明一个减法函数
var sub = {x:Int,y:Int -> x-y}
println(sub(1,2))
}
//当函数方法体只有一行代码时,可以省略大括号与return
fun add(x:Int,y:Int):Int = x+y
默认参数与具名参数
//默认参数与具名参数
val PI = 3.1415926f
//定义求一个圆的周长方法
//指定一个默认的参数
fun getLong(pi:Float = PI,d:Float):Float{
return pi*d
}
fun main() {
println(getLong(3.14f,12f))
println(getLong(d=12f)) //这样写就是采用具名函数的方式来写
}
字符串与数字的转换
//字符串和数字之间的转换
fun main(args: Array<String>) {
var a = "13"
var b = 13
a = b.toString()
b.toInt()
// var c = "a3"
// c.toInt()
//以上两行会出现bug,原因是字符串中的字母无法转为数字
}
kotlin键盘输入事件
fun main() {
println("请输入数字1:")
var a:Int = readLine()!!.toInt();
println("请输入数字2:")
var b:Int = readLine()!!.toInt();
println("${a}+${b}=${a+b}")
}
Kotlin异常处理
fun main() {
try {
println("请输入数字1:")
var a:Int = readLine()!!.toInt();
println("请输入数字2:")
var b:Int = readLine()!!.toInt();
println("${a}+${b}=${a+b}")
}catch (e:Exception){
println("请输入数字!!!")
}
}