Kotlin学习

这是我自己学习的总结,我预计每天学一次Kotlin的内容,然后来做成Android的开发

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
* 这是一个多行注释的演示
* 2023.11.19学习 Kotlin
*/
class Hello(val name: String){ // 类声明,接受一个字符串作为参数
// val 相当于Java里的final
fun sayHello(){
println("Hello, $name") // 调用类中的函数,打印Hello, World
}
}

// 关于kotlin函数定义
fun sum(a: Int, b: Int){ // Int参数,返回值Int
// return a + b;
println(a+b);
// 函数定义使用关键字fun,格式参数为参数:类型
// 表达式作为函数体,返回类型自动推断
// 例如:fun sum(a: Int, b: Int) = a + b;
// public fun sum(a: Int, b: Int): Int = a + b; public方法则必须明确写出返回类型
}

fun parseInt(str: String): Int?{ // 接受一个字符串,返回一个Int
return str.toIntOrNull();
}
fun printProduct(arg1: String, arg2: String){
val x = parseInt(arg1);
val y = parseInt(arg2);
// 直接使用‘x’*‘y’,会报错,因为它们可能为null
if (x!= null && y!= null){
println(x * y);
}
else{
if (x!= null){
println("'$arg2' is not a number");
}
if (y!= null){
println("'$arg1' is not a number")
}
println("'$arg1' or '$arg2' 有个不是数字")
}
}

fun main(args: Array<String>) { // 包级可见函数,接受一个字符串数组作为参数
println("Hello World!"); // 分号可以省略,正常我还是会加上分号
// 上面演示的是一个简单的Hello World输出
Hello("World").sayHello(); // 创建一个对象不用new关键字
/*
* Kotlin基础语法
* kotlin文件以.kt结尾
* 包声明一般在开头
* 例如
* package com.example.demo
* import java.util.*
* fun test(){}
* class test(){}
*/
sum(1,2); // 调用函数
// lambda(匿名函数)
val sumLambda: (Int, Int) -> Int = {a, b -> a + b};
println(sumLambda(1,2));
// $ 表示一个变量名或者变量值
// $varName 表示变量值
// {varName.fun()} 表示变量方法的返回值
// 写一个例子
var a = 1;
val s1 = "a is $a"
println(s1);
a = 2;
val s2 = "${s1.replace("is", "was")},but now is $a"
// a现在是2,不是1了。因为var是一个可变的变量,所以对a进行修改是可以的
println(s2);
// //类型后面加?表示可为空
// var age: String? = "23"
// //抛出空指针异常
// val ages = age!!.toInt()
// //不做处理返回 null
// val ages1 = age?.toInt()
// //age为空返回-1
// val ages2 = age?.toInt() ?: -1
printProduct("3", "6");
printProduct("3", "b");
printProduct("a", "b");
printProduct("c", "6");
// 循环
for (i in 1..10){ // 1..10 表示从1到10,包括1和10
println(i);
}
println("=====================")
/*
* for(i in 4..1) 什么都不输出,因为不存在4<x<1
* for(i in 1..4 step 2) 输出1 3,因为step是步长,默认是1*/
for (i in 4 downTo 1 step 2){
println(i);// 输出4,2
}
println("=====================")
// 使用until函数排除结尾元素
for (i in 1 until 10){
println(i);
}
// 实例演示
println("循环输出:");
for (i in 1..4){
println(i);
}
println("\n=====================")
println("设置步长:")
for (i in 1..10 step 2){
println(i);
}
}