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定义函数
Ø 函数头:包括函数名称和标识函数的关键字,如fun、function等
Ø 参数:包括参数名和参数类型
Ø 返回值:包括返回值类型,以及如果没有返回值时的类型是什么。
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
(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的数据类型的转换 * */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中特殊的写法
Kotlin与Java一样,也提供了一些特殊表示法,用于表示Long和Float类型的值,以及十六进制和二进制(八进制目前还不支持)
Ø 表示Long类型的值,在数值后面加L或l,如123L
Ø 表示Float类型的值,在数值后面加F或f,如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类描述,在该类中包含了get和set方法(其他操作通过重载实现了[]操作),size属性以及其他很多有用的成员方法。
在Kotlin中,定义数组有多种方式,使用arrayOf函数定义可以存储任意值的数组;使用arrayOfNulls函数定义制定长度的空数组(数组元素中没有值);使用Array类的构造器指定数组长度和初始化数据的方式定义数组;使用intArrayOf、shortArrayOf等函数定义制定类型的数组,并初始化数组。
/** //使用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)
- kotlin学习笔记(二)
- kotlin学习笔记(二)
- Kotlin学习笔记(二)
- kotlin学习笔记(二)
- Kotlin学习笔记(二)---从零学习Kotlin
- Kotlin学习笔记(二):Kotlin与Java对比
- Kotlin学习笔记(二)循环,跳转
- Kotlin学习笔记(二)基本数据类型
- Kotlin学习笔记二(数据类型)
- kotlin学习(二)
- Kotlin学习(二)
- Kotlin学习笔记(二)——示例篇二
- Kotlin笔记二(Kotlin基础)
- Kotlin学习(二)Hello Kotlin
- Kotlin学习笔记(二)——示例篇一
- Kotlin学习笔记(二)——示例篇三
- Kotlin学习笔记(二)-类和对象
- Android Kotlin学习笔记(二)---环境搭建
- VPN连接配置
- Codeforces 808F 网络流最小割(二分图最大点权独立集) 解题报告
- Solr的概述
- 【数论】【poj1845】Sumdiv
- Java 自动拆装箱
- Kotlin学习笔记(二)
- 10月11号Python生物信息学数据管理
- Hive SQL的编译过程
- TypeScript
- JAVA中的接口
- unity 打开文件夹并选择文件
- iOS10及以上版本的通知授权方式
- 欢迎使用CSDN-markdown编辑器
- FPGA工程建立和自带仿真ISim仿真教程