iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Kotlin怎么使用
  • 110
分享到

Kotlin怎么使用

2023-06-17 04:06:30 110人浏览 安东尼
摘要

今天小编给大家分享一下Kotlin怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 如何定义变量Java 定义变量

今天小编给大家分享一下Kotlin怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

Kotlin怎么使用

1. 如何定义变量

Java 定义变量的写法:

String string = "Hello";

基本等价的 Kotlin 定义变量的写法:

var string: String = "Hello"

Java 定义 final 变量的写法:

final String string = "Hello";

注意到前面的是一个编译期常量,Kotlin 当中应该这么写:

const val string: String = "Hello"

同样是 final 变量,Java 这么写:

final String string = getString();

注意到,这个不是编译期常量,Kotlin 这么写:

val string: String = getString()

另外, Kotlin 有类型推导的特性,因此上述变量定义基本上都可以省略掉类型 String。

2. 如何定义函数

Java 当中如何定义函数,也就是方法,需要定义到一个类当中:

public boolean testString(String name){  ...  }

等价的 Kotlin 写法:

fun testString(name: String): Boolean {     ... }

注意到返回值的位置放到了参数之后。

3. 如何定义静态变量、方法

Java 的静态方法或者变量只需要加一个 static 即可:

public class Singleton{     private static Singleton instance = ...;      public static Singleton getInstance(){         ...         return instance;     } }

用 Kotlin 直译过来就是:

class KotlinSingleton{     compaNIOn object{         private val kotlinSingleton = KotlinSingleton()          @JVMStatic         fun getInstance() = kotlinSingleton      } }

注意 getInstance 的写法。 JvmStatic 这个注解会将 getInstance 这个方法编译成与 Java  的静态方法一样的签名,如果不加这个注解,Java 当中无法像调用 Java 静态方法那样调用这个方法。

另外,对于静态方法、变量的场景,在 Kotlin 当中建议使用包级函数。

4. 如何定义数组

Java 的数组非常简单,当然也有些抽象,毕竟是编译期生成的类:

String[] names = new String[]{"Kyo", "Ryu", "iory"};  String[] emptyStrings = new String[10];

Kotlin 的数组其实更真实一些,看上去更让人容易理解:

val names: Array<String> = arrayOf("Kyo", "Ryu", "Iory") val emptyStrings: Array<String?> = arrayOfNulls(10)

注意到,Array T 即数组元素的类型。另外,String? 表示可以为 null 的 String 类型。

数组的使用基本一致。需要注意的是,为了避免装箱和拆箱的开销,Kotlin 对基本类型包括  Int、Short、Byte、Long、Float、Double、Char 等基本类型提供了定制版数组类型,写法为 XArray,例如 Int 的定制版数组为  IntArray,如果我们要定义一个整型数组,写法如下:

val ints = intArrayOf(1, 3, 5)

5. 如何写变长参数

Java 的变长参数写法如下:

void hello(String... names){     ... }

Kotlin 的变长参数写法如下:

fun hello(vararg names: String){  }

6. 如何写三元运算符

Java 可以写三元运算符:

int code = isSuccessfully? 200: 400;

很多人抱怨 Kotlin 为什么没有这个运算符。。。据说是因为 Kotlin 当中 : 使用的场景比 Java  复杂得多,因此如果加上这个三元运算符的话,会给语法解析器带来较多的麻烦,Scala 也是类似的情况。那么这中情况下,我们用 Kotlin 该怎么写呢?

int code = if(isSuccessfully) 200 else 400

注意到,if else 这样的语句也是表达式,这一点与 Java 不同。

7. 如何写 main 函数

Java 的写法只有一种:

class Main{     public static void main(String... args){         ...     } }

注意到参数可以是变长参数或者数组,这二者都可。

对应 Kotlin,main 函数的写法如下:

class KotlinMain{     companion object{         @JvmStatic         fun main(args: Array<String>) {          }     } }

Kotlin 可以有包级函数,因此我们并不需要声明一个类来包装 main 函数:

fun main(args: Array<String>){     ... }

8. 如何实例化类

Java 和 c++ 这样的语言,在构造对象的时候经常需要用到 new 这个关键字,比如:

Date date = new Date();

Kotlin 构造对象时,不需要 new 这个关键字,所以上述写法等价于:

val date = Date()

9. 如何写 Getter 和 Setter 方法

Java 的 Getter 和 Setter 是一种约定俗称,而不是语法特性,所以定义起来相对自由:

public class GetterAndSetter{     private int x = 0;      public int getX() {         return x;     }      public void setX(int x) {         this.x = x;     } }

Kotlin 是有属性的:

class KotlinGetterAndSetter{     var x: Int = 0         set(value) { field = value }         get() = field }

注意看到,我们为 x 显式定义了 getter 和 setter,field 是 x 背后真正的变量,所以 setter 当中其实就是为 field  赋值,而 getter 则是返回 field。如果你想要对 x 的访问做控制,那么你就可以通过自定义 getter 和 setter 来实现了:

class KotlinGetterAndSetter{     var x: Int = 0         set(value) {             val date = Calendar.getInstance().apply {                 set(2017, 2, 18)             }             if(System.currentTimeMillis() < date.timeInMillis){                 println("Cannot be set before 2017.3.18")             }else{                 field = value             }         }         get(){             println("Get field x: $field")             return field         }    }

10. 如何延迟初始化成员变量

Java 定义的类成员变量如果不初始化,那么基本类型被初始化为其默认值,比如 int 初始化为 0,boolean 初始化为  false,非基本类型的成员则会被初始化为 null。

public class Hello{     private String name; }

类似的代码在 Kotlin 当中直译为:

class Hello{     private var name: String? = null }

使用了可空类型,副作用就是后面每次你想要用 name 的时候,都需要判断其是否为 null。如果不使用可控类型,需要加 lateinit 关键字:

class Hello{     private lateinit var name: String }

lateinit 是用来告诉编译器,name 这个变量后续会妥善处置的。

对于 final 的成员变量,Java 要求它们必须在构造方法或者构造块当中对他们进行初始化:

public class Hello{     private final String name = "Peter"; }

也就是说,如果我要想定义一个可以延迟到一定实际再使用并初始化的 final 变量,这在 Java 中是做不到的。

Kotlin 有办法,使用 lazy 这个 delegate 即可:

class Hello{     private val name by lazy{         NameProvider.getName()      } }

只有使用到 name 这个属性的时候,lazy 后面的 Lambda 才会执行,name 的值才会真正计算出来。

11. 如何获得 class 的实例

Java 当中:

public class Hello{     ... }  ...  Class<?> clazz = Hello.class;  Hello hello = new Hello(); Class<?> clazz2 = hello.getClass();

前面我们展示了两种获得 class 的途径,一种直接用类名,一种通过类实例。刚刚接触 Kotlin 的时候,获取 Java Class  的方法却是容易让人困惑。

class Hello  val clazz = Hello::class.java  val hello = Hello() val clazz2 = hello.javaClass

同样效果的 Kotlin 代码看上去确实很奇怪,实际上 Hello::class 拿到的是 Kotlin 的 KClass,这个是 Kotlin  的类型,如果想要拿到 Java 的 Class 实例,那么就需要前面的办法了。

以上就是“Kotlin怎么使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: Kotlin怎么使用

本文链接: https://www.lsjlt.com/news/287037.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Kotlin怎么使用
    今天小编给大家分享一下Kotlin怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 如何定义变量Java 定义变量...
    99+
    2023-06-17
  • Android Kotlin怎么使用
    要在Android上使用Kotlin,你需要完成以下步骤:1. 安装Kotlin插件:在Android Studio中,打开**Fi...
    99+
    2023-09-15
    Android Kotlin
  • Android Kotlin类怎么使用
    这篇文章主要介绍“Android Kotlin类怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android Kotlin类怎么使用”文章能帮助大家解决问题。1. 类的声...
    99+
    2023-07-02
  • 怎么使用Kotlin来扩展
    今天小编给大家分享一下怎么使用Kotlin来扩展的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。实际上客户早在去年年初的时候便...
    99+
    2023-06-17
  • kotlin怎么配置和使用
    这篇“kotlin怎么配置和使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“kotlin怎么配置和使用”文章吧。kotli...
    99+
    2023-06-27
  • Kotlin中Lazy与Lateinit怎么使用
    本篇内容介绍了“Kotlin中Lazy与Lateinit怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Lateinit有时变量的值在...
    99+
    2023-07-05
  • 使用Kotlin怎么进行编程
    今天就跟大家聊聊有关使用Kotlin怎么进行编程,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Kotlin 基本语法先说个学习Kotlin语法的小窍门,将代码用Java写好,然后Co...
    99+
    2023-05-31
    kotlin
  • 怎么使用Kotlin开发Android应用
    要使用Kotlin开发Android应用,你可以按照以下步骤进行:1. 安装Kotlin插件:在Android Studio中,打开...
    99+
    2023-08-16
    Kotlin Android
  • kotlin函数怎么在java中使用
    本篇文章给大家分享的是有关kotlin函数怎么在java中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于...
    99+
    2023-06-14
  • kotlin的copy使用
    笔者专注于Android安全领域, 欢迎关注个人的微信公众号《Android安全工程》(可点击进行扫码关注)。个人微信公众号主要围绕 Android 应用的安全防护和逆向分析, 分享各种安全攻防手...
    99+
    2023-09-04
    kotlin android 开发语言
  • Kotlin的::符号怎么用
    目录前言正文传递函数优化成员引用 ::使用范围绑定引用总结前言 在阅读Kotlin的代码时,经常有看到 :: 这个符号,这个符号专业术语叫做成员引用,在代码中使用可以简化代码,那到底...
    99+
    2024-04-02
  • Lambda和高阶函数怎么在Kotlin 中使用
    本篇文章为大家展示了Lambda和高阶函数怎么在Kotlin 中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Lambda是什么Lambda是一种函数的表示方式(言外之意也就是说一个Lambda...
    99+
    2023-05-30
    kotlin lambda 高阶函数
  • Kotlin拓展函数怎么用
    这篇文章主要介绍了Kotlin拓展函数怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Kotlin拓展函数怎么用文章都会有所收获,下面我们一起来看看吧。原理拓展函数是kotlin里一个比较常用的特性,例如我...
    99+
    2023-06-29
  • 使用Kotlin怎么定义函数与声明变量
    使用Kotlin怎么定义函数与声明变量?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Kotlin基础教程之函数定义与变量声明可以看到,函数定义就是 <访问控制符> ...
    99+
    2023-05-31
    kotlin 声明变量 函数定义
  • Kotlin的::符号如何使用
    这篇文章主要讲解了“Kotlin的::符号如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Kotlin的::符号如何使用”吧!传递函数优化这里我们举个栗子,就看这个熟悉的sortBy排...
    99+
    2023-06-29
  • Android使用Kotlin API实践WorkManager
    目录WorkManager 基础 使 Worker 开始执行任务 但是如果我希望进行异步操作怎么办? WorkManager 提供了一系列 API 可以更加便捷地规划异步任务,即使在...
    99+
    2024-04-02
  • Kotlin-Android之Activity使用详解
    目录Activity中Toast的使用Activity中不使用findViewById()获取控件IDActivity中使用菜单MenuActivity中intent的使用inten...
    99+
    2024-04-02
  • Kotlin泛型的使用介绍
    1.泛型类、泛型函数 1)泛型类可以接收任意类型。Package<T>(t: T) 2)泛型类中定义的泛型参数<T>,通常用T(Type)表示,(t: T) ...
    99+
    2024-04-02
  • Kotlin ContentProvider使用方法介绍
    目录1、注册ContentProvider2、内容URI内容URI的标准格式通配符3、创建自己的ContentProvider4、访问其他程序中的数据1、注册ContentProvi...
    99+
    2024-04-02
  • Kotlin ContentProvider使用方法详解
    目录ContentProvider提供者contentResolver获取短信数据ContentObserver监控短信的到来小结android的四大组件,已经介绍了两个,这一节介绍...
    99+
    2022-12-08
    Kotlin ContentProvider Kotlin ContentProvider的使用
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作