kotlin基础语法学习阶段的代码总结

package kotlinstudy

import java.lang.Exception
import java.util.*

fun main(args:Array){
    //println("hello kotlin")
    //隐式声明
    var name = "张三"//自动类型推断
//    println(name)
    //显式声明
    var i:Int = 4
//    println(i)

    val t = "No.123"//声明常量,不可修改,类似于Java中的final

    //变量的取值范围

    val byteMax:Byte = Byte.MAX_VALUE
    val byteMin:Byte = Byte.MIN_VALUE
//    println("Byte最大值:$byteMax")
//    println("Byte最大值:$byteMin")

//    println(plus(7,8))
//    println(getString("你好。。。"))
//    println(getString(null))//参数加上一个?代表可以为空
    var a1 = "aaa"
    var b1 = "AAA"
//    println(a1.equals(b1,true))//忽略大小写

    whenFun(10)

    //kotlin定义数组,循环的使用
    //开区间   [1,100]
    //闭区间   (1,100)
    var nums = 1..100   //这是一个数组  [1,100]
    nums = 1 until 100 //数组 [1,100)
    var sum = 0
    var nums2 = nums.reversed()
//    for (num in nums ){
//        sum += num
//    }
    //print("sum = ${sum}")
    for (num in nums step 2){
        sum += num
    }

  //  var s = nums.count()//数量,长度是多少

    /* list的用法
    输出 0   111
        1   222
        2   333
     */
//    var lists = listOf("111","222","333")
//    for((index,value) in lists.withIndex()){
//        println("$index   $value")
//    }

    //map用法
//    var map = TreeMap()
//    map["111"] = "good"
//    map["222"] = "study"
//    println(map["111"])


    //具名参数和默认参数
    //var result = getParams(3.14f,1.2f)
   // println(result)

//    var resultDefault = getDefaultParams(c=3.6f)//具名参数的写法。
//    println(resultDefault)

    //字符串和数字
    var a = "13"
    var b = 12
    a = b.toString()//把b数字转换成字符串放入a里面
    b = a.toInt()   //把a字符串转换成数字放入b里面

    //kotlin人机交互 输入输出
//    println("请输入第一个数字:")
//    var num1Str = readLine()
//    println("请输入第二个数字:")
//    var num2Str = readLine()
//
//    var num1:Int = num1Str!!.toInt()
//    var num2:Int = num2Str!!.toInt()
//    println("${num1} + ${num2} =${num1+num2}")

    //异常处理
//    try{
//
//    }catch (e:Exception){
//        println(e.toString())
//    }

    //尾递归 tailrec修饰防止堆栈溢出
   // println(ollAdd(10000,0))
    var rect = Rect(20,10)
    println("rect height:${rect.height},rect width:${rect.width}")
}

//面向对象start
class Rect(var height:Int,var width:Int){
    //封装
    private fun a(){

    }

    public fun b(){
        a();
    }
}
//继承开始
open class Father{
    open fun action(){
        print("zzzzzz")
    }
}

class Son : Father(){
    override fun action() {
        super.action()
        print("aaaaaaaaaa")
    }
}
//继承结束

//抽象
abstract class Human(name:String){
    abstract fun eat()
}

class Man(name:String):Human(name){
    override fun eat() {
        print("大口吃")
    }

}

//委托和代理start
interface IWashBowl{
    fun washing()
}
class BigHeadSon:IWashBowl{
    override fun washing() {
    }
}

class SmallHeadFather:IWashBowl by BigHeadSon(){
    override fun washing() {
        BigHeadSon().washing()
    }
}
//委托和代理end

//单例模式start  object就是代表单例
object Son2:IWashBowl{
    override fun washing() {
    }
}
//单例模式end

//面向对象end

//枚举start
enum class Week{
    星期一,星期二
}

// Week.星期二.ordinal = 1 代表第一个元素
//枚举end


tailrec fun ollAdd(num:Int,result:Int):Int{
    println("计算机第${num}次运算,result=${result}")
    if(num == 0){
        return 1
    }else{
        return ollAdd(num-1,result+num)
    }
}

fun ollAdd(num:Int):Int{
    println("计算机第${num}次运算")
    if(num == 1){
        return 1
    }else{
        return num+ ollAdd(num-1)
    }
}

fun getDefaultParams(PI:Float=3.14f,c:Float):Float{
    return PI*c;
}

fun getParams(PI:Float,c:Float):Float{
    return PI*c;
}

fun whenFun(score:Int){
    when(score){
        //10-> println("greate")
        //else -> println("fighting")
    }
}

fun whenFun2(score:Int):String{
    var r = when(score){
        10-> "十"
        else ->"记不住"
    }
    return r
}

fun getString(str:String?):String{
    //$取值   占位符
    return """
        hello,${str}
        """
}

fun plus(a:Int,b:Int):Int{
    return a+b
}

//==============函数式表达式=================
//1.正常编写形式
//fun add(x:Int,y:Int):Int{
//    return x+y
//}

//函数表达式写法
fun add(x:Int,y:Int):Int = x+y

//函数表达式变形
var i={x:Int,y:Int -> x+y}
//调用方式 i(3,5)

//==============函数式表达式=================

 

你可能感兴趣的:(kotlin,kotlin)