Unit2 Kotlin Learning

Unit2 Kotlin Learning

2.1 变量与函数

2.1.1 变量

1、Kotilin定义一个变量,只允许在变量前声明两个关键字:val 和var

val(value的缩写):用来声明一个不可变的变量
var(variable的简写):用来声明一个可变的变量

fun main(){
    val a = 10
    println("a = " + a)
}

P.S. Kotlin每一行代码结尾不用加分号

2、Kotlin具有类型推导机制,但有时无法正常工作,故我们有时我们需要声明变量类型。

val a: Int = 10

Java中的基本数据类型对应Kotlin中的对象数据类型,即Java中int是关键字,而Kotlin中Int变成了一个类。
养成使用val声明变量的习惯。

2.1.2 函数

函数和方法没什么区别,Java 中方法叫法普遍一些,Kotlin 中函数叫法更普遍一些。

fun main(){
    val a = 10
    val b = 20
    val c = largenumber(a, b)
    println("c = " + c)
}

fun largenumber(num1: Int,num2: Int): Int{
    return max(num1, num2)
}

// fun largenumberc(num1: Int,num2: Int):Int = max(num1, num2)
// fun largenumberc(num1: Int,num2: Int) = max(num1, num2)

fun(function的缩写)是定义函数的关键字。
参数声明格式是“参数名:参数类型”。
参数括号后面的部分可选,可用来声明返回的数据类型。

P.S.上述代码注释中的两句定义函数是Kotlin的一种语法糖,主要用于只有一行代码的时候的简化。

2.2 程序的逻辑控制

2.2.1 条件语句

1、if 条件语句

fun biggerValue(num1: Int, num2: Int) = if (num1 > num2) num1 else num2

2、when 条件语句

fun getScore(name: String) = when {
    name.startsWith("Tom") -> 86
    name == "Jim" -> 77
    name == "Jack" -> 95
    name == "Lily" -> 100
    else -> 0
}

fun checkNumber(num: Number) {
    when (num) {
        is Int -> println("number is Int")
        is Double -> println("number is Double")
        else -> println("number not support")
    }
}

其中上述代码中的 Number 是 Kotlin 内置的一个抽象类,像 Int、Long、Float、Double 等与数字相关的类都是它的子类。

2.2.2 循环语句

1、while循环类比Java

2、for-in循环:

for(i in 0..10){
        println(i)
    }

    for(i in 0 until 10 step 2){
        println(i)
    }

    for(i in 10 downTo 1){
        println(i)
    }

..构成左右闭区间,until构成左闭右开区间,downTo反向构成区间,step更改递增数字

2.3 面向对象编程

2.3.1 类与对象

class Person {
    var name = ""
    var age = 0

    fun eat(){
        println(name + " is eating.He is " + age + " years old.")
    }

}


fun main(){
    val p = Person()
    p.name = "Jack"
    p.age = 19
    p.eat()
}

类是对事物的一种封装,比如人、汽车等。

字段表示该类所含有的属性,如人的姓名和年龄。

函数则表示该类可以有哪些行为,如人吃饭。

面向对象最基本的用法,先将事物封装成具体的类,然后将事物所拥有的属性和能力分别定义为类中的字段和函数,接下来对类进行实例化,再根据具体的变成需求调用类中的字段和函数即可。

2.3.2 继承与构造函数

Kotlin中一个类默认是不可以被继承的,如果想要让一个类可以被继承,需要主动声明open关键字:

open class Person {
    …
}

要让另一个类去继承Person类,则需要使用冒号关键字:

class Student : Person() {
    var sno = ""
    var grade = 0
}

2.5.3 接口

Kotlin中定义接口的关键字和Java中是相同的,都是使用的interface:

interface Study {
    fun readBooks()
    fun doHomework()
}

而Kotlin中实现接口的关键字变量了冒号,和继承使用的是同样的关键字:

class Student(val name: String, val age: Int) : Study {
    override fun readBooks() {
        println(name + " is reading.")
    }

    override fun doHomework() {
        println(name + " is doing homework.")
    }
}

调用这两个接口的函数:

fun main(){
    val student = Student("Jack", 19)
    doStudy(student)
}

fun doStudy(study: Study){
    study.readBooks()
    study.doHomework()
}

综上,可布置出完整代码

package com.example.helloworld

interface Study {
    fun readBooks()
    fun doHomework()
}

class Student(val name: String, val age: Int) : Study {
    override fun readBooks() {
        println(name + " is reading.")
    }

    override fun doHomework() {
        println(name + " is doing homework.")
    }
}

class Mader(val name: String, val age: Int) : Study {
    override fun readBooks() {
        println(name + " is doing.")
    }

    override fun doHomework() {
        println(name + " is doing vedio.")
    }
}
fun main(){
    val student = Mader("Jack", 19)
    doStudy(student)
}

fun doStudy(study: Study){
    study.readBooks()
    study.doHomework()
}

2.5.4 数据类与单例类

Kotlin中使用data关键字可以定义一个数据类:

data class Cellphone(val brand: String, val price: Double)

Kotlin会根据数据类的主构造函数中的参数将equals()、hashCode()、toString()等固定且无实际逻辑意义的方法自动生成,从而大大简少了开发的工作量。

P.S.
1、equals() 方法用于将字符串与指定的对象比较。
String 类中重写了 equals() 方法用于比较两个字符串的内容是否相等。

retVal = Str1.equals( Str2 );   // 比较字符串 str1 和 str2 是否相等,retval 返回的是布尔值。

2、hashCode() 方法用于返回字符串的哈希码。

public int hashCode()

3、toString() 方法可把一个 Number 对象转换为一个字符串,并返回结果。

NumberObject.toString(radix)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值