变量:
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
数据类型说明: 整型, 长整型, 短整型, 单精度浮点型, 双精度浮点型, 布尔型, 字符型, 字节型
/**
*如果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 这种方式可以直接取值,而不需要在引号外面使用+号;
}