前言:在网上没有找到什么比较好的教程,虽然有些视频教程,
但是本人感觉太浪费时间,就看菜鸟教程敲的一些代码,用作自己学习笔记。
/**
* kotlin舍弃了;结尾
* 采用的是函数式编程
* 支持lambda表达式
* 避免空指针异常for循环更灵活
* is的用法类型转换以及自动转换
* vararg 的用法,可变化参数
* */
fun main(arg : Array<String>)
{
println("hello world")
println(sum(1,2))
println(sum2(1,2))
println(sum3(1,2))
method( 3 , 4)
method2( 4, 5)
vars(1,2,3,4,5,6,7,8)
println()
/** * lambda(匿名函数) * lambda表达式使用实例: * */
val sumLambda:(Int,Int)->Int = {x,y -> x+y}
val chengLambda : (Int ,Int) ->Int = {x, y -> x*y}
println(chengLambda(4,8))
println(sumLambda(4,5))
/** * 定义常量用val * 定义变量用var * * */
//系统可以推断变量的类型,所以可以省略类型
var a = 43 var b: Int = 52
println("$a + $b = ${a + b}")
val A = 3
//类型后面加?表示可以为空
var age : String ? = null
//!!表示如果age为空,像JAVA一样抛出异常
// var ages = age!!.toInt()
//不做处理返回null
var ages1 = age?.toInt()
//age 为空时返回-1
var ages2 = age?.toInt()?: -1
println(ages1)
println(ages2)
println(parseInt(null))
println(parseInt("12"))
println(stringLength(null))
println(stringLength("hello world"))
println(parseDouble("123"))
for (i in 1..4)
println(i)
for (i in 1..4 step 2)
println(i)
for(i in 4 downTo 1 step 2)
println(i)
for(i in 1 until 4 )
println(i)}
//定义两个Int 参数 返回 Int 的函数
fun sum(a:Int , b:Int):Int{
return a+b
}//表达式作为函数体,返回类型自动推断:
fun sum2(a : Int , b : Int) = a+b
// public 方法则必须明确写出返回类型
public fun sum3(a : Int , b : Int):Int = a+b
//无返回值的函数(类似Java中的void):
fun method2(a: Int,b: Int):Unit{
println(a + b)
}// 如果是返回 Unit类型,则可以省略(对于public方法也是这样):
fun method(a : Int , b : Int){
println(a + b)
}/** * 可变长参数函数 *///函数的变长参数可以用 vararg 关键字进行标识:
fun vars(vararg v : Int){
for (vt in v){
print(vt)
}}//如果类型String后面没有?不允许传递null为参数
fun parseDouble(str: String):Int{
return str.toInt()
}//如果允许返回null,返回类型后面要加?,不然不允许返回null
fun parseInt(str:String?):Int?{
return str?.toInt() ?: null
}// 如果允许传入null,函数必须要做参数为null的处理,不然语法不通过
fun stringLength(str:String?) :Int{
return str?.length ?: -1
}/** * 类型检测及自动类型转换 * */
fun getStringLength(obj:Any):Int?{
//is 表示是否是String类型,如果是就自动转换为String,后面就可以当String 进行使用
if(obj is String)
return obj.length
//!is 如果不是String类型//
if(obj !is String)// return null
return null
}
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
}