Kotlin编程之路——基本语法

我们写的代码片段可以在这里运行测试 测试代码地址

Kotlin中var和val的区别

在Kotlin中的 var 和 val 是属于关键字,乍看它俩很相似,因为只是差一个字母而已,可是区别却很大。
var是作为可变变量,这是一个可以通过重新分配来更改为另一个值的变量。这种声明变量的方式和Java中声明变量的方式一样。

先来看下这段用var作为可变变量的代码

fun main(args: Array) {
    var name = "hongfa"  
    println(name)  
    name = "==hongfa=="  
    println(name)  
}

运行后的结果,运行正常,说明var确实是作为可变变量。

Kotlin编程之路——基本语法_第1张图片
image.png
val是一个只读变量,这种声明变量的方式相当于Java中的final变量。一个val创建的时候必须初始化。
fun main(args: Array) {
 val finalValue = "我是不可改变的"
 finalValue = "我就是要改变你"; 
 println(finalValue)   
}

运行后的结果,看到没有,运行的时候报错了,提示cannot be reassigned(不能重新分配),通过这么个例子,我们可以很快的就了解并记住了他们的区别。


Kotlin编程之路——基本语法_第2张图片
image.png

认识了 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做处理 
}

好了,本文内容到此结束,欢迎大家丢砖一起学习,一起进步,谢谢大家!

你可能感兴趣的:(Kotlin编程之路——基本语法)