我们写的代码片段可以在这里运行测试 测试代码地址
Kotlin中var和val的区别
在Kotlin中的 var 和 val 是属于关键字,乍看它俩很相似,因为只是差一个字母而已,可是区别却很大。
var是作为可变变量,这是一个可以通过重新分配来更改为另一个值的变量。这种声明变量的方式和Java中声明变量的方式一样。
先来看下这段用var作为可变变量的代码
fun main(args: Array) {
var name = "hongfa"
println(name)
name = "==hongfa=="
println(name)
}
运行后的结果,运行正常,说明var确实是作为可变变量。
val是一个只读变量,这种声明变量的方式相当于Java中的final变量。一个val创建的时候必须初始化。
fun main(args: Array) {
val finalValue = "我是不可改变的"
finalValue = "我就是要改变你";
println(finalValue)
}
运行后的结果,看到没有,运行的时候报错了,提示cannot be reassigned(不能重新分配),通过这么个例子,我们可以很快的就了解并记住了他们的区别。
认识了 var 和 val 变量后,接下来就开始我们的第一个函数吧,废话不多说,上来就是干,直接上代码。
函数表达式
先来看下一个函数的返回值与无返回值是什么样的写法,kotlin中定义一个函数是使用fun作为关键字去声明函数
无返回值的函数
//默认无返回的函数
fun method(){
println("没有返回值");
}
带返回值的函数,下面来一个String类型和Int类型的函数
//String类型
fun method() :String{
return "我是有返回值的";
}
//Int类型,这里有个区别,Java中int都是小写的,而Kotlin里面的Int首字母是大写的。
fun method() :Int{
return 0;
}
接下来看下无参和有参的函数是怎么定义的
无参的函数
//测试函数
fun test(){
println("无参的函数");
}
有参函数,默认是无返回值的
fun add(var a: Int,var b: Int){
println("有参的函数");
}
带返回值的有参函数
fun add(a: Int, b: Int): Int{
return a + b;
}
单表达式 函数
fun result() =1;
//等价于
fun result(): Int {
return 1;
}
//如果是这样子的话,可以和when结合在一起,when的作用在文章的后半部分有说到
fun main(args: Array) {
println(result("Red"));
}
//获取返回值
fun result(color: String): Int = when (color) {
"Red" -> 0
"Green" -> 1
"Blue" -> 2
else -> throw IllegalArgumentException("Invalid color param value")
}
in关键字的使用
可以看到kotlin的if else,条件判断语句或者是使用for循环语句其实和Java都没有什么区别
if语句判断示例
//使用 in
fun main(args: Array) {
var x: Int =1;//如果x的值为0,则输出not
var y: Int =3;
//如果存在于区间(1,y-1),则打印yes
if (x in 1..y-1) {
print("yes");
}else {
print("not");
}
}
//使用 !in
fun main(args: Array) {
var x: Int =0;//如果x的值为1,则输出not
var y: Int =3;
//如果x不存在与区间(1,y-1),则打印yes
if (x !in 1..y-1) {
print("yes");
}else {
print("not");
}
}
//你也可以这样子写if语句,但是它打印的内容却是这样子的“kotlin.Unit”
fun foo(param: Int) {
val result = if (param == 1) {
"one"
} else if (param == 2) {
"two"
} else {
"three"
}
}
for循环语句使用示例
fun main(args: Array) {
var v: Int;
for(x in 1..5){
println(x);
}
}
//遍历集合(类似于Java中的for(String name : names))
fun main(args: Array) {
val lists = listOf("a", "b", "c")
for(list in lists){
println(list);
}
}
直接使用in在lists里面判断是否存在某个对象,这个就和我们Java里面的List的contains作用一样
fun main(args: Array) {
var a: String = "a";
val lists = listOf("a", "b", "c")
//如果lists集合中包含a对象则打印yes
if (a in lists){
print("yes");
}
}
when 语句
Kotlin用when、->及else组合来替代原先的switch、case及default
fun test(value: Int){
when(value){
10 -> println("数字10");
20 -> println("数字20");
30 -> println("数字30");
else ->{
println("未知数");
}
}
}
智能类型推测 -- is and !is
判断一个对象是否为一个类的实例,我们可以使用is关键字
这个与Java中的instanceof关键字类似,但在Kotlin中如果已经确定了一个对象的类型,可以在接下来的代码块中直接作为这个确定类型使用。
fun getStringLength(obj: Any): Int? {
if (obj is String) {
// 做过类型判断以后,obj会被系统自动转换为String类型
return obj.length;
}
//同时还可以使用!is,来取反
if (obj !is String){
}
// 代码块外部的obj仍然是Any类型的引用
return null;
}
异常处理 try/catch 表达式
kotlin的异常处理和Java的异常处理并没有什么不同
fun testTryCatch() {
val result = try {
test();
} catch (e: ArithmeticException) {
throw IllegalStateException(e);
}
// 对result做处理
}
好了,本文内容到此结束,欢迎大家丢砖一起学习,一起进步,谢谢大家!