2018年10月

字符串模板

在Kotlin中我们可以使用${}这样一种格式在一个字符串中引用一个变量。用法有点类似于Spring框架中的el表达式(记得是这个叫法),或者一些前端框架里也有类似的用法。

fun main(args: Array<String>) {
   println(sayHello("Cyber"));
}

fun sayHello(name:String):String{
    return "您好!${name}";
}

注:这里${}能够引用的变量类型不仅仅适用于String,可适用其他的基本数据类型。除此之外,在它的里面还可以调用函数,通过函数的返回值进行输出


字符串对比

Kotlin与Java的字符串对比区别

kotlin:== 对应 java:equals

kotlin:=== 对应 java:==

注:在java中我们判断两个字符串是否相等,我们会用equal()的方法,但是在kotlin中我们用==来判断,如果想要判断两个字符串的地址值我们使用===来进行判断。

当然,在Kotlin中也可以调用equals方法去达到上述==的效果,其内部其实调用了java中的equals方法。

var str1:String = "aaa";
var str2:String = "Aaa";
println (str1.equals(str2,true));

注:第二个参数是设置是否忽略字母大小写的意思。


空值处理

在调用函数时如果参数传递的是一个null值会报错。如:

fun main(args: Array<String>) {
   println(sayHello(null));
}

fun sayHello(name:String):String{
    return "您好!${name}";
}

这是由于Kotlin自带有空值判断的功能,如果此处代码默认参数可以为null可以这样写:

fun sayHello(name:String?):String{
    return "您好!${name}";
}

在参数的类型旁加一个?代表此参数可以为null,输出结果为:

您好!null

智能类型推断

在Kotlin中可以使用var来定义变量,此关键字可以进行智能类型推断。效果和JS中的var类似。

//i的类型为Int类型
var i = 18;
//此时会发生报错,因为赋值的数值已经超出Int的取值范围           
i = 9999999999999;    

//j被自动判断为是一个Long型的变量
var j = 9999999999999;   

变量在初始化时就会自动判断类型,并且起到绑定作用。再次对此变量做赋值时不能赋予与其不相符的数据类型。

定义的时候也可以显示的声明此变量是什么类型:

var i : Int = 18;                         
var j : Long = 9999999999999;              

注:在变量被定义时如果没有初始化的值时,需要手动声明其类型,否则编译器无法得知此变量是哪种数据类型

var x;              //报错,原因为无预先设置初始化值。
var y : Int;        //通过声明数据类型告知编译器。

var与val

  • var 可以声明一个可读可写的变量,相当于java中的普通变量。
  • val 用于声明一个只读变量,相当于java中用final声明的变量。

两者都能用于定义变量时的智能类型判断。


不可隐式转换

在Kotlin中,并不支持类似java中的自动拆装箱。Int型不可自动转成Long型:

var a : Int = 1;
var b : Long = a.toLong();

使用Kotlin编写一个HelloWorld


fun main(args:Array<String>){
    println("Hello World");
}

fun 函数的声明
args:Array< String > 接受参数名为args,数据类型为String
println("Hello World"); 向控制台输出HelloWorld


定义变量与输出


fun main(args: Array<String>) {
    var name = "111";     //定义一个变量name并赋值为"111"
    name = "222";         //给name重新赋值为"222"  
    println(name);
}

注:Kotlin里的变量定义可使用var,它会根据后面的赋值来自动判断所定义的变量类型。如上述的name就为一个字符串。且需要注意的是如果一开始赋值的是字符串的话则此变量就不能被重新赋值为别的类型。如:

    

var name = "111";     //定义一个变量name并赋值为"111"
name = 2;         //重新赋值为2,此时会报错

在Kotlin中,var用来定义可改变的变量,而val用来定义不可改变的变量,相当于java中的final。