包的定义
package com.doctorq
import java.util.*
注意这里的包定义和java有一点不同,它和文件所在的路径没有关系,但是编译过后,却会按照原来的包名来生成路径
函数定义
带返回值的函数
//定义方法
fun sum(a:Int, b:Int): CharSequence? {
return (a + b).toString()
}
函数关键字为fun, 参数名和类型要倒叙,返回值用:后面跟类型.这个很Scala而且调用函数,没有对象概念,直接调用了.
表达式函数
//定义表达式
fun sum1(a: Int, b: Int) = (a + b).toString()
无返回值函数
//定义没有返回值的表达式
fun showMsg() : Unit {
Log.d("hello", "----------------------Kotlin-----------------------")
}
也可缺省
fun showMsg() {
Log.d("hello", "----------------------Kotlin-----------------------")
}
本地变量
常量,关键字val
val a: Int = 1
val b = 1
变量关键字var
var c : Int
c = 3
注意常量不能赋值,也就是说
val c
c = 1
这种表示方式会报错
注释
可以使用双斜杠注释一行语句,或者/**/的格式注释语句块
/*
val c
c = 1
上面的这种定义方式是错误的
*/
格式化字符串
在字符串格式中输出字符串,以$+变量名的形式就可以直接读取字符串的值,
fun showMsg1() {
val name:String = "hello"
Log.d("$name", "----------------------Kotlin-----------------------")
}
字符串中调用函数
fun getMsg() :String{
return "hello"
}
fun showMsg2() {
Log.d("${getMsg()}", "----------------------Kotlin-----------------------")
}
条件判断语句
if语句
fun showMsg3(msg: String) {
Log.d(msg, "----------------------Kotlin-----------------------")
}
//正常语句
fun maxOf(a: Int, b: Int) {
if (a > b)
return showMsg3(a.toString())
else{
return showMsg3(b.toString())
}
}
//条件表达式
fun maxOf1(a: Int,b: Int) = if ( a > b ) showMsg3(a.toString()) else showMsg3(b.toString())
空值安全检查
对于有可能返回空值的函数,必须标注出来,在返回值类型后面跟?表示,比如一个函数的返回值为Int值,如果返回值可能为空,那么要写成Int?
fun sum(a: Int, b: Int): CharSequence? {
return (a + b).toString()
}
类型检查
使用关键字is来检测表达式类型,如果是常量或属性,如果进行了类型检查,类型检查分支的自动转变为该对象.如果判断的时候用!is,则if语句外的obj自动转化为该对象,更加强大的是如果在&&判断左边有判断,右边也能直接转化为该对象
fun getStringLength(obj:Any):Int? {
if (obj !is String){
return null
}
return obj.length
}
循环语句
fun showMsgs(){
var list = listOf<String>("doctorq", "dev", "text")
for(item in list){
showMsg3(item)
}
}
如果要获取索引值的话使用
fun showMsgs1(){
var list = listOf<String>("doctorq", "dev", "text")
for(index in list.indices){
showMsg3("$index : ${list[index]}")
}
}
while语句
fun showMsgs2(){
var list = listOf<String>("doctorq", "dev", "text")
var index = 0
while (index < list.size){
showMsg3("item at $index is ${list[index]}")
index++
}
}
when语句,类似于java语句中的switch,case,不过条件更加灵活
//类似java中的switch,scala中的case
fun describe(obj: Any): String =
when (obj) {
1 -> "one"
"Hello" -> "Greeting"
is Long -> "Long"
!is String -> "Not a string"
else -> "UnKnown"
}
范围定义
获得一个区间的值,可以使用in关键字,创建一个区间数组可以使用..来创建,比如要创建一个1到10的数组,可以使用1..10来创建
fun demo(){
val x = 10
val y = 9
if (x in 1..y+1) {
showMsg3("fits in range")
}
}
//集合
fun demo3(){
var list = listOf<String>("doctorq", "dev", "text")
for (item in list){
showMsg3(item)
}
}
网友评论