最近kotlin语言比较火,所以我今天也来学习一下,顺便做个笔记,便于日后的复习!!!废话不多说,下面直接进入主题:
定义常量
val a:Int=15 //在kotlin中,val用于定义常量
//定义变量
var b:Int=20 //在kotlin中,var 修饰变量
//先定义类型,后赋值
val c:Int //定义类型
c=5 //后期初始化
//一种简写
val d=2
var e=5
小结:
①定义变量书写格式:var(val) 标识符:类型
②常量和变量需要关键字:var和val
③数据类型都已大写字母开头
定义函数(方法)
//方式一(无参)
fun buy(){
}
//方式二:有参五返回值(注::Unit相当于void,可写可不写)
fun login(name:String,pwd:String):Unit{
}
//方式三:有参有返回值(:在这里指的是返回值)
fun sum(m: Int, n: Int): Int {
return m + n
}
小结:
①定义函数时,函数头包含了函数名还必须包含fun关键字
②返回值:返回值类型在函数定义末尾指出,用冒号(:)隔开,如果没有返回值返回Unit,也可以省略
补充:无论什么语言,函数定义包含一下几个部分
函数头:函数名和标识函数的关键字
参数:参数名和参数类型
返回值
//注释
kotlin和java类似,支持单行和多行注释,但不同的是kotlin支持嵌套注释
2、基本数据类型
kotlin语言一切皆对象
数据类型:Double、Float、Long、Int、Short、Byte、Char、Boolean
在Kotlin中不能类型自动转换但是提供了方法:
toByte()
toShort()
toInt()
toLong()
toFloat()
toDouble()
toChar()
数组
//方式一
val arr= arrayOf("wahaha","shuagnwaiwai","wangzai")
//提供了set方法
arr.set(3,"aaa")
//get()方法-->>获取对应的值
val aaa = arr.get(2)
println("666666aaa") //打印的数据为: 666666wangzai //获取数据大小 arr.size //遍历数组 for (i in arr)print("QQQQQQQi")
//方式二
var arr2=Array(5,{i -> (i*1).toString()})
//方式三
//Kotlin还提供了具体数据类型的数组,ByteArray, ShortArray,IntArray等,它们和
Array没有继承关系。但是也是有属于自己类型的操作方法以及属性等。
var ddd= intArrayOf(10,20,30)
//也可以这样写
var intArr : IntArray = intArrayof(0,1,2)
var intArr2 : Array<Int> = arrayof(0,1,2)
如何用kotlin进行输出数据呢?
//方式一(以美元符号()开头) val a = 10 print("a = a") //打印结果为 a = 10
//方式二({ }大括号中任意表达式)
val str = "kotlin"
print(""str.length是 {"str.length"}) //打印结果kotlin.length长度是3
选择语句:使用when代替了switch case
var id: Int=2
when (id) {
1 -> println("id==1")
2 -> println("id==2")
else->{
print("id is neither 1 nor 2")
}
}
循环语句
//方式一
for (i in 1..3) {
println("aaaaaaaaaaa"+i)
}
//方式二
for (i in 6 downTo 0 step 2){
println("bbbbbbbbbb"+i)//6 4 2 0
}
补充:返回和跳转(continue return break)
return。默认从最直接包围它的函数或者匿名函数返回。
break。终止最直接包围它的循环。
continue。继续下一次最直接包围它的循环。
在学习过程中遇到了?和!!,那么他们代表什么呢?
? :?在标识符后使用,代表对象可为空,如果当前对象为空,不会抛出空指针异常。而是会返回null
!! :代表当前变量或常量一定不能为空。如果为空,就抛出空指正异常
// 可为空
var age : String? = null
// 可为空,如果age为空,返回null
var age1 = age?.toInt()
// 不能为空
var age2 = age!!.toInt()
类型转换
在java中使用instanceof,但是在java中用的是is
fun getStringLength(obj : Any): Int? {
if(obj is String){
// 进行is判断以后,会自动转化成obj
return obj.length
}
if(obj !is String){
return null
}
return null
}
注:any在Kotlin所有类中,有一个公共的superclass,名字就叫:Any
判断两个对象是否相等
①Java中,判断两个对象的地址,或者两个对象是否相等,分别使用equals和==。
②kotlin中,稍微做了一点改动,kotlin中的==等同于java中的equals,kotlin中的===等同于java中的==。
标签
标签是一个非常好用的东西。他可以让我们在多循环嵌套的情况下,进行穿插处理。不会像java一样,continue,break只能针对当前循环
在 Kotlin 中任何表达式都可以用标签(label)来标记。 标签的格式为标识符后跟 @ 符号,例如:abc@、fooBar@都是有效的标签。 要为一个表达式加标签,我们只要在其前加标签即可。
fun lableDemo() {
val intArray= intArrayOf(1,2,3)
val intArray2= intArrayOf(1,2,3)
Log.i("aaaaa","start for")
intArrFor@for(int in intArray){
Log.i("aaaaa","for intArray int : int") intArr2For@for (int2 in intArray2){ // 每一次退出,回到intArrFor if(int2 == 1) break@intArrFor Log.i("aaaaa","for intArr2 int2 :int2")
}
}
}
今天就写这么多,,,日后更新,,,要去写项目啦。。。。。