Kotlin基础入门 - 从Java快速过度Kotlin

news/2024/7/8 8:16:21

虽然之前用了Kotlin一段时间,但是回头看竟然没有做这方面的笔记,索性系统记录一下

自语:Kotlin语法糖真是秀儿,话说,并不是Java不如Kotlin,而是Google在推属于android自己的语言

      • 如何声明变量?
        • Java
        • Kotlin
      • 如何声明方法、函数?
        • 无参方法
        • 有参方法
        • 有参有返回
      • 如何创建对象?
        • Java
        • Kotlin
      • 如何类继承?
        • Java
        • Kotlin
      • 如何实现接口?
        • Java
        • Kotlin

本篇主要记录一些 Kotlin 基础使用方法,方便各位 快速从Java转战到Kotlin,为了简单明了我会综合Java、Kt的不同使用一并记录,有兴趣的也可以自己去 Google 的 Kotlin文档 学习 ~

如何声明变量?

Java

 String data = "宋老三";

Kotlin

在Kotlin声明变量时,通常有俩种方式

  • var 赋值可被修改
  • val 仅支持初始化赋值,可参考Java final关键字

Kotlin 常规版

var dataVar: String = "宋老三"
val dataVal: String = "宋老三"

Kotlin 简化版(Kt 自带类型推断特性,可根据赋值数据自行推断变量类型)

var dataVar = "宋老三"
val dataVal = "宋老三"

如何声明方法、函数?

我们经常将函数说成方法,在Kotlin中继续称为函数,关于函数主要使用fun函数进行声明

无参方法

Java

 public void test() {} 

Kotlin

 fun test() {}

有参方法

Java

 public void test(int num1) {} 

Kotlin

 fun test(num1: Int) {}

有参有返回

Java

 public int test(int num1, int num2) {
    return num1 + num2;
 }

Kotlin

注意:档方法需要return返回值时,在方法后声明返回类型

 fun test(num1: Int, num2: Int): Int {
    return num1 + num2
 }

语法糖 - 当返回值仅为一行时可以直接使用 = 返回

fun test(num1: Int, num2: Int): Int = num1 + num2

如何创建对象?

Java

创建类(包含set方法、get方法、构造方法)

public class Dream {
    public String what;
    public String time;

    public Dream() {
        super();
    }
 
    public Dream(String what, String time) {
        this.what = what;
        this.time = time;
    }

    public String getWhat() {
        return what;
    }

    public void setWhat(String what) {
        this.what = what;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }
}

创建对象

Dream info = new Dream("Life","2022");

Kotlin

创建类(包含set方法、get方法、有参构造方法

open class Dream {
    //父类无参的次构造器
    constructor() {
        println("无参构造器")
    }

    //父类无参的次构造器
    constructor(what: String, time: String) {
        println("无参构造器")
    }
}

简化写法,不过没有无参构造

open class Dream(var what: String, var time: String) {}

创建对象

var dream: Dream = Dream("Life", "2022")
//类型推导
var dream = Dream("Life","2022")

如何类继承?

Java

public class Son extends Dream{}

Kotlin

class Son : Dream(){}

如何实现接口?

Java

创建接口

public interface DreamListener {
    public void gogo();
}

接口实现

实现方式 → implements +接口

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity implements DreamListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public void gogo() {
        
    }
}

Kotlin

创建接口

interface DreamListener {
    fun gogo()
}

接口实现

实现方式 → :+接口

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class MainActivity : AppCompatActivity(), DreamListener {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    override fun gogo() {

    }
}

http://lihuaxi.xjx100.cn/news/204858.html

相关文章

后端存储实战课总结(上)

创建和更新订单 表设计 最少应该有以下几张表: 订单主表:保存订单基本信息订单商品表:保存订单中的商品信息订单支付表:保存订单支付和退款信息订单优惠表:保存订单的优惠信息 订单主表和字表是一对多关系&#xf…

Node.js 入门教程 51 Node.js Buffer

Node.js 入门教程 Node.js官方入门教程 Node.js中文网 本文仅用于学习记录,不存在任何商业用途,如侵删 文章目录Node.js 入门教程51 Node.js Buffer51.1 什么是 buffer?51.2 为什么需要 buffer?51.3 如何创建buffer51.4 使用 buff…

RabbitMQ系列【16】AmqpTemplate接口详解

有道无术,术尚可求,有术无道,止于术。 文章目录前言AmqpTemplateAPIsendconvertAndSendreceivereceiveAndConvertreceiveAndReplysendAndReceiveconvertSendAndReceive前言 RabbitTemplate 是spring-amqp提供的一个 RabbitMQ 消息操作模板类…

时间序列:时间序列模型---自回归过程(AutoRegressive Process)

本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。 这次我们构造一个由无限的白噪声实现(white noise realization) 组成的时间序列,即。这个由无限数目的项组成的值却是一个有限的值,比如时刻的值为, 而…

Codeforces Round #290 (Div. 2) C. Fox And Names

翻译: Fox Ciel将发表一篇关于FOCS (Fox操作的计算机系统,发音:“Fox”)的论文。她听到一个谣言:报纸上的作者名单总是按照词典顺序排列的。 在查看了一些例子后,她发现有时这不是真的。在一些论文中,作者的名字没有按照正常意义…

Spring(Spring的理解+DI+Spring的创建)

目录 1. Spring 是什么 2. DI 3. 面试题: IoC 和 DI 有什么区别? 4. Spring 的创建 5. 将 Bean (对象) 存储到 Spring (容器) 中 6. 将 Bean (对象) 从 Spring (容器) 中取出来 7. 面试题: ApplicationContext 和 BeanFactory的区别 8. getBean 更多用法 1. Spring 是…

Spring Boot+Mybatis:实现数据库登录注册与两种properties配置参数读取

〇、参考资料 1、hutool介绍 https://blog.csdn.net/abst122/article/details/124091375 2、Spring BootMybatis实现登录注册 https://www.cnblogs.com/wiki918/p/16221758.html 3、Spring Boot读取自定义配置文件 https://www.yisu.com/zixun/366877.html 4、Spring Boot读取p…

PyQt5可视化编程-控件

控件就像是应用这座房子的一块块砖。PyQt5有很多的控件,比如按钮,单选框,滑动条,复选框等等。我们将介绍一些很有用的控件: QCheckBox,ToggleButton,QSlider,QProgressBar, QCalendarWidget,QPixmap,QLineEdit,QSplitt…