Kotlin-Android中取代java的一种开发语言

1.为什么学习Kotlin
a.Google官方指定(官方指定语言 以后java肯定会被替换,就像eclipse和Androidstudio 开发IDE一样)
b.简洁、现代、安全
c.无缝兼容java
2.开发IDE下载地址:https://www.jetbrains.com/idea/download/
3.Kotlin文件名结尾是.kt结尾

4.常亮:预期范围内恒定不变的量
定义: val 常量名 (任意名字,长度不限),给常量一个值,叫“赋值”,形式 val 常量名 = 值

val π = 3.1415926
val 女朋友个数 = 1 

5.Kotlin 末尾不需要“;”结尾,命名可以是汉子

6.变量:可主动变更或者可预期内自动有规律或者无规律的量
定义:var 常量名 (任意名字,长度不限),给常量一个值,叫“赋值”,形式 var 常亮名 = 值

var 今天的温度 = 3
var 身高 = 168

语言比较:swift语言中的常量修改关键字是 let,变量是var
java语言的常量修饰关键字是final,变量是 没有final关键的的属性,
7.单行注释,//跟java语言一样
8.多行注释/**
这里是注释内容
**/
9.值得类型:
a.整型Int:例如 1,3,66 这些都是整型
b.浮点型:Double(双精度)/Float(单精度),默认是Double(双精度)
c.布尔型: Boolean,表示逻辑上的真或者假,值为true和false
由于Kotlin有类型推断,类型可以省略不写

//Kotlin
var run = 5 或者 var jump : Int = 6

//java,必须有数据类型
int run = 5;

//swift3.0
var run = 5 或者 var run : Int = 5

10.变量使用在字符串中使用 :${var}

var run = 5 
run = 6 
print ("每天跑${run}公里")

11.类型安全: 变量一旦定义,其类型不可修改

var number = 3 
//number = "五个" ,这是不允许的

12.元组(Tuple),给多个变量同事赋值,分二元(Pair)和三元(Triple)

fun main(args: Array) {
    val (name,age) = Pair("小明",4);
    var (p,c,z) = Triple("河北省","邯郸","临漳");

    //上面可以写一个变量名,最多同时可以给三个变量赋值
    val person = Pair("小明",4)
    val address = Triple("河北省","邯郸","临漳")

    print("名字:${name},年龄${age},地址:${p}${c}${z}")
    print("名字:${person.first},年龄${person.second},地址:${address.first}${address.second}${address.third}")
}

13.可空类型:代表变量可以没有值得情况
形式: var 变量 : 类型? ,无值则是null

var sex : Boolean? = null
//java中默认boolean是false不可能为null

14.操作符+、—、、/、%、=、+=、-=、=、/=、>、<、<=、>=:跟其他语言一样。规范写法是两元运算符前后加空格,数字太大的话可以使用下划线分割方便查看例如 var gdp = 10_000 ,跟var gdp = 10000 结果一样

var a = 10
var b = 1 
var c = a + b
//在swift3.0中  是两元运算符前后必须加空格要不然报错

15 字符和字符串:
a.字符是单引号包括的值,例如’a’,只能有一个字符
b.字符串是双引号包括的值,例如”abcd”
字符串判断不为空 调用isNotEmpty()方法,长度是count()方法。
判断一个字符是不是数字可以使用方法isDigit()
判断一个字符是不是汉子可以使用方法isLetter()

把字符串转化为字符数组使用方法 toCharArray()

16.集合类型Collection:
a.Array:有序可重复,不可变的,每次操作都是生成新数组
b.Set:无须不可重复
c.Map:无须可重复,键是唯一的
d.mutableListOf:可变,可操作的数组
17.函数: fun 函数名(参数名: 参数类型 = 默认值):返回类型{

}

fun add(first : Int , second : Int): Int {
return first + second
}

可变参数:java中是在参数名前面加 … 例如
public int sum(int ...numbers){
int total = 0;
for(i in number){
total +=i;
}
return total;
}

Ios中可别参数
func sum(input: Int...) -> Int {
return input.reduce(0, combine: +)
}

Kotlin中的可变参数
fun sum (vararg input : Int): Int{
var total = 0
for( i in input){
total +=i
}
return
}

18.面向对象编程:
类定义:class 类名 constructor(属性列表){
更多的属性和方法描述
}

如果一个类想要被继承,必须在class关键字前面添加open关键字 。

创建对象不需要new关键字 直接使用 类名(参数) 即可。

属性如果想被覆盖,父类中的属性必须添加open关键字,子类属性需要添加override.

19 嵌套类:一个类写在了另外一个类中,不可访问主类的属性,创建对象时的格式是 : 主类名.嵌套类名()
内部类 ::一个类写在了另外一个类中,并用 inner关键字修饰,可以访问主类的属性,创建对象的格式是:主类名().内部类名()。

20 数据类:class前面添加关键字 data,数据类可以实现属性的序列化、copy、解构
21 枚举类: class 前面添加关键字 enum,
22 对象声明和表达式:有时候只是要对某个类型进行轻微改造,供临时使用,避免继承。

val 对象名 = object : 父类名(属性){

}

23 异常捕获:

//直接展示错误
try{
"3abc".toInt()
}catch( e : Exception){
println(e)
}

//忽略错误
val a : Int? = try{
"3abc".toInt()
}catch(e : Exception){
null
}

24 类型检查(is)和转换:

val a = 5
val b = 3

val c = if(a > b) "大于" else 1-b

if(c is String) {
println(c.length)
}
if(c !is String) println("正数:$c")

//手动转换: 强制转换as,强制转换失败会崩溃 ,安全转换 as?,安全转换失败返回null

你可能感兴趣的:(Kotlin,Kotlin)