• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > Kotlin 基础语法详细介绍

Kotlin 基础语法详细介绍

作者:一片枫叶 字体:[增加 减小] 来源:互联网 时间:2017-05-28

一片枫叶 通过本文主要向大家介绍了kotlin语法,kotlin,kotlin教程,kotlin android,kotlin语言等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Kotlin 基础语法详细介绍

基础语法

定义包名

包名的定义应当在源文件的头部

package my.demo

import java.util.*

// ...

</div>

文件路径和包名并不要求匹配,源文件可以被放置在文件系统任意位置

参考:包

定义函数

函数有两个Int类型参数和Int类型返回值:

fun sum(a: Int, b: Int): Int {
 return a + b
}
</div>

函数体中只有一个表达式并且作为函数的返回值:

fun sum(a: Int, b: Int) = a + b
</div>

函数没有返回值:

fun printSum(a: Int, b: Int): Unit {
 print(a + b)
}
</div>

Unit类型的返回值类型可以省略:

fun printSum(a: Int, b: Int) {
 print(a + b)
}
</div>

参见:函数

定义局部变量

定义只读类型的局部变量:

val a: Int = 1
val b = 1  // `Int` 类型是被编译器推理出
val c: Int // 当变量的初始值没有被提供时,需要定义变量的类型
c = 1    // 赋值
</div>

可变局部变量

var x = 5 // `Int` 类型是被编译器推理出的
x += 1
</div>

可参见:属性与变量

注释

就像Java与JavaScripe,Kotlin也支持行注释与代码块注释。

// 这是一段行注释

/* 这是一段代码块
  注释 */

</div>

不像Java,代码块注释在Kotlin中是可以被叠加的。

参见:Kotlin代码文档

使用字符串模板

fun main(args: Array<String>) {
 if (args.size == 0) return

 print("First argument: ${args[0]}")
}

</div>

参见:字符串模板

使用条件表达式

fun max(a: Int, b: Int): Int {
 if (a > b)
  return a
 else
  return b
}
</div>

使用 if 作为一个表达式返回值:

fun max(a: Int, b: Int) = if (a > b) a else b
</div>

参见:if 表达式

使用可空变量并检测是否为空

一个引用必须明确的被设置为可为空当其可能为空值时。

返回值为null 如果str 没有包含数值:

fun parseInt(str: String): Int? {
 // ...
}
</div>

函数的返回值可能为空:

fun main(args: Array<String>) {
 if (args.size < 2) {
  print("Two integers expected")
  return
 }

 val x = parseInt(args[0])
 val y = parseInt(args[1])

 // Using `x * y` yields error because they may hold nulls.
 if (x != null && y != null) {
  // x and y are automatically cast to non-nullable after null check
  print(x * y)
 }
}

</div>

或者:

// ...
 if (x == null) {
  print("Wrong number format in '${args[0]}'")
  return
 }
 if (y == null) {
  print("Wrong number format in '${args[1]}'")
  return
 }

 // x and y are automatically cast to non-nullable after null check
 print(x * y)

</div>

参见:空安全

使用类型检测和类型自动转换

is 操作符用于检测一个表达式是否是某一种类型,假如可变参数或者属性被检测为某一种类型,那么就不在需要明确的类型转换:

fun getStringLength(obj: Any): Int? {
 if (obj is String) {
  // `obj` is automatically cast to `String` in this branch
  return obj.length
 }

 // `obj` is still of type `Any` outside of the type-checked branch
 return null
}

</div>

或者:

fun getStringLength(obj: Any): Int? {
 if (obj !is String)
  return null

 // `obj` is automatically cast to `String` in this branch
 return obj.length
}

</div>

或者:

fun getStringLength(obj: Any): Int? {
 // `obj` is automatically cast to `String` on the right-hand side of `&&`
 if (obj is String && obj.length > 0)
  return obj.length

 return null
}

</div>

参见:类和类型转换

使用for循环

fun main(args: Array<String>) {
 for (arg in args)
  print(arg)
}
</div>

或者:

for (i in args.indices)
 print(args[i])
</div>

参见:for循环

使用while循环

fun main(args: Array<String>) {
 var i = 0
 while (i < args.size)
  print(args[i++])
}
</div>

参见:while循环

使用when表达式

fun cases(obj: Any) {
 when (obj) {
  1     -> print("One")
  "Hello"  -> print("Greeting")
  is Long  -> print("Long")
  !is String -> print("Not a string")
  else    -> print("Unknown")
 }
}
</div>

参见:when表达式

使用范围表达式

检测一个数值是否在一个范围内,若在则使用in操作符

if (x in 1..y-1)
 print("OK")
</div>

检测一个数值是否不在一个范围内,若不在:

if (x !in 0..array.lastIndex)
 print("Out")
</div>

迭代一个数据范围项:

for (x in 1..5)
 print(x)
</div>

参见:范围

使用集合

迭代一个集合:

for (name in names)
 println(name)
</div>

检测一个集合是否包含某个数据项,使用in操作符

if (text in names) // names.contains(text) is called
 print("Yes")
</div>

使用lambda表达式过滤或者转换一个集合:

names
  .filter { it.startsWith("A") }
  .sortedBy { it }
  .map { it.toUpperCase() }
  .forEach { print(it) }
</div>

参见:高阶函数和Lambda表达式

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Kotlin 基础语法详细介绍
  • Kotlin 与 Java基本语法对比
  • Kotlin 基础语法详细介绍
  • Kotlin 与 Java基本语法对比

相关文章

  • 2017-05-28根据list中对象的属性去重和排序小结(必看篇)
  • 2017-05-28SpringBoot整合ElasticSearch实践
  • 2017-05-28基于SpringBoot与Mybatis实现SpringMVC Web项目
  • 2017-05-28eclipse java工程改造为java web工程详解
  • 2017-05-28详解springmvc之json数据交互controller方法返回值为简单类型
  • 2017-05-28Java异常继承结构解析_动力节点Java学院整理
  • 2017-05-28彻底理解Java中的ThreadLocal
  • 2017-05-28Java递归读取文件例子_动力节点Java学院整理
  • 2017-05-28详解eclipse下创建第一个spring boot项目
  • 2017-05-28初识Spring Boot框架和快速入门

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Spring Boot多数据源及其事务管理配置方法
    • Spring 4 支持的 Java 8 特性
    • Spring Boot如何使用Spring Security进行安全控制
    • Java 存储模型和共享对象详解
    • SWT(JFace)体验之StyledText类
    • Java可变参数列表详解
    • 浅谈java中为什么实体类需要实现序列化
    • 详解Spring Data操作Redis数据库
    • 详解在Spring Boot中使用JPA
    • Collections工具类_动力节点Java学院整理

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有