世上无难事只怕有心人
函数的使用
private fun test() {
Log.e("测试","测试")
}
在Kotin中进行创建方法也非常地简单,使用Android Studio自带的快捷键就可以生成,或者直接打出fun三个字母就可以生成提示
从这里可以看出,Kotlin语法非常的简洁,基本上没有多余的东西,甚至连Java中必要的分号也没有,只保留了大括号表示一行代码的结束,在这里我只是做了简单的函数代码的演示,至于构造函数和重载函数等结构上基本上与java相同,比如说重载同样是方法名相同,参数不同
常量和变量
在Kotlin中,使用val来声明一个常量(只能读,不能修改),而使用var来声明一个变量,比较神奇的是Kotlin中,并不需要指定变量的类型,代码会自动根据数据的类型,自行判断,而不像java代码中,需要指定一个变量的类型,才能对这个变量进行声明,这从另一个方面避免了类型转换异常,具体的代码如下:
private fun test() {
val i = 1
var m = 199
var s = "你好"
}
从下面的截图中可以看出,当我声明了一个int类型的变量之后,这个变量的类型就确定了,如果此时我再给他附上一个字符串类型的数据的时候,就会直接报错,从而使程序无法进行下去,除非我给他一个int类型的数据
注释
在Kotlin中注释与java是一致的,这个在此不再多说
private fun test() {
// var m = 199
// m = 200
}
/**
* 跳转的方法
*/
private fun initClick() {
/* button.setOnClickListener {
val intent1 = intent
intent1.setClass(this,TwoActivity::class.java)
intent1.putExtra("DATA","今天天气不错")
startActivity(intent1)
}*/
}
字符串模板
//字符串模板的用法
fun stringTempl(args: Array<String>) {
if(args.size > 0)
println("args[0] = ${args[0]}")
}
//main方法是整个程序的入口
fun main(args: Array<String>){
var arr = arrayOf("hello", "world")
stringTempl(arr)
}
条件表达式
在java中,我们的条件表达式一般是这样写的
int m = 5;
if (m>1){
Log.d("TwoActivity", "m:" + m);
}else if (m<10){
Log.d("TwoActivity", "m:" + m);
}else {
Log.d("TwoActivity", "haha");
}
或者使用三元运算符
Log.d("TwoActivity", (m > 5 ? "yes" : "no"));
但是现在Kotlin出现了,你可以这样写
//简写的条件表达式
fun max2(a: Int, b: Int) = if(a > b) a else b
可空类型
fun nullableTest() {
//在变量类型后面加上问号,代表该变量是可空变量
var name: String? = "zhangsan"
name = null //可以将null赋值给name变量
var person: String = "tom"
// person = null //这句代码会报错,不可以将null赋值给一个不可空变量
}
/*
函数返回值为Int?,表示返回值可为空
当参数为空或者为""时,则返回null,否则使用Java中的字符串转整型的方法
这里也体现了kotlin代码和Java代码无缝集成
*/
fun parseInt(s: String): Int? {
if(s == null || s == "")
return null;
return Integer.parseInt(s);
}
类型检查和自动类型转换
Kotlin中使用is运算符来检查数据类型和做类型转换,如下代码所示:
/*
当函数参数为字符串类型时,就返回字符串的长度,否则返回空
*/
fun getStringLength(n: Any): Int? {
if(n is String)
return n.length //这里会自动将n转化为字符串类型
return null
}
for循环和while循环
private fun forFun() {
var arr = arrayOf(1,5,6,8,10)
//通过索引进行循环
for (i in arr.indices) {
println(arr[i])
}
for(num in arr) { //直接使用数组中的对象循环
println(num)
}
}
打印结果
While循环与java的基本上相同
//while循环的测试代码
fun testWhile() {
var i = 0;
while(i < 10) {
print(" " + i)
i++
}
}
when表达式
when表达式就类似于Java中的switch表达式,如下代码所示:
private fun whenFun(m: Any) {
when (m) {
is String -> {
println("String")
}
is Int -> {
println("Int")
}
is Boolean -> {
println("Boolean")
}
}
}
范围
检查一个数字是否在一个范围内:
if (x in 1..y-1)
print("OK")
检查一个数字是否不再一个范围内
if (x !in 0..array.lastIndex)
print("Out")
遍历一个范围
for (x in 1..5)
print(x)
集合
遍历集合:
for (name in names)
print(name)
用 “in” 检查集合中是否包含某一个变量
if (text in names)
print("Yes")
使用lambda表达式去过滤和映射集合
names
.filter { it.startsWith("A") }
.sortedBy { it }
.map { it.toUpperCase() }
.forEach{ print(it) }