Kotlin 第一站

来源:互联网 发布:mac microsoft office 编辑:程序博客网 时间:2024/05/29 08:19
前言:在网上没有找到什么比较好的教程,虽然有些视频教程,但是本人感觉太浪费时间,就看菜鸟教程敲的一些代码,用作自己学习笔记。
/** * 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
}
 
原创粉丝点击