kotlin和java差别_Kotlin和Java的常用方法的区别总结
一.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的常用方法的区别总结相关推荐
- 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 ...
- enum java 比较_Kotlin与Java比较:枚举类
前言 Kotlin作为JVM系的语言,起源于Java又不同于Java.通过在语言层面比较两者的区别,可以使得开发者能够快速学习,融会贯通. 枚举使用场景 使用枚举的场景非常明确,即只要一个类的对象是有 ...
- java后台如何实现让用户可以在页面修改数据表_长见识了,Kotlin + SpringBoot + JPA 整合开发比Java更爽......
点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料+视频 作者:ride segmentfault.com/a/119 ...
- Kotlin学习笔记 第四章 Java调用Kotlin
参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...
- 长见识了,Kotlin + SpringBoot + JPA 整合开发比Java更爽...
点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料+视频 作者:ride segmentfault.com/a/119 ...
- Kotlin传递可变长参数给Java可变参数方法
定义Java可变参数方法 package com.tcl.john.studymvvm.utils;/*** 调用Java方法的工具类* Created by ZhangJun on 2017/10/ ...
- java arraylist和list_Java中ArrayList和LinkedList区别
原文链接:http://pengcqu.iteye.com/blog/502676 一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据 ...
- IntelliJ IDEA 使用 Java 11新特性以及Java 8 以来的Java 11新特性介绍
文章目录 Java 11 安装 IDEA 设置 特性1:lambda表达式中允许使用var 特性2: String新增REPEAT 方法,方便拷贝字符串 特性3: 文件读写更方便:readString ...
- think in java笔记_Thinking in java读书笔记 PDF 下载
主要内容: 第一章对象导论 1. 因为类描述了具有相同特征(数据元素.静态)和行为(功能.动态)的对象集合.public表示紧随其后的元素对任何人都是可用的,而private这个关键字表示除类型创建者 ...
最新文章
- 分分钟入门【Nodejs】—初步了解Nodejs
- java报错 pom.xml第一行报org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project......
- 媒体查询media的3种引入方式
- git本地库(操作具体命令)
- 网络编程知识点复习(第一次)
- python求派_python求π
- Android 集成 google 登录并获取 性别等隐私信息
- iOS-【转载】架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译)
- 实时系统vxWorks - timer定时应用
- 导购网站服务器,服务器导购:选购服务器应看哪些配置参数
- 去掉FreeMind的红色波浪线,关闭拼写检查
- 中国现有国家级风景名胜区
- DCDC电源测试以及纹波测试方法
- js中自定义对象、json对象、json字符串、普通js对象
- 关于WindowsServer2019空密码登录问题
- 逻辑模型和物理模型的区别
- 【Linux-ARM】电脑 WiFi 上网,开发板与电脑直连
- 用Python标准库turtle画一只老虎,祝您新年虎虎生威,大吉大利!
- 北邮2020年计算机学院分数线,2020北京邮电大学录取分数线
- R语言list.files
热门文章
- C#里内置的DateTime基本功能
- 【VSTO】Office开发中遇到的兼容性检查问题
- windows消息机制-4(MFC)
- Android中传递对象的三种方法
- C# struct的陷阱:无法修改“...”的返回值,因为它不是变量
- C#调用C++Dll封装时遇到的一系列问题 参考
- java第三周学习总结
- swift5 字符串格式化保留2 位,缺0自动补0
- SQL Server创建数据库和数据的增删改查
- java替换html样式_Java Jsoup替换标签的CSS样式