1.Kotlin 变量和函数

变量:

Kotlin中定义一个变量,只允许在变量前声明两种关键字:var 和 val;

val(value的简写)用来声明一个不可变的变量,这种变量在初始赋值之后就再也不能重新赋值,对应Java中的final变量;
var(variable的简写)用来声明一个可变的变量,这种变量在初始赋值会后仍然可以再被重新赋值,对应Java中的非final变量;

//ps:Kotlin每一行代码的结尾是不用加分号的。
fun main(){
    val a = 10
    val isFailed: Boolean get() = i > 3//赋值操作, i为变量;
    println("a = "+ a)
}

Kotlin的类型推导机制:代码中使用val关键字定义了一个变量a,并将它赋值为10,这里a就会被自动推导成整型变量。
因为既然你要把一个整数赋值给a,那么a就只能是整型变量,而如果你要把一个字符串赋值给a,那么a就会被自动推导成字符串变量;

当我们对一个变量延迟赋值的话,Kotlin就无法自动推导它的类型了。
这时候我们可以使用显示的声明变量类型:

val a: Int = 10
val c: Int      // 如果不在声明时初始化则必须提供变量类型
c = 1           // 明确赋值

Kotlin完全抛弃了Java中的基本数据类型,全部使用对象数据类型,在Java中int是关键字,而在Kotlin中Int变成一个类,它拥有自己的方法和继承结构;

Java和Kotlin数据类型对照表
Java基本数据类型: int, long, short, float, double, boolean, char, byte
Kotlin对象数据类型:Int, Long, Short, Float, Double, Boolean, Char, Byte
数据类型说明: 整型, 长整型, 短整型, 单精度浮点型, 双精度浮点型, 布尔型, 字符型, 字节型

Kotlin数据类型

/**
 *如果a进行运算赋值,则需要将a的声明由val 变成 var;
 */
fun main(){
    var a:Int=10
    a=a*10
    println("a="+a)
}

关于 val 和 var 什么时候使用的问题:
永远优先使用val来声明一个变量,而当val没有办法满足你的需求时再使用var;

函数:

Kotlin中定义函数的语法:

fun methodName(param1: Int,param2: Int): Int{
    return 0;
}

语法规则:
fun (function的简称)是定义函数的关键字,无论定义什么函数,都一定要是用fun来声明;

methodName:函数名;

(param1: Int,param2: Int):声明该函数接收什么参数,参数的数量可以是任意多个,例子中则表示该函数接收两个Int类型的参数。参数的声明格式是"参数名: 参数类型",其中参数名可以随便定义;如果不想接收任何参数,那么写一对空括号就可以了;

参数括号后面的部分是可选的,用于声明该函数会返回什么类型的数据上述示例函数会返回一个Int 类型的数据,如果你的函数不需要返回任何数据,这部分可以直接不写;

最后两个大括号之间的内容则是函数体,这里用来编写函数的具体逻辑。
eg: max 方法的使用;

fun largerNumber(num1: Int, num2: Int): Int {
    return max(num1, num2);//max --> Kotlin中的max方法,用来比较两个值的大小;
}

当函数只有一行代码时,Kotlin允许我们不必编写函数体,可以直接将唯一的一行代码写在函数定义的尾部,中间用等于号连接即可;

eg:上述代码可以修改为
fun largerNumber(num1: Int, num2: Int): Int = max(num1, num2)//一样可以起到返回max Int值的效果;
//Kotlin的类型推导机制,可以将max()执行后的类型自动推导成Int;
//则还可以写成:
fun largerNumber(num1: Int, num2: Int) = max(num1, num2)//去掉返回值类型,一样可以正确返回;

在main方法中调用该函数:

//注意largerNumber函数需要定义在class的外面,
fun main(args: Array<String>) {
    val a = 37
    val b = 40
    val value = largerNumber(a, b);
    println("larger number is $value");//$value 这种方式可以直接取值,而不需要在引号外面使用+号;
}

如果定义在class的内部,则需要创建class的对象调用方法;

class FunctionTest {
    fun largerNumber(num1: Int, num2: Int): Int {
        return max(num1, num2);//max --> Kotlin中的max方法,用来比较两个值的大小;
    }
}
fun main(args: Array<String>) {
    /**
     * Kotlin创建对象的方式;
     * functionTest -- 对象名;
     * FunctionTest --对象的数据类型;
     * (如果像示例这样立即创建对象则可以不写,Kotlin的类型推导机制会自动推导类型);
     * FunctionTest() -- 创建的对象;
     */
    val functionTest:FunctionTest=FunctionTest();
    val a = 37
    val b = 40
    val value = functionTest.largerNumber(a, b);
    println("larger number is $value");//$value 这种方式可以直接取值,而不需要在引号外面使用+号;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值