转载

Kotlin基础语法

1.定义包名(简单和Java 基本一样)

2.定义函数

fun 开头表示函数,函数的返回值和形参(java的名称)类型 都是名字后面 :TYPE (类型都是名称后面加:) 语句结尾分号可以忽略不写

funsum(a: Int , b: Int): Int{
	return a + b
}

funmain(args: Array<String>){
  print("sum of 3 and 5 is ")
  println(sum(3, 5))
}

funsum(a: Int, b: Int)= a + b     // 该函数只有一个表达式函数体以及一个自推导型的返回值:

当函数的不需要返回值时(返回无意义的值时)可以忽略不写 (:Unit)

更多详细讲解

3.定义局部变量

声明常量(val)

funmain(args: Array<String>){
  val a: Int = 1  // 立即初始化
  val b = 2   // 推导出Int型
  val c: Int  // 当没有初始化值时必须声明类型
  c = 3       // 赋值
  println("a = $a, b = $b, c = $c")   //使用了字符串模板
}

声明变量

funmain(args: Array<String>){
  var x = 5 // 推导出Int类型
  x += 1
  println("x = $x")
}

4.注释 (java 一样)

5.字符串模板

可以使用变量名,表达式,

fun main(args: Array<String>) {
  var a = 1
  // 使用变量名作为模板:
  val s1 = "a is $a"

  a = 2
  // 使用表达式作为模板:
  val s2 = "${s1.replace("is", "was")}, but now is $a"
  println(s2)
}

6.条件表达式

if else when(取代了switch)

if else 这就不多说了, 简单

when 比 switch功能多, 可以使用 常量 和使用表达式 ,in, !in (检查值是否值在一个集合), is !is(判断值是否是某个类型) ,可以用来代替 if-else if

when (x) {
  1 -> print("x == 1")
  2 -> print("x == 2")
  else -> { //Note the block
		print("x is neither 1 nor 2")
	}
}

for 循环

for (item in collection)
	print(item)

for (item: Int in ints){
	//...
}
//类似java中的for(int i:array) 但是kotlin更强大
//java中的切点无法获取 index
//Kotlin可以获取 "indices"
for (i in array.indices)
	print(array[i])

while,do while break,continue 和 java 一样

7.使用可空变量以及空值检查

下面的函数是当 str 中不包含整数时返回空:

funparseInt(str : String): Int?{
	//...
}

使用一个返回可空值的函数:

funparseInt(str: String): Int?{
  return str.toIntOrNull()
}

funprintProduct(arg1: String, arg2: String){
  val x = parseInt(arg1)
  val y = parseInt(arg2)

  // 直接使用 x*y 会产生错误因为它们中有可能会有空值
  if (x != null && y != null) {
    // x 和 y 将会在空值检测后自动转换为非空值
    println(x * y)
  }
  else {
    println("either '$arg1' or '$arg2' is not a number")
  }    
}

funmain(args: Array<String>){
  printProduct("6", "7")
  printProduct("a", "7")
  printProduct("a", "b")
}

或者这样

funparseInt(str: String): Int?{
  return str.toIntOrNull()
}

funprintProduct(arg1: String, arg2: String){
  val x = parseInt(arg1)
  val y = parseInt(arg2)

  // ...
  if (x == null) {
    println("Wrong number format in arg1: '${arg1}'")
    return
  }
  if (y == null) {
    println("Wrong number format in arg2: '${arg2}'")
    return
  }

  // x 和 y 将会在空值检测后自动转换为非空值
  println(x * y)
}

默认情况下都是空值检查 即 没有 ? 当为空时不执行该代码片段

8.for 循环

funmain(args: Array<String>){
  val items = listOf("apple", "banana", "kiwi")
  for (item in items) {
    println(item)
  }
}
funmain(args: Array<String>){
  val items = listOf("apple", "banana", "kiwi")
  for (index in items.indices) {   //indices 是角标
    println("item at $index is ${items[index]}")
  }
}

9.ranges

检查 in 操作符检查数值是否在某个范围内:

funmain(args: Array<String>){
  val x = 10
  val y = 9
  if (x in 1..y+1) {
      println("fits in range")
  }
}

检查数值是否在范围外

funmain(args: Array<String>){
  val list = listOf("a", "b", "c")

  if (-1 !in 0..list.lastIndex) {
    println("-1 is out of range")
  }
  if (list.size !in list.indices) {
    println("list size is out of valid list indices range too")
  }
}

在范围内迭代

funmain(args: Array<String>){
  for (x in 1..5) {
    print(x)
  }
}

或者使用步进:

funmain(args: Array<String>){
  for (x in 1..10 step 2) {
    print(x)
  }
  for (x in 9 downTo 0 step 3) {
    print(x)
  }
}

-------------本文结束 感谢您的阅读-------------

原文  http://www.zdong.top/blog/2018/01/03/Kotlin基础语法/
正文到此结束
Loading...