Kotlin基本特性

目录

函数

if

when

循环

面向对象 

继承

主构造函数

接口

修饰符

​编辑数据类

单例类

Lambda编程

集合

lambda用法

常见函数式API

空指针

判空辅助工具

字符串内嵌表达式 

函数

fun add1(a:Int,b:Int):Int{
    return a+b
}

fun add2(a:Int,b:Int):Int = a+b // 只有一句的可以写成赋值的形式

if

fun func(a:Int,b:Int): Int {
    var ret:Int = if(a>b){
        a
    }
    else b
    return ret
}

if语句有返回值,也可以写成赋值的形式:

fun func1(a:Int,b:Int):Int = if (a>b) a else b

when

fun getstring(str:String) = when(str) {
    "jack" -> 1
    "mike" -> 2
    else -> 3
}

when也有返回值,用法类似switch。

循环

    for(i in 1..10) // 左闭右闭区间
        println(i)
    for(i in 1 until 10) // 坐闭右开区间
        println(i)
    for(i in 1..10 step 2) // 每次+2
        println(i)
    for(i in 10 downTo 1) // 降序
        println(i)
    for(i in 10 downTo 1 step 2) // 降序+2
        println(i)

面向对象 

继承

open class Base
{
    var a:Int = 0
}
class dervice : Base()
{
    var b:Int = 0
}
fun main() {
    var base = Base()
    base.a = 1
    var der = dervice()
    der.a = 2
}

加上open关键字才能被继承 

主构造函数

open class Base(val aa:Int,val bb:Int)
{}
class dervice(val a:Int,val b:Int): Base(a,b)
{
    init {
        println("init")
    }
}
fun main() {
    val der = dervice(2,3)
    println(der.a)
}

主构造函数没函数体,但是需要其他操作可以写在init里面。若想调用父类的构造函数,可以在Base()里传参。

接口

interface JAY
{
    fun jay(name:String)
    fun chou(name:String)
}
class jaychou : JAY
{
    override fun jay(name: String) {
        println(name)
    }
    override fun chou(name: String) {
        println(name)
    }
}
fun main() {
    val jc = jaychou()
    jc.jay("Jay")
    jc.chou("Chou")
}

也存在默认的接口,即没有自己实现就调用默认的。

修饰符


数据类

数据类存在的意义:数据类 Data class 存在的意义是什么?_data class must have at least one primary construc-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/xiaokangss/article/details/130712827

data class Savadata(var name:String,var number:Int){}

data class比class 多实现了 toString()、hashCode()、equals()、copy()、componentN()方法。但是kotlin系统会默认帮我实现而不需要像JAVA那样重新这些方法。
hashCode()、equals()是用来比较对象内容是否相同,多用于HashMap等容器中;toString()是用来打印对象内容;copy()实现了复制功能;componentN()提供了快速访问元素的功能。data class只是是kotlin提供的具有常用数据model功能的类,用于提升开发效率。

单例类

object sig {
    fun test(){
        println("test")
    }
}
fun main() {
   sig.test()
}

不需要提供静态变量和静态方法,系统会自动帮我们生成。

Lambda编程

集合

val list = listOf("apple","banana","pear")
fun main() {
   for(i in list)
   {
       println(i)
   }
}

用listOf来一次性将list元素给add进去,避免了多次add,简化了代码。 不过只适用于不可变集合。针对可变集合使用mutableListOf。同样的,针对set也是一样。可以调用setOf。而map除了可以map["apple"] = 1之外,可以使用mapOf:

val map = mapOf("apple" to 1,"pear" to 2)
fun main() {
   for(i in map)
   {
       println(i.key + i.value)
   }
}

lambda用法

val list = listOf("apple","banana","pear")
val map = mapOf("apple" to 1,"pear" to 2)
fun main() {
   var maxnumber = list.maxBy { it.length }
    println(maxnumber)
}

上述代码求最长的单词。也可以用lambda:

fun main() {
   //var maxnumber = list.maxBy { it.length }
    var maxnumber = list.maxBy { i:String -> i.length }
    println(maxnumber)
}

lambda格式:{ 参数名1:参数类型,参数名2:参数类型 -> 函数体 } 

常见函数式API

map(对元素进行任意的映射转化)

fun main() {
    var newlist = list.map{it.toUpperCase() }
    for(i in newlist){
        println(i)
    }
}
// 将小写转化为大写

filter(过滤元素)

fun main() {
    var newlist = list.filter { it.length<=4 }
    for(i in newlist){
        println(i)
    }
}
// 筛选字母数量小于等于4的元素
fun main() {
    var newlist = list.filter { it.length<=4 }.map{it.toUpperCase()}
    for(i in newlist){
        println(i)
    }
}
// 也可以配合map使用

any(是否存在一个元素满足条件)

all(是否全部元素都满足条件)

var ret1 = list.all{it.length>=3}
var ret2 = list.any{it.length>=5}

空指针

kotlin在编译时期就把会存在空指针问题的情况就提前报错。为了防止区别哪些变量可以为空,设置了在类型后面加上?的形式。

fun test(num:Int?){
    if(num!=null){
    }

} // 表示num可为空,并且一般需要加上判空

判空辅助工具

字符串内嵌表达式 

class test{
    var i = 1
}
fun main(){
    println("555${test().i}") // 执行结果5551
}

当表达式只有一个变量是,大括号也可以省略。

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kotlin是一种静态类型的编程语言,它是由JetBrains公司开发的,可以在Java虚拟机(JVM)上运行,也可以在JavaScript和本地代码上运行。Kotlin被设计为一种更现代和更简洁的替代Java语言。以下是一些简单的入门指南: 1. 安装Kotlin插件 在使用Kotlin之前,您需要在您的IDE中安装Kotlin插件。如果您使用的是IntelliJ IDEA,则可以在File -> Settings -> Plugins中查找并安装Kotlin插件。如果您使用的是Android Studio,则Kotlin插件已经预安装。 2. 基本语法 Kotlin的语法类似于Java和其他C风格的语言,但具有更简洁和现代的语法。下面是一些基本的语法示例: ``` // 定义一个函数 fun greet(name: String): String { return "Hello, $name!" } // 使用条件表达式 fun max(a: Int, b: Int) = if (a > b) a else b // 使用类和对象 class Person(val name: String, var age: Int) { fun sayHello() { println("Hello, my name is $name and I am $age years old.") } } val person = Person("Alice", 30) person.sayHello() ``` 3. 空安全 Kotlin有一个独特的特性,即空安全。这意味着您需要明确地处理可能为空的变量和表达式。以下是一个示例: ``` // 定义一个可能为空的变量 var name: String? = null // 使用安全调用操作符 val length = name?.length // 使用非空断言操作符(!) val length = name!!.length ``` 在上面的示例中,变量name可能为空,因此我们使用安全调用操作符(?.)来检查其是否为空。如果不为空,则返回其长度。如果您确定变量不为空,则可以使用非空断言操作符(!!)来抛出异常,如果为空,则会出现NullPointerException异常。 这些只是Kotlin基本语法和特性,您可以深入学习Kotlin的更多高级特性,例如扩展函数、数据类、Lambda表达式等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值