Kotlin

背景

解释型语言。Kotlin运行前会先编译成class,再供java虚拟机解释执行

语法

变量

var b = 1//可变变量
val a = 1//不可变变量,对应final

//kotlin存在类型推导机制,上述a,b会默认为Int
var c: Int = 1//声明具体类型

基本类型:Kotlin不再存在基本类型,将全部使用对象类型
在这里插入图片描述

语句

//if与java相同,但可以包含返回值,if必须有else,不然会报错
fun max(a: Int, b: Int): Int{
	return if(a > b) a else b
}
//return可以替换为赋值
fun max(a: Int, b: Int): Int = if(a > b) a else b
//Kotlin中==等价于Java的equals比较的时是对象里的内容, === 等价于Java的==,比较的为对象的引用
fun getScore(name: String) = if (name == "Tom") "不及格"
else if (name == "Jim") "及格"
else if (name == "Pony") "良好"
else if (name == "Tony") "优秀"
else "名字非法"


//when也必须实现else,否则报错.
//when表达式中每一个分支都由条件,箭头->和一个结果来表示
fun getScore(name: String) = when(name) {
    "Tom" -> "不及格"
    "Jim" -> "及格"
    "Pony" -> "良好"
    "Tony" -> "优秀"
    else -> "名字非法"
}
//使用Boolean使when更加灵活
un getScore(name: String) = when {
    name == "Tom" -> {
    //进行一些处理
    println("你好,我是Tom开头的同学")
    "不及格"
    }
    name == "Jim" -> "及格"
    name == "Pony" -> "良好"
    name == "Tony" -> "优秀"
    else -> "名字非法"
}
//when支持参数检查
fun checkNumber(num: Number) {
    when (num) {
        is Int -> println("Int")
        is Double -> println("Double")
        else -> println("others")
    }
}


//循环语句,while与java没有区别
//区间的概念
val range = 0..10//区间代表[1,10]

for (i in range) {//或者直接for (i in 0..10)
}

for (i  in 0 until 10) {//区间[0,10)
}

for (i in 0 until 10 step 2) {//步长为2
}

for (i in 10 downTo 1) {//降序
}

函数

//无参无返回值
fun test() {
}
//参数类型Int,返回值类型Int
fun add(a: Int, b: Int): Int{
	return a + b
}
//可以将return关键字替换为赋值运算符
fun add(a: Int, b: Int): Int = a + b
//类型推导,返回值类型也可以忽略
fun add(a: Int, b: Int): a + b

//调用
val num = add(1,2)

//范例 创建一个Person类,main函数调用
class Person {
	var name = ""
	var age = 0
	fun printInfo() {
	}
}

fun main() {
	val person = Person()
	person.name = "zhangsan"
	person.age = 20
	person.printInfo()
}

继承

open class Person() {//open关键字才可以继承
}
class Student : Person() {
}

构造函数

class Student(name: String, age: Int, val number: String, val grade: Int) : Person(name, age) {
}
//创建Student对象
val student = Student("zhangsan", 20, "1234", 90)

//Kotlin提供了init结构体,主构造的逻辑可在init中处理
open class Person(val name: String, val age: Int) {
    init {
        println("name is" + name)
        println("age is" + age)
    }
}

//次构造(多个构造函数)
class Student(name: String, age: Int, val number: String, val grade: Int): Person(name, age) {
	constructor(name: String, age: Int, number: String): this(name, age, number, 0) {//只初始化前三个参数
	}
	constructor(): this("", 0, "", 0) {
	}
}

//无主构造函数
class Student : Person {
    constructor(name: String, age: Int, number: String) : super(name, age) {

    }
	fun study() {
        //name,age可使用
        println(name + "is studying")
        //使用number则会报错,若number是主构造的参数则可引用
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值