kotlin中的函数和变量

###1、变量

    //---------------- 变量 -----------------//
    val a: Int = 1 //不可变引用。不能在初始化之后再次赋值。对应java的final变量,只会被初始化一次

    var b: Int = 0 //可变引用。这种变量的值可以被改变。相当于java的普通变量。
//      a = 2//val变量如果再次赋值会报错:Val cannot be reassigned
        //尽管val引用自身不可变,但是它指向的对象可能是可变的
        val languages = arrayListOf("java")
        languages.add("Kotlin")//引用对象发生了变化

        //var 变量允许改变自己的值,但是不允许改变自己的类型
        b = 2 //可以改变值
//      b = "Kotlin"//不可以改变类型,会报错:Type mismatch

2、函数

 //---------------- 函数 -----------------//
    /**
     *     代码块函数体
     *     1、使用  fun  來声明一个函数
     *     2、参数名:参数类型
     *     3、返回类型写在参数后面,并用冒号隔开
     *     4、对于有返回值的代码块体函数必须显式的写出返回类型和return语句
     */
    fun sum(a: Int, b: Int): Int {
        var c = a + b
        return c
    }

    /**
     * 表达式函数体
     * 编译器会分析作为函数体的表达式,并把它的类型作为函数的返回类型
     * 即使没有显式的写出函数返回类型,编译器也会根据函数体推导出返回类型,这种分析能力被称为类型推导
     * 类型推导只用于表达式体函数,也就是说只有表达式体函数的返回类型可以忽略
     */
    fun sum2(a: Int, b: Int, c: Int): Int = a + b + c

    fun max(a: Int, b: Int) = if (a > b) a else b

    fun appendToString(str: String, appendStr: String): String {
        return str + appendStr
    }

    //有默认参数
    fun appendToString2(str: String, appendStr: String = "isGood"): String {
        return str + appendStr
    }


        //命名参数,可以在传递参数的时候很方便的写上参数名称
        //如果已经指明了一个参数的名称,那它之后的所有参数名称都要标明
        //参数没有默认值,所以必须传入
        var result = appendToString(str = "Kotlin", appendStr = "isGood")
        Log.i("LHD", "result = " + result)

        //默认参数,函数可以给某个参数设置默认值,拥有默认值的参数可以不传
        var result2 = appendToString2(str = "Kotlin")
        var result3 = appendToString2("Kotlin")
        Log.i("LHD", "result2 = $result2  result3 = $result3")
        

输出结果:
kotlin

详细代码:

/**
 * Created by LHD on 2018/8/4.
 */
class KotlinActivity : AppCompatActivity() {

    //---------------- 变量 -----------------//
    val a: Int = 1 //不可变引用。不能在初始化之后再次赋值。对应java的final变量,只会被初始化一次

    var b: Int = 0 //可变引用。这种变量的值可以被改变。相当于java的普通变量。


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.kotlin_main)

//      a = 2//val变量如果再次赋值会报错:Val cannot be reassigned
        //尽管val引用自身不可变,但是它指向的对象可能是可变的
        val languages = arrayListOf("java")
        languages.add("Kotlin")//引用对象发生了变化

        //var 变量允许改变自己的值,但是不允许改变自己的类型
        b = 2 //可以改变值
//      b = "Kotlin"//不可以改变类型,会报错:Type mismatch

        //命名参数,可以在传递参数的时候很方便的写上参数名称
        //如果已经指明了一个参数的名称,那它之后的所有参数名称都要标明
        //参数没有默认值,所以必须传入
        var result = appendToString(str = "Kotlin", appendStr = " isGood")
        Log.i("LHD", "result = " + result)

        //默认参数,函数可以给某个参数设置默认值,拥有默认值的参数可以不传
        var result2 = appendToString2(str = "Kotlin")
        var result3 = appendToString2("Kotlin")
        Log.i("LHD", "result2 = $result2  result3 = $result3")

    }

    //---------------- 函数 -----------------//
    /**
     *     代码块函数体
     *     1、使用  fun  來声明一个函数
     *     2、参数名:参数类型
     *     3、返回类型写在参数后面,并用冒号隔开
     *     4、对于有返回值的代码块体函数必须显式的写出返回类型和return语句
     */
    fun sum(a: Int, b: Int): Int {
        var c = a + b
        return c
    }

    /**
     * 表达式函数体
     * 编译器会分析作为函数体的表达式,并把它的类型作为函数的返回类型
     * 即使没有显式的写出函数返回类型,编译器也会根据函数体推导出返回类型,这种分析能力被称为类型推导
     * 类型推导只用于表达式体函数,也就是说只有表达式体函数的返回类型可以忽略
     */
    fun sum2(a: Int, b: Int, c: Int): Int = a + b + c

    fun max(a: Int, b: Int) = if (a > b) a else b


    fun appendToString(str: String, appendStr: String): String {
        return str + appendStr
    }

    //有默认参数
    fun appendToString2(str: String, appendStr: String = " isGood"): String {
        return str + appendStr
    }


}












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值