Kotlin学习笔记(二)

来源:互联网 发布:7位铁通卡用什么网络 编辑:程序博客网 时间:2024/05/24 05:02

(一)Kotlin的基本语法

1.1定义变量

Ø Kotlin中,数据类型要放在变量后面,并且用冒号(:)分隔,这一点与Java相反

Ø 变量和常量需要关键字:在Kotlin中,定义变量需要用var开头,定义常量需要用val开头

Ø 数据类型首字母:在Kotlin中,数据类型都以大写字母开头,而在Java中,一般只有类,接口等复杂数据类型的名字才采用首字母大写的方式。

Ø 如果在定义变量时为进行初始化,就必须制定数据类型,如果在定义变量时进行了初始化,就可以不指定数据类型,Kotlin编译器会自动根据等号右侧的值推导数据类型。  

Java定义变量代码

/** * Java定义变量 * */public class Demo2 {    public void main(String[] args){        int n = 30;                    //Java变量        int ok;                        //仅定义了OK变量,并未初始化,需要在后面初始化        final int m = 20;               //Java常量,不允许再次设置m        ok = 120;                       //后期初始化OK变量        m = 10;                         //编译出错,因为m是常量    }}

Kotlin定义变量代码
fun main(args : Array<String>){    var n : Int =30                          //kotlin变量,此处也可以不初始化,等待后期初始化    var ok : Int                             //仅定义了ok 变量,并未初始化,需要在后期初始化    val m : Int = 20                        //Kotlin常量,不需要再次设置m    ok = 123                                //后期初始化OK变量    m = 10                                  //编译出事,因为m是常量    var k = 100                             //自动推导变量k 的数据类型}

 

1.2定义函数

Ø 函数头:包括函数名称和标识函数的关键字,funfunction

Ø 参数:包括参数名和参数类型

Ø 返回值:包括返回值类型,以及如果没有返回值时的类型是什么。

 

Java定义函数代码

/** * Java定义函数 * **/int add(int m, int n){    return m + n;}void process(int m){    System.out.print(m * m);}


Kotlin定义函数代码

/** 可以看出,定义Kotlin函数时,函数头除了包含函数名外,还必须包含fun关键字。至于参数,与定义Korlin变量的方式相同

 * 返回值:如果Kotlin函数有返回值,返回值类型在函数定义部分末尾指定,与函数定义部分用冒号(:)分割。 * * 如果Kotlin函数没有返回值,那么可以返回Unit,也可以什么都不返回(省略Unit)
 * * */fun add(m:Int, n:Int):Int{    return m + n}fun process(m:Int): Unit{    println(m * m)}

1.3注释

单行注释

//这是一行注释

块注释

/*hello         World */

嵌套注释

/*
 Hello       /* world */*/     


(二)基础数据类型

2.1数值类型

 

(1)基本数据类型

 

数据类型                                       占用字节数

Double                                                8

Float                                                    4

Long                                                    8

Int                              4

Short             2

Byte       1


Kotlin定义常量和变量写法

/** * Kotlin 定义数据基本类型 * */var m : Int = 20;var price : Double = 20.4var flag : Boolean = trueval v1 : Int = 100val V2 : Double  = 20.4


Kotlin的数值和Java数值一样,也都有默认类型,例如,整数的默认为Int,浮点的默认为Double。


(2)数据类型之间的转换

toByte()  : 转换成Byte类型

toShort()  : 转换成Short类型

toInt():Int  : 转换成Int类型

toLong():Long  : 转换成Long类型

toFloat():Float  : 转换成Float类型

toDouble():Double  : 转换成Double类型

toChar():Char  : 转换成Char类型


Java的数据类型转换

/** * Java的基本数据类型转换 * */int m = 20;byte n = 10;m = n;                       //将byte转换为intlong x = 20;                //将int转换成longshort value = 20;m = value;                   //将short转换为int


Kotlin的数据类型转换

/** * Kotlin的数据类型的转换 * */var m = 20val n :Byte = 10m = n                   //编译出错,无法将byte隐式转换为intval x : Long = 20       //可以将int类型的值隐式转换为Long类型val value: Short = 20m = value               //编译错误,无法将short隐式转换为int

Kotlin将short转换成int类型的写法

var m = 20val n: Byte = 10m = n.toInt()           //通过toInt方法将Byte转换为Intval x: Long = 20val value: Short = 20m = value.toInt()       //  通过toInt方法将Short转换为Int


(3)Kotlin中特殊的写法

KotlinJava一样,也提供了一些特殊表示法,用于表示LongFloat类型的值,以及十六进制和二进制(八进制目前还不支持)

Ø 表示Long类型的值,在数值后面加Ll,如123L

Ø 表示Float类型的值,在数值后面加Ff,如123F

Ø 表示十六进制,在数值前面加0x,如0x1F

Ø 表示二进制,在数值前面加0b,如0b100101

如果数值较大,并不容易马上确定值的大小,Kotlin提供了下划线(_)作为数值分隔符,可以根据需要对数值进行分割。


val oneMillion = 1_000_000val creditCardNumber = 1234_5678_1012_3456Lval hexBytes = 0xFF_EC_DE_5E



2.2字符类型

Kotlin中,字符类型用Char描述,不过与Java不同,在Kotlin中,字符不能直接看做是数字。

Java代码

Void check(Char c){      If(c == 97)       {           /这里是可以编译通过的       }}

但是使用Kotlin实现这样的功能不行

fun check(c :Char){If(c == 97){   //编译出错}}

Java一样,Kotlin的字符也用单引号

fun check(c : Char){if(c == ‘a’){  //编译通过}}

Kotlin也支持转义符,常用的特殊字符

  \t:  制表符

  \b:  退格符

  \n:  换行符

  \r:  回车符

  \’:  单引号

  \”:  双引号

  \\:  反斜杠

 

虽然字符不能直接作为数值使用,但可以使用toInt方法将字符转换为相应的ASCII,也可以自定义一个函数,将数值字符转换为对应的数值

/** * 将字符转换为数值  如  '2 ' 转换为 2 * */fun decimalDigitValue(c : Char) : Int{    //字符必须是‘0’到‘9’之间    if(c !in '0'..'9')        throw  IllegalArgumentException("Out of range")    return c.toInt() - '0'.toInt()}

2.3布尔类型

 

Kotlin语言中的布尔类型Boolean描述,有两个值:  true    false  ,三种操作:逻辑或(||)、逻辑与(&&)、逻辑非(!)

 

var flag1:Boolean  = trueval flag2:Boolean  = falseflag1 = falseif(flag1 && !flag2){    println("flag1 && !flag2")}if(!flag1 || flag2){    println("!flag1 || flag2")}


2.4数组

Kotlin中,数组使用Array类描述,在该类中包含了getset方法(其他操作通过重载实现了[]操作),size属性以及其他很多有用的成员方法。

Kotlin中,定义数组有多种方式,使用arrayOf函数定义可以存储任意值的数组;使用arrayOfNulls函数定义制定长度的空数组(数组元素中没有值);使用Array类的构造器指定数组长度和初始化数据的方式定义数组;使用intArrayOfshortArrayOf等函数定义制定类型的数组,并初始化数组。


/**    //使用arrayOf函数定义可以存储任意值的数组    val arr1 = arrayOf(1,2,3,'a')    println(arr1[3])    arr1[2] = 'b'    println(arr1[2])    //使用arrayOfNulls函数定义数组    var arr2 = arrayOfNulls<Int>(10)    println("arr2的长度:"+arr2.size)    //使用Array类的构造器定义数组,其中第二个参数是指初始化每一个数组元素的值    // 每个数组元素的值就是当前数组索引的乘积    val arr3 = Array(10,{i -> (i*i).toString() })    println(arr3[3])    //使用intArrayof函数定义数组    var arr4:IntArray = intArrayOf(20,30,40,50,60)    println("arr4[2] = "+ arr4[2])


 

2.5字符串

Kotlin中,使用String表示字符串类型,有两种

普通字符串:这种字符串类似于Java,可以在字符串中加上转义符,如\n, 会让转义符后面的字符串换到下一行,这种字符串需要放在双引号中。

保留原始格式的字符串(raw String):这种字符串不能使用转义符,如果字符串中带有格式,如换行,直接写在字符串中即可,这种字符串需要放在3个引号对中

 //第一类字符串(与Java类似)    var s1 = "hello \nworld"    var s2:String = "世界\n你好"    println(s1)    println(s2)    //第二类字符串 保留原始格式    var s3 = """          Hello                World        I Love You        """    println(s3)


2.6字符串模板

 

Kotlin字符串还有一项重要的功能,这就是字符串模板。所谓的字符串模板,就是在字符串中添加若干个占位符,内容会在后期指定。也就是说,用模板可以设置字符串动态的部分。

模板使用美元符号($)设置,如“i = $i”就是一个占位符,其中$后面的i是变量,随着i的变化,“i = $i”中的值也随着变化,我们还可以使用任意表达式,不过要使用${表达式}语法。

  val i = 30    val s1 = "i = $i"    //相当于i =30    println(s1)    val s2 = "abc"    val str = "$s2 的长度是${s2.length}"    println(str)


                     

原创粉丝点击