基本语法示例
实例代码:
?
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
|
package com.stone.basic.syntax
/**
* desc :
* author: stone
* email : aa86799@163.com
* time : 27/05/2017 11 01
*/
class BasicSyntax {
//Function having two Int parameters with Int return type:
public fun sum(a: Int, b: Int): Int { //访问修饰符 省略时,默认为 public
return a + b
}
//Function having three Int parameters with Int return type:
fun sum(a: Int, b: Int, c: Int) = a + b + c
//Function returning no meaningful value:
fun printSum(a: Int, b: Int): Unit { //Unit为无类型,类似java中的void,可以省略
println( "sum of " + a + " and " + b + " is ${a + b}" )
println( "sum of $a and $b is ${a + b}" ) //在双引号中 直接用 $符操作变量 与上句等价
}
fun assignVarible() {
val a: Int = 1 // immediate assignment val = 本地只读变量 即不可变 immutable
val b = 2 // `Int` type is inferred 自动类型推断
val c: Int // Type required when no initializer is provided
c = 3 // deferred assignment
var x = 1 // Mutable variable:
x++
val s1 = "x is $x" // simple name in template:
val s2 = "${s1.replace(" is ", " was ")}, but now is $x" // arbitrary expression in template:
println(s2)
}
fun maxOf(a: Int, b: Int): Int {
// return a > b ? a : b; //原java中的三目运算符 不可用
if (a > b) return a
else return b
}
//fun maxOf(a:Int, b: Int):Int
fun minOf(a: Int, b: Int): Int = if (a < b) a else b
//字符串转int
private fun parseInt(str: String): Int? { // ? 表示可以为空
return str.toIntOrNull( 8 ) //参数为 进制数(radix), 不传默认为10 转换错误 返回null
}
fun getBaseSyntax(name: String?): BasicSyntax? { // ? 表示可以为空
// checkNotNull(name) // 参数不能为空的 检测函数
return BasicSyntax()
}
fun printProduct(arg1: String, arg2: String) {
val x1 = parseInt(arg1)
val x2 = parseInt(arg2)
if (x1 == null ) return
if (x2 == null ) return
println(x1 * x2)
}
//is operator
fun getStringLength1(obj: Any): Int? { //Any 是任何Kotlin类的超类
if (obj is String) { // 类似java中的 instanceof
// `obj` is automatically cast to `String` in this branch
return obj.length
}
// `obj` is still of type `Any` outside of the type-checked branch
return null
}
// !is
fun getStringLength2(obj: Any): Int? {
if (obj !is String) return null
return obj.length
}
fun getStringLength3(obj: Any): Int? {
if (obj is String && obj.length > 0 )
return obj.length
return null
}
//Using a for loop
fun foreachItems() {
// val items = listOf<String>("apple", "banana", "kiwi")
val items = listOf( "apple" , "banana" , "kiwi" )
for (item in items) { //in operator
println( "item is $item" )
}
for (index in items.indices) { //indices 索引 type: Collection
// println("item at $index is ${items.get(index)}")
println( "item at $index is ${items[index]}" ) //使用[index] 而不用 .get(index)
}
}
//Using when expression
fun describe(obj: Any): String =
when (obj) { //when 中 必须 有一个else
1 -> "One"
"Hello" -> "Greeting"
is Long -> "Long"
!is String -> "not a string"
else -> "Unknown"
}
//Using ranges 如果在if中 check的是一个数值,且使用了 in operator
fun range() {
val x = 10 ; val y = 9 //同一行中使用 ; 来分隔
if (x in 1 ..y + 1 ) { //使用 .. 来表示范围 最后转换成 x in 1..10
// if (x in (1..(y + 1))) {//如此解释 执行顺序 没问题 最后转换成 x in 1..10
// if (x in ((1..y) + 1)) {如此解释 执行顺序 不行 最后转换成 x in 10
println( "fits in range" )
}
for (x in 1 .. 5 ) { //include 5
}
for (x in 1 .. 10 step 2 ) { //x+=2 x is in {1, 3, 5, 7, 9}
println( "rang 1..10 step 2: $x" )
}
for (x in 9 downTo 0 step 3 ) { //x=9, x>=0 x-=3
println( "x in 9 downTo 0 step 3: $x" )
}
for (x in 0 until 10 step 2 ) { //until 10 : not include 10
println( "x in 1 until 10: $x" )
}
}
//Checking if a collection contains an object using in operator:
fun contains() {
val list = listOf( "a1" , "a2" , "a3" ) //不可变list
when { // 匹配到一个条件 其它 就不再匹配
"a4" in list -> println( "壹" )
"a5" in list -> println(list.size)
"a3" in list -> println( "the index is ${list.indexOf(" a3 ")}" )
}
}
//Using lambda expressions to filter and map collections:
fun collectionsLambda() {
// val list = mutableListOf<Int>() //可变list
// for (i in 1 ..10) {
// list.add(i)
//
// }
val list = ( 1 .. 10 ).toList() //上面的 简写
list.filter { it % 2 == 0 }.map { it * 3 }.forEach(::println)
// list.filter { it % 2 == 0 }.map { it * 3 }.forEach{ println("item is $it")}
}
}
fun main(args: Array<String>) {
var base = BasicSyntax()
base.printSum( 10 , 20 )
base.assignVarible()
var min = base.minOf( 10 , 20 )
println( "min number is $min" )
base.getBaseSyntax( null )
base.printProduct( "1" , "kk" )
base.printProduct( "33" , "66" )
println( null ) //直接输出了 null 字符串
base.foreachItems()
println(base.describe( 2 ))
base.range()
base.contains()
base.collectionsLambda()
}
|
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://blog.csdn.net/jjwwmlp456/article/details/72780787
相关文章
猜你喜欢
- ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
- 64M VPS建站:如何选择最适合的网站建设平台? 2025-06-10
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
- ASP.NET自助建站系统的数据库备份与恢复操作指南 2025-06-10
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-05-29 56
-
2025-05-25 67
-
2025-05-27 57
-
2025-05-29 55
-
2025-05-24 29
热门评论