Kotlin第一次亲密接触

首先推荐一个使用与Android开发者学习kotlin的教程点击进入github阅读

  • 基本数据
    var : 是一个可变变量,这是一个可以通过重新分配来更改为另一个值的变量。这种声明变量的方式和java中声明变量的方式一样。
    val: 是一个只读变量,这种声明变量的方式相当于java中的final变量。一个val创建的时候必须初始化,因为以后不能被改变。
  • 数字类型中不会自动转型:
    val i:Int=7 //定义一个变量
    val d: Double = i.toDouble()
  • 字符(Char)不能直接作为一个数字来处理。在需要时我们需要把他们转换为 一个数字:
    val c:Char=‘c’
    val i: Int = c.toInt() //将c转化成int类型
  • 位运算也有一点不同。在Android中,我们经常在 flags 中使用“或”,所以我 使用"and"和"or来举例:
 //	Java 
	 int bitwiseOr	=	FLAG1	|	FLAG2; 
	 int	bitwiseAnd	=	FLAG1	&	FLAG2;
 //Kotlin 
	 val	bitwiseOr	=	FLAG1	or	FLAG2 val	
	 bitwiseAnd	=	FLAG1	and	FLAG2
  • 定义一个类
    如何定义一个类,使用关键字:class
    如果需要只需要在类名后面加上参数,如果这个类什么都没有,可以省区大括号:
//如何类没有内容,那么就不用大括号,如果这个类需要被继承,那么需要声明open
//(var name: String, var age: Int, var sex: String)  为这个类的构造方法
open class Person(var name: String, var age: Int, var sex: String)   

例如

  • 如何继承一个类,所有类都默认继承Any(相当于java中的object 类),我们可以继承其他类,所有类都默认不可以继承,除非它声明open或者abstract。
  • 函数:如果一个函数你没有定义它的返回值,那么它默认返回Unit,与java的void类似,但是Unit是一个对象,函数的返回值也可以指定其他类型。
    函数的返回结果也可以用一个表达式表示出来。例如,下面两个函数的结果是一样的

fun add(x: Int, y: Int) : Int { return x + y }
fun add(x: Int,y: Int) : Int = x + y

匿名函数:
//需要用一个变量来接收这个函数
var sum = fun(x: Int, y: Int) = x + y
println(sum(1, 2))

kotlin的方法的参数和java不一样,kotlin先写参数名,再定义参数类型。例如上面的例子,定义返回类型也是方法后面后面加 :类型

  • 类的属性:在java中,属性可以通过getter和setter

继承:
Anko是一个强大的类库,主要目的是用来代替以前XML的方式来使用代码生成UI布局,类似于Java的黄油刀
比较运算符:

==:比较的是值   相当于java的equals
===:比较的是引用和值,判断两个对象是否引用的同一个

拼接字符串

val a: Int = 5
val b: Int = 6
println("打印信息$a+$b=${a + b}")   //输出结果:5+6=11

“”" :三个引号表示将字符串原封不动的内容打印出来

val a: String = """
                                _(\_/)
                             ,((((^`\
                            ((((  (6 \
                          ,((((( ,    \
      ,,,_              ,(((((  /"._  ,`,
     ((((\\ ,...       ,((((   /    `-.-'
     )))  ;'    `"'"'""((((   (
    (((  /            (((      \
     )) |                      |
    ((  |        .       '     |
    ))  \     _ '      `t   ,.')
    (   |   y;- -,-""'"-.\   \/
    )   / ./  ) /         `\  \
       |./   ( (           / /'
       ||     \\          //'|
       ||      \\       _//'||
       ||       ))     |_/  ||
       \_\     |_/          ||
       `'"                  \_\
                            `'"
    """
        println("打印出结果:$a")

空类型

  // ?问号表示可能返回空,如果返回空则返回null,不会抛异常
	fun getNull(): String? {      
	    return null
	}
    fun test() {
        // ?.表示可能为空,如果为空,则返回null,如果不为空则为length
        println(getNull()?.length)
        // !!. 代表我表示getNull的值肯定不为空,放心用吧,但是如果为空就会抛异常
        println(getNull()!!.length)
    }

智能转换

val person = Person(name, age, sex)
//is相当于java的instanceof
if (person is WoMan) {
      println(person.testThressMark())
}

//as表示将Person强制转化为WoMan,如果转化失败则抛异常
val person: WoMan = Person(name, age, sex) as WoMan

       
// 加?表示如果如果Person转化为WoMan失败,则返回空,不抛异常
val person: WoMan ?= Person(name, age, sex) as? WoMan
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值