基础语法中主要说明以下几点:

1.1 包的声明应处于源文件顶部。

目录与包的结构无需匹配:源代码可以在文件系统的任意位置。

1.2 变量

val:只读局部变量,只能为其赋值一次;var:可重新赋值的变量。

1.3 字符串模板

通过$字符拼接变量,不需要+拼接变量了。

1.4 函数

fun开头,返回参数类型在后面,函数体可以是表达式,其返回类型可以推断出来。Unit为返回无意义的值的函数,也可省略不写。

1.5 条件表达式

即if else,可简(if(a>b) a else b,同Java的三目表达式a > b? a:b

1.6 when表达式

when 表达式,对比Java的switch功能相似,但key对应的类型不只Int

1.7 for循环

使用in

1.8 range区间

可用于检测某个数字是否在指定区间外,或者结合for循环使用区间迭代,或数列迭代

1.9 while循环

基本同Java

以上几点直接看下面代码:

// ★ 1.包的声明应处于源文件顶部。
// 目录与包的结构无需匹配:源代码可以在文件系统的任意位置。
package com.yvan.kotlin// 导包
import kotlin.text.*// 可以在顶层声明变量,val不可变、var可变。
val y = 10
var x = 200/*** Kotlin 应用程序的入口点是 main 函数。*/
/*
fun main() {// 无换行打印print("Hello world!")
}
*//*** 可变数量的String参数,* Unit为返回值可省略不写*/
fun main(args: Array<String>): Unit {// ★ 2.变量:val:只读局部变量,只能为其赋值一次;var:可重新赋值的变量。// 立即赋值val a: Int = 1// 自动推断出 `Int` 类型val b = 2// 如果没有初始值时,类型不能省略val c: Int// 明确赋值c = 3// var 可重新赋值的变量var d = 5d += 1println("a = $a, b = $b, c = $c,d = $d, x = $x, y = $y")// ★ 3.字符串模板var e = 1// 模板中的简单名称:val s1 = "e is $e"e = 2// 模板中的任意表达式:val s2 = "${s1.replace("is", "was")}, but now is $e"println("s2 = $s2")// ★ 4.函数// 参数传入函数,返回Int输出,println(sum(3, 5))// 直接在打印通过$调用函数 使用返回值输出println("sum of 19 and 23 is ${sum2(19, 23)}")// ★5.条件表达式println(maxOf2(1, 2))// ★6.for 循环val items = listOf("apple", "banana", "kiwifruit")for (item in items) {println(item)}// 或者for (index in items.indices) {println("item at $index is ${items[index]}")}// ★7.while 循环var index = 0while (index < items.size) {println("item at $index is ${items[index]}")index++}// ★8.when 表达式println(describe("Hello"))// ★9.使用区间(range)val f = 10val g = 9if (f in 1..g + 1) {println("fits in range")}// 检测某个数字是否在指定区间外。val rangeList = listOf("a", "b", "c")if (-1 !in 0..rangeList.lastIndex) {println("-1 is out of range")}if (rangeList.size !in rangeList.indices) {println("list size is out of valid list indices range, too")}// 区间迭代。for (i in 1..5) {print(i)}// 或数列迭代。for (j in 1..10 step 2) {print(j)}println()for (k in 9 downTo 0 step 3) {print(k)}}/*** 函数*/
fun sum(a: Int, b: Int): Int {return a + b
}/*** sum函数的简写,直接将计算的值作为函数返回值返回*/
fun sum2(a: Int, b: Int) = a + b/*** 条件表达式*/
fun maxOf(a: Int, b: Int): Int {if (a > b) {return a} else {return b}
}/*** maxOf 函数简写,同Java的三目表达式(a > b? a:b)*/
fun maxOf2(a: Int, b: Int) = if (a > b) a else b/*** when 表达式,对比Java的switch功能相似,但key对应的类型不只Int*/
fun describe(obj: Any): String =when (obj) {1 -> "One""Hello" -> "Greeting"is Long -> "Long"!is String -> "Not a string"else -> "Unknown"}

【Kotlin基础系列】第2章 基本语法(1)相关推荐

  1. 【Kotlin基础系列】第1章 简介

    1.1 Kotlin简介 Kotlin 是一个用于现代多平台应用的静态编程语言,由 JetBrains 开发.是一门现代但已成熟的编程语言,旨在让开发人员更幸福快乐. 它简洁.安全.可与 Java 及 ...

  2. 【Kotlin基础系列】第2章 基本语法(2)

    1.1 创建类与实例 类的属性可以在其声明或主体中列出.具有类声明中所列参数的默认构造函数会自动可用.类之间继承由冒号(:)声明.默认情况下类都是 final 的:如需让一个类可继承, 请将其标记为  ...

  3. 【Kotlin基础系列】第5章 控制流程

    1 条件与循环 1.1 If 表达式 if else同Java,区别有两个: 1.使用if else代替Java的三目运算(a > b? a:b) 2.if 表达式的分支可以是代码块,这种情况最 ...

  4. 【Kotlin基础系列】第4章 类型

    1 基本类型 在 Kotlin 中,所有东西都是对象,在这个意义上讲我们可以在任何变量上调用成员函数与属性. 一些类型可以有特殊的内部表示--例如,数字.字符以及布尔可以在运行时表示为原生类型值,但是 ...

  5. 【Kotlin基础系列】第7章 类与对象(2)--- 继承

    1 继承 在 Kotlin 中所有类都有一个共同的超类 Any,对于没有超类型声明的类它是默认超类,Any 有三个方法:equals(). hashCode() 与 toString().因此,为所有 ...

  6. 【Kotlin基础系列】第6章 包与导入

    源文件通常以包声明开头: package org.examplefun printMessage() { /*--*/ } class Message { /*--*/ }// -- 源文件所有内容( ...

  7. 【Kotlin基础系列】第7章 类与对象(1)--- 类

    1 类 Kotlin 中使用关键字 class 声明类.类声明由类名.类头(指定其类型参数.主构造函数等)以及由花括号包围的类体构成.类头与类体都是可选的: 如果一个类没有类体,可以省略花括号. cl ...

  8. 【Kotlin基础系列】第3章 习惯用法

    1.1 创建 DTO(POJO/POCO) val的属性只有getter,var的属性还有setter方法.当然也有equals(),hashCode(),toString(),copy()等方法 d ...

  9. jupyther_python基础系列 09 第九章 有益的探索

    Table of Contents 1  第九章 有益的探索 1.1  数据类型的底层实现 1.1.1  奇怪的列表 1.1.2  神秘的字典 1.1.3  紧凑的字符串 1.1.4  是否可变 1. ...

最新文章

  1. Matlab模型可视化仿真:SimMechanics Link的安装与使用
  2. Java学习笔记30
  3. 注释工具_干货:PS工具介绍“计算工具+注释工具”
  4. C#+Mapxtreme 实现一些GIS系统基本的功能
  5. 异或运算_专题 | 异或运算的一些应用
  6. boost::erase相关的测试程序
  7. Java正则表达式匹配、替换HTML内容
  8. MySQL数据库和ACID模型
  9. HHR计划---电商推荐算法
  10. 安装zabbix4.0
  11. bootstrap table 标题列重复
  12. DPDK框架原理简介(0003转)
  13. 小甲鱼python笔记_小甲鱼Python笔记(类)
  14. arcgis api for js 下载(各版本最全面的地址)
  15. 红外图像的特征提取 matab
  16. 图形文件的自由转换:DXF转PLT、DWG转其它格式......
  17. 计算机专业学不学画法几何,高数难呀,学不懂不只从哪下手,还有画法几何
  18. 小米路由器MINI刷潘多拉
  19. html旋转相册,css3 旋转相册
  20. 想使用hexo(个人博客的方案) Next(主题)搭建一个个人的照片墙

热门文章

  1. Waterdrop总结
  2. GOOGLE的高级搜索使用技巧(转)
  3. mars3d获取地图和图层相关数据
  4. 合宙Air103 LuatOS开发小试
  5. SMPP是一种通用的短信接口协议
  6. [已解决] Google Drive 下载文件超出下载限额
  7. 数据结构——快速掌握LL旋转LR旋转以及RL旋转RR旋转
  8. c语言压力变送器程序设计,浅析单片机在高精度压力变送器应用中的作用
  9. 樱桃键盘驱动在哪下_拆一个所谓最高性价比的樱桃轴机械键盘
  10. 7月19日 防火墙知识小结