Kotlin 学习(1)
本文出自链接:https://www.jianshu.com/p/ef9584a8ebf8
Kotlin的插件安装:
Settings->Plugins->Browse Repositories->搜索Kotlin
Kotlin语法:
1、定义函数:
与Java定义函数的区别在于:Kotlin在定义函数的时候要加fun关键字,函数的返回值前后不同,java的在前面,如
private int getResult(int a, int b) {
return a + b;
}
Kotlin的返回值在后面:
private getResult(a: Int, b: Int): Int {
return a + b
}
如果一个函数只有一个表达式函数体并且是返回类型自动推断的话,可以直接这样写
fun getResult(a: Int, b: Int) = a + b
// 这里的函数没有写返回值,以为Kotlin会自动判断返回值类型
如果函数返回一个无意义的值,相当于Java的void
,则可以这样写
fun getResult(a: Int, b: Int) {
print(a + b)
}
2、定义局部变量
Kotlin声明变量与Java声明变量有些不一样,Java变量类型在前,变量名在后,而Kotlin则相反,变量名在前,变量类型在后,中间加:(冒号),并且Kotlin可以自动判断变量的类型。
声明局部常量(常量使用val
关键字)
val a: Int = 1
val b = 1 // 自动判断出Int类型
val c: Int // 当没有初始化值的时候要声明类型,全局变量不能这样写
c = 1 // 赋值
声明变量(变量使用var
关键字)
var x = 5 // 自动推断出Int类型
x += 1
3、注释和java一样,当行注释和块注释 // 和/** **/
4、使用字符串模板
使用${变量},如变量为args: Array<String>
,使用的时候可以这样写
fun main(args: Array<String>) {
if (args.size == 0) return print("First argument: ${args[0]}")
}
而不用再去用加号加起来,gradle
里面也是支持的
fun main(args: Array<String>) {
if (args.size == 0) return print("First argument: " + args[0])
}
5、使用可空变量和空置检查(Using nullable values and checking for null)
当一个变量、函数可能出现空值的时候,应该指出该引用可空,如
fun getResult(a: Int, b: Int): Int? { // 设置函数返回类型可空
print(a + b)
return null
}
6、使用类型检查和自动转换(Using type checks and automatic casts)
is
运算符是检查一个表达式是否是某个类型的实例,如果为不可变局部变量或属性进行类型检查,则无需显式转换
fun getStringLength(obj: Any): Int? {
if (obj is String) {
// `obj`在这个分支中自动转换为`String`类型
return obj.length
} // `obj`仍然是`Any`类型
return null
}
7、使用for
循环
fun main(args: Array<String>) {
for (arg in args) { // in操作符可以判断是否arg是否在args里面
print(arg)
}
}
或者
for (i in args.indices) {
print(args[i])
}
8、使用when
表达式
when
表达式就相当于Java的switch
表达式,省去了case
和break
,并且支持各种类型。
fun cases(obj: Any) {
when (obj) {
1 -> print("One") //如果obj的值为1
"Hello" -> print("Greeting") // 如果obj的值为hello
is Long -> print("Long") // 如果obj的类型是Long类型
!is String -> print("Not a string") // 如果obj的类型不属于String类型
else -> print("Unknown") // 默认,相当于switch的default
}
}
9、使用ranges
使用in运算符检查数字是否在范围内,使用!in运算符检查数值是否在范围外
if (x in 1..y-1) { //1..y-1表示1到y-1的范围
print("OK")
}
for (i in 1..100) { ... } // 1到100范围
for (i in 1 until 100) { ... } // 半开范围,不包括100,相当于[1,100)
for (x in 2..10 step 2) { ... } // 每次夸2,内容为2,4,6,8,10
for (x in 10 downTo 1) { ... } // 返序
if (x in 1..10) { ... }
10、使用集合
循环输出一个集合里面的值或者判断集合里面是否包含某个变量
for (name in names) { // 将会调用nemes.contains(name)方法
println(name)
}
使用lambda表达式过滤和映射集合
// it表示name
names
.filter { it.startsWith("A") }
.sortedBy { it }
.map { it.toUpperCase() }
.forEach { print(it) }
Kotlin 学习(1)的更多相关文章
- kotlin 学习感受
目录 kotlin 学习感受 特点 优点 屎一样的缺点 总结 kotlin 学习感受 直白的说..很不好,像屎一样,本来对此抱有很大的期望和好感度,但经过一整天的学习,完全失望了,这门语言中间有各种的 ...
- Kotlin 学习笔记(一)
(Kotlin 学习笔记的文档结构基本按照 Java 核心技术一书的目录排列) 基本程序设计结构 数据类型 数字 类型 宽度 Double 64 Float 32 Long 64 Int 32 Sho ...
- Kotlin学习笔记(9)- 数据类
系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步! Kotlin学习笔记(1)- 环境配置 Kotlin学习笔记(2)- 空安 ...
- Kotlin学习快速入门(7)——扩展的妙用
原文地址: Kotlin学习快速入门(7)--扩展的妙用 - Stars-One的杂货小窝 之前也模模糊糊地在用这个功能,也是十分方便,可以不用继承,快速给某个类增加新的方法,本篇便是来讲解下Kotl ...
- Kotlin学习第一课:从对比Java开始
1. 介绍 今年初,甲骨文再次对谷歌所谓的安卓侵权使用Java提起诉讼,要求后者赔偿高达90亿美元.随后便传出谷歌因此计划将主力语言切换到苹果主导的Swift,不过这事后来没了跟进. 但谷歌在这两天的 ...
- kotlin学习-初次见面
第一次相识 最近看了很多介绍kotlin的文章.怀着好奇心改造了之前用java写的一个工具jar包.功能不是很复杂,类也只有几个,却足足写3个小时.期间一边看教程,一边写,有一种找回原来第一次写代码的 ...
- kotlin学习笔记-异常好玩的list集合总结
不积跬步无以至千里,不积小流无以成江海 先看看Kotlin中for循环的遍历 fun testList(){ var StringVal = "12_12_13_15_a_b_c_d_yu_ ...
- kotlin学习(二)——类
Kotlin中的类遵循一个简单的结构.尽管与Java有一点细微的差别.你可以使用try.kotlinlang.org在不需要一个真正的项目和不需要部署到机器的前提下来测试一些简单的代码范例. 1. 怎 ...
- kotlin学习三:初步认识kotlin(第二篇)
上一章熟悉了kotlin基本的变量和函数声明,并明白了如何调用函数.本章再来看一些其他有用的东西 包括: 1. kotlin代码组织结构 2. when语法 3. 循环迭代语法 4. try表达式 1 ...
- kotlin学习一:kotlin简介
kotlin是JetBrains公司出品的基于JVM的语言,和其他JVM语言一样,目的在于提供比JAVA更加简介的语法, 同时提供函数式编程,不需要再像JAVA一样所有的一切都要依托于类. kotli ...
随机推荐
- iostat主要性能指标
iostat参数很多,日常运维中主要关注一下字段(根据这些字段的输出内容一般就可以确定服务器是否存在IO性能瓶颈) 1.%iowait:CPU等待输入输出完成时间的百分比.该值较高,表示磁盘存在I/O ...
- Go语言核心36讲(Go语言进阶技术十四)--学习笔记
20 | 错误处理 (下) 在上一篇文章中,我们主要讨论的是从使用者的角度看"怎样处理好错误值".那么,接下来我们需要关注的,就是站在建造者的角度,去关心"怎样才能给予使 ...
- 一、spring 环境搭建
一.springtoolSuite4下载 1.概述 Spring Tools 4 是适用于您最喜欢的编码环境的下一代 Spring 工具.它主要从头开始重建,为开发基于 Spring 的企业应用程序提 ...
- 优客源创会 西安站 西邮Linux兴趣小组
2016年5月19日晚7:00,优客源创会西安站在西安邮电大学长安校区东区教学楼FF305如期举行,西安邮电大学计算机学院教授.西邮Linux兴趣小组指导老师陈莉君.王小银老师和来自开源中国的周凯先生 ...
- Linux wget 命令 使用总结
简介 wget命令用来从指定的URL下载文件.wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕.如果是服务器 ...
- Linux下安装、配置、启动与访问RabbitMQ
一.下载 首先第一步要下载三个rpm安装包,为了方便安装与学习,给出下载途径 网盘网址:https://pan.baidu.com/s/18Z64Lb9KQpRh10RzqZBdoQ 提取码:094v ...
- Linux ns 6. Network Namespace 详解
文章目录 1. 简介 1.1 Docker Network 桥接模式配置 2. 代码解析 2.1 copy_net_ns() 2.2 pernet_list 2.2.1 loopback_net_op ...
- c++学习笔记1(引用)
引用 格式:类型名&引用名=某变量名: 概念 实例:编写交换整型变量的函数对比 不用引用 实机操作 使用引用 实机操作 实例2:用作函数的返回值 可对函数返回值赋值 常引用 使用格式,在引用前 ...
- 使用postman对elasticsearch接口调用
post 新增 get 查询 put更新 post http://127.0.0.1:9200/index4/type1 {"node":0} { "_index&quo ...
- idea文件多行显示
将红色部分取消勾选