首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

kotlin入门

认识

kotlin是一种运行在java虚拟机上的静态类型编程语言,可以被编译成java字节码,也可以变异成javaScript,方便在没有JVM的设备上运行。

基本数据类型

1.数据类型

首字母大写

2.字面常量

下面是所有类型的字面常量:

Kotlin 同时也支持传统符号表示的浮点数值:

Doubles 默认写法: 123.5, 123.5e10

Floats 使用 f 或者 F 后缀:123.5f

你可以使用下划线使数字常量更易读:

val oneMillion = 1_000_000val creditCardNumber = 1234_5678_9012_3456Lval socialSecurityNumber = 999_99_9999Lval hexBytes = 0xFF_EC_DE_5Eval bytes = 0b11010010_01101001_10010100_10010010

main函数写法

funmain(args:Array){// 包级可见的函数,接受一个字符串数组作为参数println("Hello World!")// 分号可以省略

}

基础语法

1.包声明,kotlin的包生命不像java那样包声明必须和文件目录匹配。kotlin的源文件可以放在任意的文件目录下。不用和包声明相匹配。

代码实例:

fun test(){}

class Runoob{}

2.默认导入,kotlin的源文件中有默认导入的包,这些包不用手动声明导入。

kotlin.*

kotlin.annotation.*

kotlin.collections.*

kotlin.comparisons.*

kotlin.io.*

kotlin.ranges.*

kotlin.sequences.*

kotlin.text.*

这些包都会默认的导入到kotlin的源文件中

3.函数定义,函数的定义试用fun关键字。参数格式是(参数名:类型)。kotlin的函数书写时每一行之后不用加分号

代码实例:

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

return a+b

}

对于简单的函数,还可以试用简单的声明方式

fun sum(a:int,b:int)=a+b//函数的返回值类型自动判断

//如果试用public关键字修饰方法则需要声明返回值得类型

public fun sum(a : Int,b : Int) : Int=a+b

public fun sum(a : Int;b : Int) : Int{

return a+b

}

函数的参数和java一样还可以定义不定长的参数声明。试用关键字vararg。

如:

fun dayin(vararg v:Int

for(vt in v){

print(vt)

}

}

4.定义常亮与变量,可变变量的定义使用var关键字

var :=

不变变量(常量)的定义使用关键字val,只能赋值一次的变量。

val : =

代码实例:

//可变变量

var a: Int = 1

var a1=2//系统自动判断变量类型为Int

//不可变常量

val b:Int=3

val b1=4//系统自动判断数据类型为Int

val b2:Int//如果不在声明时初始化则必须提供变量的类型

5.字符串模板

$表示一个变量名或者变量值

$varName表示变量值

$表示变量的方法的返回值

代码实例:

var a : Int = 1

val s0 = "a is $a"

a=2

val s1="$,but now is $a"

6.NULL检查机制

Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,有两种处理方式,字段后加!!像Java一样抛出空异常,另一种字段后加?可不做处理返回值为 null或配合?:做空判断处理

//类型后面加?表示可为空varage:String?="23"//抛出空指针异常val ages=age!!.toInt()//不做处理返回 nullval ages1=age?.toInt()//age为空返回-1val ages2=age?.toInt()?:-1

当一个引用可能为 null 值时, 对应的类型声明必须明确地标记为可为 null。

当 str 中的字符串内容不是一个整数时, 返回 null:

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

以下实例演示如何使用一个返回值可为 null 的函数:

fun main(args:Array){if(args.size

7.类型检测及自动类型转换

我们可以使用 is 运算符检测一个表达式是否某类型的一个实例(类似于Java中的instanceof关键字)。

fun getStringLength(obj:Any):Int?{if(objisString){// 做过类型判断以后,obj会被系统自动转换为String类型returnobj.length}//在这里还有一种方法,与Java中instanceof不同,使用!is// if (obj !is String){// // XXX// }// 这里的obj仍然是Any类型的引用returnnull}

或者

fun getStringLength(obj:Any):Int?{if(obj!isString)returnnull// 在这个分支中, `obj` 的类型会被自动转换为 `String`returnobj.length}

甚至还可以

fun getStringLength(obj:Any):Int?{// 在 `&&` 运算符的右侧, `obj` 的类型会被自动转换为 `String`if(objisString&&obj.length>)returnobj.lengthreturnnull}

8.区间

区间表达式由具有操作符形式..的 rangeTo 函数辅以 in 和 !in 形成。

区间是为任何可比较类型定义的,但对于整型原生类型,它有一个优化的实现。以下是使用区间的一些示例:

for(iin1..4)print(i)// 输出“1234”for(iin4..1)print(i)// 什么都不输出if(iin1..10){// 等同于 1

9.实例测试

fun main(args:Array){print("循环输出:")for(iin1..4)print(i)// 输出“1234”println("\n----------------")print("设置步长:")for(iin1..4step2)print(i)// 输出“13”println("\n----------------")print("使用 downTo:")for(iin4downTo1step2)print(i)// 输出“42”println("\n----------------")print("使用 until:")// 使用 until 函数排除结束元素for(iin1until4){// i in [1, 4) 排除了 4print(i)}println("\n----------------")}

输出结果:

循环输出:1234----------------设置步长:13----------------使用downTo:42----------------使用until:123----------------

后面的实在懒得手打了,直接复制粘贴了

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180710G0Q5ES00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券