Kotlin基础语法(一)
2017-05-23 本文已影响97人
慕涵盛华
1.背景
2.环境搭建
3.Kotlin简介
4.基本数据类型
1.背景
今年的Google I/O 上,Google 正式宣布官方支持 Kotlin,将Kotlin语言作为官方的编程语言,一时之间Kotlin上了热搜,有很多小伙伴开始焦虑是不是要马上学习Kotlin,唯恐落后被淘汰,而我想说的是Kotlin只是一门编程语言,平台还是那个平台,其次,一门语言代替另一门语言是需要一个过程的。所以大家没有必要过于着急。
一时之间网上涌现大量有关Kotlin的文章,各种介绍,各种教程链接,我大概看了一下,感觉都不太系统即使官方的教程,不过花时间仔细研究还是没有问题的。为了更系统化一些,所有决定写一系列的有关Kotlin的文章,记录学习Kotlin的过程。
2.环境搭建
从Android Studio3.0以后才会默认支持Kotlin,所以3.0以下的版本需要安装插件才能使用。
2.1安装插件
在Android Studio中执行 Settings -> plugins -> BrowseRepositories中搜索“Kotlin
2.2 项目配置
使用Kotlin创建Kotlin File/Class或者是Kotlin Activity;Kotlin插件安装成功后,执行new操作,会发现弹窗多出了两个Kotlin相关选项:
点击对应的即可,想使用Kotlin必须走module 的 gradle文件中配置
手动配置或者是在创建Kotlin语法的类文件之后,根据提示自动配置
3.Kotlin简介
1)Kotlin是什么?
- Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。
- Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。
- JetBrains,作为目前广受欢迎的Java IDE IntelliJ 的提供商,在 Apache 许可下已经开源其Kotlin 编程语言。
2)Kotlin的特性
- Kotlin是一种兼容Java的语言;
- Kotlin比Java更安全,能够静态检测常见的陷阱。如:引用空指针;
- Kotlin比Java更简洁,通过支持variable type inference,higher-order functions (closures),extension functions,mixins and first-class delegation等实现;
- Kotlin可与Java语言无缝通信。这意味着我们可以在Kotlin代码中使用任何已有的Java库;同样的Kotlin代码还可以为Java代码所用;
- Kotlin在代码中很少需要在代码中指定类型,因为编译器可以在绝大多数情况下推断出变量或是函数返回值的类型。这样就能获得两个好处:简洁与安全;
4.基本类型
变量的定义格式:
var 变量名 : 数据类型
基本类型
类型 | 所占字节 |
---|---|
Double | 8 |
Float | 4 |
Long | 8 |
Int | 4 |
Short | 2 |
Byte | 1 |
注意:Kotlin中不支持数据类型的隐士转换,必须显示转换
var a : Byte = 1;
var b : Int = a;//在java中这样写是可以自动转换的,但是在Kotlin中是错误的
//正确的写法
var a : Byte = 1;
var b : Int = a.toInt();//必须显式转换
字符类型:Char
Char :不能直接当作数字,字符字面值用单引号括起来: '1'。 特殊字符可以用反斜杠转义
var c : Char = '1';
if(c == 1){ //这样写是错误的,也必须显式转换,如果可以转换的话。
}
布尔类型:Boolean
布尔用 Boolean 类型表示,它有两个值:true 和 false。跟java中的用法一致,主要用于逻辑运算和逻辑判断
字符串:String
字符串用 String 类型表示。字符串是不可变的,用法跟Java中类似,也是可以通过下标索引来获取对应的字符的,不同的是在Java 中字符串的拼接可以用“+”,在Kotlin中使用<b>字符串模板</b>
模板表达式以美元符($)开始,表示取后面变量的值。
val s = "abc"
val str = "$s.length is ${s.length}" // 结果为 "abc.length is 3"
数组:Array
数组在 Kotlin 中使用 Array 类来表示,默认提供两个方法get 和set以及一个属性size
var ary : Array = arrayOf(1, 2, 3) // [1,2,3],只是定义的方式与Java不一样,其他的用法都是一样的。