kotlin入门(3)——基础语法

一.定义变量

1.val定义:只能赋值一次

val a: Int = 1;//定义整数变量

val a = 1;自动推断出 `Int` 类型

val c: Int  // 如果没有初始值类型不能省略

2.var定义:可重新赋值

var x = 5;

x+=1;


二.表达式

1.if表达式与java一样这里不说了

2.for、while循环:

val items = listOf("apple", "banana", "kiwifruit")

for (item in items) {

    println(item)

}

或者:

for (index in items.indices) {

    println("item at $index is ${items[index]}")

}

3.when:

相当于java的switch,但是功能更强大:

when (x) {

    1 -> print("x == 1")

    2 -> print("x == 2")

    3,4 -> print("x == 3 or x == 4”)//相同处理放在一起用逗号隔开

    in 1..10 -> print("x is in the range”)//1到10范围内的

    !in 10..20 -> print("x is outside the range”)//不在区间内的

   is String -> x.startsWith("prefix”)//检测是否为字符串

    else -> { // 注意这个块

        print("x is neither 1 nor 2")

    }

}


三.函数:

fun sum(a: Int, b: Int): Int {

    return a + b

}


解释:

fun:kotlin函数使用fun关键字声明

sun:为函数名

a:为参数

a:Int:表示int类型的参数

Int:表示返回类型

返回无意义的值,有两种写法:

1.fun printSum(a: Int, b: Int): Unit {

    println("sum of $a and $b is ${a + b}")

}

2.省略Unit:

fun printSum(a: Int, b: Int) {

    println("sum of $a and $b is ${a + b}")

}


单表达式函数:

当函数返回单个表达式时,可以省略花括号并且在 = 符号之后指定代码体即可:

fun double(x: Int): Int = x * 2

相当于:

fun double(x:Int): Int{

     return x*2

}


在 Kotlin 中函数可以在文件顶层声明,这意味着你不需要像一些语言如 Java、C# 或 Scala 那样需要创建一个类来保存一个函数。此外除了顶层函数,Kotlin 中函数也可以声明在局部作用域、作为成员函数以及扩展函数。


函数类型:

1.局部函数(即一个函数在另一个函数内部):局部函数可以访问外部函数(即闭包)的局部变量

2.成员函数是在类或对象内部定义的函数:成员函数以点表示法调用:Sample().foo()



四.创建类和实例

val rectangle = Rectangle(5.0, 2.0) // 不需要“new”关键字


五.为null判断

1.不为null

val files = File("Test").listFiles()

println(files?.size)//files不为null时获取它的size


2.不为null else

val files = File("Test").listFiles()

println(files?.size ?: "empty”)//if不为null打印files的size 否则打印empty


3.不为空执行

val value = ...

value ?.let{

     //不为空时执行

}


六.with

定义:将对象作为函数的参数,在函数内可以通过 this指代该对象。返回值为函数的最后一行或return表达式。

例如:

var paint = Paint()


paint.color = Color.BLACK

paint.strokeWidth = 1.0f


使用with:

var paint = Paint()

with(paint){

     color = Color.BLACK

    strokeWidth = 1.0f

}


var list= mutableListOf<String>()

list.add(“1")

list.add(“2")

使用with:

var list = with(mutableListOf<String>()){

     add(“1")

     add(“2")

     this

}


七.空安全

在 Kotlin 中,类型系统区分一个引用可以容纳 null (可空引用)还是不能容纳(非空引用)。 例如,String 类型的常规变量不能容纳 null:

1.var a: String = "abc"

a = null // 编译错误

调用:

val l = a.length 就不可能会出现空指针报错

2.如果要允许为空,我们可以声明一个变量为可空字符串,写作 

String?

var b: String? = "abc"

b = null // ok

print(b)

调用:

val l = b.length // 错误:变量“b”可能为空,调用时编译器会报错

如果一定要调用需要做判断,调用方式:

1.val l = if(b != null) b.length else -1

2.b?.length//b不等于null时执行b.length

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容