一.kotlin和java的常用语法区别

1)、类、public class、public final class

java

1

2public final class User{

}

1

2public class User{

}

kotlin

​ kotlin中一个类默认就是public final的,所以如果想要一个类能被继承,那么需要申明open class

1class User

1open class User

2)、数据模型bean,这里区分一下参数是final还是普通参数,对应kotlin中的val和var

java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21final class User{

private final String name;

private String phone;

public User(String name, String phone){

this.name = name;

this.phone = phone;

}

public String getName(){

return name;

}

public String getPhone(){

return phone;

}

public void setPhone(String phone){

this.phone = phone;

}

}

kotlin

kotlin中定义一个数据模型类,会非常简单,因为默认有构造函数,和get和set方法,这里需要注意val对应的是java中的final申明字符串,而var对应的是普通字符串变量。

1class User(val name: String, var phone: String)

3)、可选参数构造函数的区别

java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15final class User{

private String name;

private String lastName;

public User(String name){

this(name, "");

}

public User(String name, String lastName){

this.name = name;

this.lastName = lastName;

}

// And Getters & Setters

}

kotlin

kotlin中可以直接在类的构造函数中定义参数的默认值,这种定义了默认值的参数就变成可选参数。

1class User(var name: String, var lastName: String = "")

4)、类的属性自定义get、set方法

java

1

2

3

4

5

6

7

8

9

10

11

12

13public class Document{

private String id = "00x";

public String getId(){

return id;

}

public void setId(String id){

if(id != null && !id.isEmpty()) {

this.id = id;

}

}

}

kotlin

​ kotlin中如果要自定义set方法,可以在属性下面重写set(value)方法,这里注意的就是field代表的就是当前属性,比如这里就是指id

1

2

3

4

5

6class Document{

var id : String = "00x"

set(value) {

if(value.isNotEmpty()) field = value

}

}

5)、类、内部类、静态内部类

java

1

2

3

4

5

6

7

8

9public class Documment{

class InnerClass{

}

public static class StaticInnerClass{

}

}

kotlin

1

2

3

4class Document{

inner class InnerClass

class StaticInnerClass

}

6)、抽象类、继承抽象类

java

1

2

3

4

5

6

7

8

9

10public abstract class Document{

public abstract int calculateSize();

}

public class Photo extends Document{

@Override

public int calculateSize(){

}

}

kotlin

1

2

3

4

5

6

7

8

9abstract class Document{

abstract fun calculateSize(): Int

}

class Photo : Document() {

override fun calculateSize(): Int {

}

}

7)、接口、实现接口

java

1

2

3

4

5

6

7

8

9

10public interface Printable{

void print();

}

public class Document implements Printable{

@Override

public void print(){

}

}

kotlin

​ 这里注意接口实现和继承抽象类的区别是:接口不需要(),但继承类是需要()的,这里其实()指代的是父类的构造函数。

1

2

3

4

5

6

7

8

9interface Printable{

fun print()

}

class Document : Printable{

override fun print() {

}

}

8)、单例模式 / 静态类、静态方法

java

1

2

3

4

5

6

7

8public class Document{

private static final Document INSTANCE = new Document();

public static Document getInstance(){

return INSTANCE;

}

}

kotlin

​ kotlin中的单例模式非常简洁,一个类申明为object即是单例,还有object申明的类内部的方法都是静态方法

1

2

3object Document {

}

​ 这里额外记录一下kotlin中如果只想类中某一部分方法申明为静态方法,可以用到companion object申明这些方法,companion object内申明的方法都是静态方法

1

2

3

4

5

6

7companion object {

fun startActivity(context:Context) {

val intent = Intent()

intent.setClass(context, HomeActivity::class.java)

context.startActivity(intent)

}

}

9)、扩展方法

​ java

1

2

3

4

5

6

7

8public class ByteArrayUtils{

public static String toHexString(byte[] data){

}

}

final byte[] dummyData = new byte[10];

final String hexValue = ByteArrayUtils.toHexString(dummyData);

​ kotlin

​ kotlin可以直接申明一个类的扩展函数,这样一个类的对象就可以直接调用该扩展函数

1

2

3

4

5

6fun ByteArray.toHex() : String {

}

val dummyData = byteArrayOf()

val hexValue = dummyData.toHex()

二.kotlin中遇到的问题1)、kotlin.NotImplementedError: An operation is not implemented: Not yet implemented

原因是kotlin中类实现接口的方法,或者抽象类的方法,默认方法里会有

TODO( ... ),删除掉这部分代码,该异常即不会出现。

kotlin和java差别_Kotlin和Java的常用方法的区别总结相关推荐

  1. kotlin和java语言_Kotlin VS Java – 2020年您应该学习哪种编程语言?

    kotlin和java语言 It has been several years since Kotlin came out, and it has been doing well. Since it ...

  2. enum java 比较_Kotlin与Java比较:枚举类

    前言 Kotlin作为JVM系的语言,起源于Java又不同于Java.通过在语言层面比较两者的区别,可以使得开发者能够快速学习,融会贯通. 枚举使用场景 使用枚举的场景非常明确,即只要一个类的对象是有 ...

  3. java后台如何实现让用户可以在页面修改数据表_长见识了,Kotlin + SpringBoot + JPA 整合开发比Java更爽......

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料+视频 作者:ride segmentfault.com/a/119 ...

  4. Kotlin学习笔记 第四章 Java调用Kotlin

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

  5. 长见识了,Kotlin + SpringBoot + JPA 整合开发比Java更爽...

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料+视频 作者:ride segmentfault.com/a/119 ...

  6. Kotlin传递可变长参数给Java可变参数方法

    定义Java可变参数方法 package com.tcl.john.studymvvm.utils;/*** 调用Java方法的工具类* Created by ZhangJun on 2017/10/ ...

  7. java arraylist和list_Java中ArrayList和LinkedList区别

    原文链接:http://pengcqu.iteye.com/blog/502676 一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据 ...

  8. IntelliJ IDEA 使用 Java 11新特性以及Java 8 以来的Java 11新特性介绍

    文章目录 Java 11 安装 IDEA 设置 特性1:lambda表达式中允许使用var 特性2: String新增REPEAT 方法,方便拷贝字符串 特性3: 文件读写更方便:readString ...

  9. think in java笔记_Thinking in java读书笔记 PDF 下载

    主要内容: 第一章对象导论 1. 因为类描述了具有相同特征(数据元素.静态)和行为(功能.动态)的对象集合.public表示紧随其后的元素对任何人都是可用的,而private这个关键字表示除类型创建者 ...

最新文章

  1. 分分钟入门【Nodejs】—初步了解Nodejs
  2. java报错 pom.xml第一行报org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project......
  3. 媒体查询media的3种引入方式
  4. git本地库(操作具体命令)
  5. 网络编程知识点复习(第一次)
  6. python求派_python求π
  7. Android 集成 google 登录并获取 性别等隐私信息
  8. iOS-【转载】架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译)
  9. 实时系统vxWorks - timer定时应用
  10. 导购网站服务器,服务器导购:选购服务器应看哪些配置参数
  11. 去掉FreeMind的红色波浪线,关闭拼写检查
  12. 中国现有国家级风景名胜区
  13. DCDC电源测试以及纹波测试方法
  14. js中自定义对象、json对象、json字符串、普通js对象
  15. 关于WindowsServer2019空密码登录问题
  16. 逻辑模型和物理模型的区别
  17. 【Linux-ARM】电脑 WiFi 上网,开发板与电脑直连
  18. 用Python标准库turtle画一只老虎,祝您新年虎虎生威,大吉大利!
  19. 北邮2020年计算机学院分数线,2020北京邮电大学录取分数线
  20. R语言list.files

热门文章

  1. C#里内置的DateTime基本功能
  2. 【VSTO】Office开发中遇到的兼容性检查问题
  3. windows消息机制-4(MFC)
  4. Android中传递对象的三种方法
  5. C# struct的陷阱:无法修改“...”的返回值,因为它不是变量
  6. C#调用C++Dll封装时遇到的一系列问题 参考
  7. java第三周学习总结
  8. swift5 字符串格式化保留2 位,缺0自动补0
  9. SQL Server创建数据库和数据的增删改查
  10. java替换html样式_Java Jsoup替换标签的CSS样式