kotlin快速上手篇之android&kotlin常用开发对比(代码片段)

思忆(GeorgeQin) 思忆(GeorgeQin)     2022-12-12     429

关键词:

变量定义与常用数据类型

java:
int i = 1;
long l = 2;
boolean b = true;
float f = 0;
double d = 0;
char c = 'A';
String s = "text";
Intent intent = new Intent();

Kotlin:
var i : Int = 1
var l : Long = 2
var b : Boolean = true
var f : Float = 0F
var d : Double = 0.0
var c : Char = 'A'
var s : String = "text"
var intent = Intent() //不写也可自动推导

常量定义

java:
final String text = "";

Kotlin:
val text = ""

静态常量定义

java:
static final String TEST = "";

Kotlin:
const val TEST = ""@JvmField
val TEST=""

类和继承

java:
MainActivity.class 
Kotlin:
MainActivity::class.java

java
public class MainActivity extends AppCompatActivity 

kotlin
class MainActivity : AppCompatActivity()   

类与及相关属性的声明

java
public class Order 
    private long OrderId;

    public long getOrderId() 
        return OrderId;
    

    public void setOrderId(long orderId) 
        OrderId = orderId;
    


kotlin
class Order 
    //不想生成get set方法用val
    var orderId: Long? = null
    //私有化set 如果需要的话
//    private set

抽象类和接口

Java 
public abstract class BaseActivity extends AppCompatActivity 
    abstract void test();


Kotlin 
abstract class BaseActivity : AppCompatActivity() 
    abstract fun test()


java
public interface Callback 
    void onOk();
    void onFail();


kotlin
interface Callback 
    fun onOk()
    fun onFail()
    //可加入默认声明
    fun test()
        kotlin.io.println (111)
    

构造方法

java
public class MyView extends View 
    public MyView(Context context) 
        this(context, null);
    

    public MyView(Context context, @Nullable AttributeSet attrs) 
        this(context, attrs, 0);
    

    public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) 
        super(context, attrs, defStyleAttr);
    


kotlin
class MyView : View 

    constructor(context : Context) : this(context, null) 
    

    constructor(context : Context, attrs : AttributeSet?) : this(context, attrs, 0) 
    

    constructor(context : Context, attrs : AttributeSet?, defStyleAttr : Int) : super(context, attrs, defStyleAttr) 
    

内部类:

Java 
public class MainActivity extends AppCompatActivity 
    public class MyTask 
    


Kotlin
class MainActivity : AppCompatActivity() 
    inner class MyTask 
    

方法与重写:

java
public void test(String message) 


kotlin  
如果是Unit也可忽略不写
fun test(message : String) : Unit 

//还可以添加默认值
fun test(message : String="默认值") 


java
public class MainActivity extends AppCompatActivity 

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
    


Kotlin 
class MainActivity : AppCompatActivity() 

    override fun onCreate(savedInstanceState: Bundle?) 
        super.onCreate(savedInstanceState)
    

可变参数

java
public int add(int... array) 
 。。。


Kotlin 
fun add(vararg array: Int) : Int 
。。。。

静态方法:

java
public class Toasts 

    public static void show() 
    


kotlin 
jvmstatic
object Toasts 

    @JvmStatic
    fun show() 
    

或 伴生对象 
class Toasts

    companion object  
        fun show()
        
    



类型检测

java
if ("" instanceof String) 

kotlin
if ("" is String) 

强制转换

java
List<Object> list = new ArrayList<>();
String data = (String) list.get(0);

kotlin
var list = ArrayList<Any>()
var data:String = list[0] as String 
或
var data:String = list[0] ?as String 

模板语法:

java
int number = 100;
System.out.println(String.format("测试样本是%d", number));

kotlin
var number = 100
//可在括号中添加表达式
println("测试样本是$number")println("测试样本是$number")

比较:

kotlinjava
a==ba.equals(b)
a===ba==b

循环

Java 
String[] array = "1", "2", "3";
for (int i = 1; i < array.length; i++) 
    System.out.println(array[i]);
for (String text : array) 
    System.out.println(text);


Kotlin 
val array = arrayListOf("1", "2", "3")
for (i in 1..array.size - 1) 
    println(array[i])
for (i in 1 until array.size) 
    println(array[i])
for (text in array) 
    println(text)

判断:

Java 
int count = 1;
switch (count) 
    case 0:
        System.out.println(count);
        break;
    case 1:
    case 2:
        System.out.println(count);
        break;
    default:
        System.out.println(count);
        break;


Kotlin 
var count = 1
when (count) 
    0 -> 
        println(count)
    
    in 1..2 -> 
        println(count)
    
    else -> 
        println(count)
    

枚举

java
public enum OrderStatus 
    ACCEPT,
    FETCH,
    DISPATCH,
    FINISH


kotlin
enum class OrderStatus
    ACCEPT,
    FETCH,
    DISPATCH,
    FINISH


或密闭类(超级枚举)
sealed class OrderStatus 
    object ACCEPT : OrderStatus()
    object FETCH : OrderStatus();
    object DISPATCH : OrderStatus()
    object FINISH : OrderStatus();

快速上手kotlin开发系列之循环(代码片段)

本节介绍Kotlin的循环语法。下面的示例是我们最熟悉的循环语法,但是这种语法在Kotlin中是不能使用的。不过没有关系,在Kotlin中有更多适合的语法供我们选择。以下列出5种Kotlin中常用的循环语法:常用的循环语法... 查看详情

快速上手kotlin开发系列之集合操作符(代码片段)

本节接上一篇继续介绍Kotlin的集合操作符和如何自定义集合操作符。通过上一节Rxjava的示例,我们把同样的功能使用Kotlin来实现。Kotlin示例附上整体代码:funmain()vala=arrayOf("4","0","7","i","f",... 查看详情

快速上手kotlin接口抽象类及泛型(代码片段)

接口定义    kotlin规定所有的接口属性和函数实现都要使用override关键字,接口中定义的函数并不需要open关键字修饰,他们默认就是open的代码展示:packagecom.wustyq.kotlinstudyinterfaceMovablevarmaxSpeed:Intvarwheels:Intfunmove(movabl... 查看详情

快速上手kotlin开发系列之集合操作符

本节通过RxJava的集合操作引入Kotlin的集合操作符。如果大家有用过RxJava一定对操作符的概念并不陌生,RxJava允许我们对数据做一系列的链式调用,在每一步中改变数据的格式,最终得到我们想要的数据。Kotlin中原生的... 查看详情

快速上手kotlin开发系列之作用域函数(代码片段)

本节介绍Kotlin中的作用域函数。作用域函数是什么作用域函数是Kotlin内置的可以对数据做一系列变换的函数。它们与集合的操作符非常的相似,但是集合的操作符只能用于集合的数据变换,而作用域函数可以应用于所有... 查看详情

快速上手kotlin开发系列之解构(代码片段)

本节介绍Kotlin中特殊的数据拆箱方式:解构。解构在Kotlin中允许直接将一个类拆解之后并分别赋值,就像示例中的User对象一样,可以赋值给一个拆解开的age和name变量。解构的格式固定,val/var括号后的第一个值与U... 查看详情

快速上手kotlin开发系列之什么是协程(代码片段)

...巨人的肩膀上做个笔记,摘录自:https://kaixue.io/kotlin-coroutines-1协程是什么协程的概念并没有官方的或者统一的定义,协程原本是一个跟线程非常类似的用于处理多任务的概念,是一种编程思想,并不局限于特... 查看详情

快速上手kotlin开发系列之协程的挂起(代码片段)

...巨人的肩膀上做个笔记,摘录自:https://kaixue.io/kotlin-coroutines-2前言上一节中我们提到了下面的示例,它使用了async关键字来创建一个协程。launch(Dispatchers.Main)valavatar=asyncgetAvatar()//获取用户头像vallogo=asyncgetLogo() 查看详情

快速上手kotlin接口抽象类及泛型(代码片段)

接口定义    kotlin规定所有的接口属性和函数实现都要使用override关键字,接口中定义的函数并不需要open关键字修饰,他们默认就是open的代码展示:packagecom.wustyq.kotlinstudyinterfaceMovablevarmaxSpeed:Intvarwheels:Intfunmove(movabl... 查看详情

快速书写常见的kotlin代码

这篇文章主要是写给需要快速上手Kotlin的Java程序员看的,这时候他们关注的是如何使用 Kotlin写出类似某些Java的写法,所以本文基本不涉及Kotlin的高级特性。1.如何定义变量Java定义变量的写法:Stringstring="Hello"; 1Stringstring... 查看详情

kotlin资源大全-学kotlin看这一篇教程就够了

...要做这个?今天凌晨的GoogleI/O上,Google正式宣布官方支持Kotlin.为了让大家更快了解和上手Kotlin,这里为大家整理了这份Kotlin资源大全,希望可以帮助大家用最短时间学习Kotlin.官网及文档Kotlin官网Kotlin文档Kotlin中文文档KotlinonGitHu... 查看详情

字节内部超全kotlin学习笔记,快速上手kotlin开发,基础+实战+源码,手把手带你吃透kotlin语法与协程。(代码片段)

...0个应用程序中有80%以上使用Kotlin。这也意味着,对于Android应用开发者来说,仅仅掌握Java是不够的,你还应该学习Kotlin,才能追上技术发展趋势,在工作中更加游刃有余。高效掌握Kotlin的方法Kotlin是门典型的... 查看详情

如何快速上手jetpack?jetpack入门到精通再到(网易云)强化实战,github已标星80k+,爆了爆了!

...经快接近尾声,相信有不少读者正在抓紧机会面试。Android市场已今非昔比。在过去,迫于招人的压力,应试者只需了解四大组件、视图、网络请求,即可谋得一份满意的工作。现如今面向标准化开发已成现实࿰... 查看详情

arduino定时器&中断的使用和快速上手(代码片段)

Catalogue1.Intro2.什么是中断?3.中断快速上手4.什么是定时器?5.定时器快速上手5.1MsTimer25.2TimerOne6.注意事项7.总结8.References1.Intro定时器和中断都是单片机中的重要的功能,使用中断功能可以完成很多更加复杂的控制࿰... 查看详情

hyperledgerfabric快速上手

安装gocurl-Ohttps://storage.googleapis.com/golang/go1.8.linux-amd64.tar.gztar-xvfgo1.8.linux-amd64.tar.gz&&mvgo/usr/localyuminstall-ylibsnappy-devzlib1g-devlibbz2-devlibltdl-devlibtoolglibc-stat 查看详情

快速上手kotlin开发系列之操作符(代码片段)

...了方便理解,我们把作用域函数和集合操作符统称为Kotlin的操作符。操作符的实现原理作用域函数与集合操作符的原理是完全一致的,这里以集合操作符作为一个例子来看整个作用域函数和集合操作符的运行原理。来看... 查看详情

作为一个c#程序员,你应该上手kotlin

 Kotlin最近火了,在GoogleIO大会Kotlin宣布Kotlin将会成为Android官方开发语言之后,Kotlin这样一个JVM上的新*(其实从诞生到现在已经有5年历史的)语言.终于出现在程序员的视野里,成为一门成熟的热门的语言. 对于大多数C#程序员来... 查看详情

快速上手kotlin开发系列之协程的挂起(代码片段)

...巨人的肩膀上做个笔记,摘录自:https://kaixue.io/kotlin-coroutines-2前言上一节中我们提到了下面的示例,它使用了async关键字来创建一个协程。launch(Dispatchers.Main)valavatar=asyncgetAvatar()//获取用户头像vallogo=asyncgetLogo()//... 查看详情