iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android 安卓开发语言kotlin与Java该如何选择
  • 160
分享到

Android 安卓开发语言kotlin与Java该如何选择

androidkotlinjava 2023-09-10 14:09:10 160人浏览 安东尼
摘要

一、介绍         如今在Android开发中,应用层开发语言主要是Java和Kotlin,Kotlin是后来加入的,主导的语言还是Java。kotlin的加入仿佛让会kotlin语言的开发者更屌一些,其实不然。         有人

一、介绍

        如今在Android开发中,应用层开发语言主要是Java和Kotlin,Kotlin是后来加入的,主导的语言还是Java。kotlin的加入仿佛让会kotlin语言的开发者更屌一些,其实不然。

        有人说kotlin的引入是解决开发者复杂的逻辑,并且对空指针控制的比较友好,但是我们在开发过程中会发现,好像并不是这么回事,甚至有些开发者发现,在使用过程中会出现莫名其妙的错误,而且还不好定位。

        这时候,我们应该去分析,kotlin适不适合自己,自己能不能驾驭?

二、分析Java与kotlin实战中的利与弊

        学过政治都知道,任何东西都是一把双刃剑,既有好的一面也有不好的一面。不能什么都照搬过来。kotlin的好是建立在你已很好的掌握,但是不好的是你如果只会基础,在使用过程中,无法避免一些异常情况。但是Java的友好是适合新手使用,普及度高。

kotlin的弊端与分析

1、参数为null

参数为null这种很容易引起空指针,为什么会出现这种情况?是受Java的写法有关系

Java:

public void log(String txt)

Kotlin:

public fun log(txt:String)

正常Java你是可以传null进去,但是在kotlin,你传null就会报错

 分析:

Java中,你参数可以传任何,你传null也是没问题,但是你在kotlin中,就没有这么随意了,这是为什么呢?

 在kotlin中,任何参数都会被修饰,为空或者不为空,默认是NotNull。如果你不能传递null值过去。

如何避免?

只要我们是通过kotlin语法,你在任何参数申明都需要设置成为可为null

public fun log(txt:String?)

这个时候,在参数中,已变成可为null。

2、lateinit 报错未初始化先使用

        lateinit 是稍后初始化,这个只能做全局,不能出现在方法体,但是也有个问题。如果你用lateinit 修饰一个变量,那么这个变量可以不先申明变量值,等使用时再初始化。

但是这个也会出现一个问题,如果你没初始化就使用会报错

    lateinit var txt: String    public fun log() {        println(txt)    }

        有人会说,我不能判空嘛?判空也不行。只要你使用之前就必须初始化,否则就会报错。这个问题在新手特别容易犯错。

        所以为什么这个关键字往往出现在修饰View的初始化使用比较多。这个在使用的时候进行判空,所以该字段默认为null,但是你使用必须要有值,只要你调用get方法就会触发。

思考:

有人会问,如果我直接修改变量的get方法,如果为null,那么get直接给他初始化。

 lateinit不允许修改set和get。

        但是Java就不会,Java是所见即所得,你的东西就是你的东西,kotlin是通过自己的语言限制,翻译成Java语言。所以,你不了解或者说不清楚目标类,很容易造成风险,并且这种bug被带到线上概率很大

3、参数类型强转"!!"导致null空指针

这种错误在方法调用很容易出现,而且这种BUG的概率非常高,导致项目质量很差。

public fun log(txt:String)

分析:

我们申请一个方法,参数不为null,在Java过程中,这种你不需要管,直接调用,一般对null的判断会在方法体中进行

Java:

public void log(String txt){

if(txt!=null){}

}

但是你在kotlin中,只能在调用处进行判断,否则就要将参数通过强制表示不为null,"!!"

我们在项目中进程遇到log(msg!!)这种错误的写法,这种写法,如果你的实参申请可以为null,但是形参不能为null,这个时候你只能通过"!!"来强转,但是:你的实参如果为null,这个时候就会报空指针,这是为什么?

这是因为你的实参在调用时已进行强制转换,也会提前进行空指针异常检查,所以在使用 "!!"强转符号时,一定要判空,否则会报错,但是Java中,我们随便传null。

4.形参为Val修饰的常量,无法修改

在kotlin中,形参是传值类型,你是无法直接修改变量,必须通过其他变量接收完再修改

 默认是Val类型
    public fun addOne(item:Int):Int{     val  relVal=item+1        return relVal    }

5.默认为null的变量引用

默认值为null,如果变量已申请为这种,那么你以后的使用将离不开"?"和"!!"转换。

var temp:String?=null

这种区分全局和局部

1、全局:

如果是全局,对于IDE来说,任何时刻都有可能是null,所以在方法中使用,默认当成null来处理

 所以,你即使判空,还是不行。需要一辈子跟着"?"和"!!"搭配使用。

2、局部:

如果是局部,只要你在使用之前判断过一次,在合理的校验范围内都是有效

    public fun log(mm:String) {        var txt:String?=null        if (txt==null)            return        txt.length    }

就是这种有起义的原因,导致在实战中,很多人很难理解

三、总结

        通过kotlin的自身问题,其实kotlin就是一种插件语言,最终还是翻译成Java,只是目前来看,通过翻译的目标类,还是Java本身,但是增加了特别多的校验,导致写法和Java有很大的不同。这种不同来自我们的习惯问题。有人提前判空,有人喜欢丢在使用出判空,调用处让语法自然一些。

        Android应用不像PC,空指针是致命的BUG,出现一个就会导致崩溃。所以,kotlin对空指针校验特别严格,也对使用埋下了隐患,新手可以绕开校验,但是对于绕开的原理不够理解,就会引起崩溃。

        kotlin也不是一无是处,他更像是一个插件,插件的好处是自然的,可扩展等也是kotlin的自身优势。

        所以,通过上面的分析,大家可以自行去选择项目中的语言,是kotlin还是Java,如果你向往kotlin的写法,那么就得去了解kotlin的原理,以及要改变自己在Java中的开发习惯。kotlin是先判断后使用,而Java写法很随意,由开发者自行定义,kotlin都是翻译好的。

最后,用好可以事半功倍,用不好,会引起各种不好排查的BUG。最后送一句话:水能载舟亦能覆舟。

来源地址:https://blog.csdn.net/qq36246172/article/details/131374587

--结束END--

本文标题: Android 安卓开发语言kotlin与Java该如何选择

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

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

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

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

下载Word文档
猜你喜欢
  • Android 安卓开发语言kotlin与Java该如何选择
    一、介绍         如今在Android开发中,应用层开发语言主要是Java和Kotlin,Kotlin是后来加入的,主导的语言还是Java。kotlin的加入仿佛让会kotlin语言的开发者更屌一些,其实不然。         有人...
    99+
    2023-09-10
    android kotlin java
  • 新手应该如何选择c语言和java
    这篇文章主要介绍新手应该如何选择c语言和java,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式编译、处理低级...
    99+
    2023-06-14
  • Android Studio默认使用Kotlin语言创建新项目的原因及如何选择Java语言
    Android Studio默认使用Kotlin语言创建新项目的原因及如何选择Java语言 在创建新的Android项目时,你可能会注意到Android Studio默认选中了Kotlin作为项目的主...
    99+
    2023-09-15
    java android studio kotlin Android
  • 如何选择Go语言作为开发工具
    标题:如何选择Go语言作为开发工具,需要具体代码示例 随着软件开发行业的迅速发展,选择一种适合自己的开发工具变得尤为重要。Go语言作为一种开源、高效、简洁的编程语言,越来越受到开发者们...
    99+
    2024-02-22
    开发工具 编程关键词 选择go语言 go语言 网络编程 标准库
  • Go 语言开发安卓应用的优势与挑战
    go语言为android开发提供了优势,包括并发性、高效性和易用性。但它也面临着挑战,如生态系统有限、调试困难和缺乏原生支持。开发人员应权衡这些优缺点,以确定go语言是否适合他们的项目。...
    99+
    2024-04-03
    安卓 go语言
  • Java开发技术与Django框架:如何选择?
    Java和Django都是非常流行的编程语言和框架,它们各自都有自己的优缺点。当你需要选择一种适合你的开发技术时,你应该考虑自己的需求和技能水平,然后比较这两种技术,从而做出最佳选择。 Java是一种面向对象的编程语言,它可以应用于各种不同...
    99+
    2023-11-02
    开发技术 框架 django
  • 如何选择适合自己的网站开发语言
    如何选择适合自己的网站开发语言?无论是创建个人博客还是开发复杂的电子商务平台,选择适合自己的网站开发语言是至关重要的一步。不同的开发语言拥有不同的优势和特点,因此在决定使用哪种语言之前,你应该考虑以下几个因素: 1. 目标:你需要确定你的...
    99+
    2024-01-24
    网站开发语言 云服务器知识
  • GO语言开发技术,如何选择最佳框架?
    在GO语言开发中,选择合适的框架是非常重要的一步。因为好的框架可以大大提高开发效率,减少开发成本,并且可以让代码更加可维护和可扩展。但是在众多的框架中,如何选择最佳框架呢?本文将为大家介绍几个常用的GO语言框架,并根据实际应用场景分析其优...
    99+
    2023-07-09
    教程 开发技术 框架
  • android studio创建一个新的项目为什么默认是kotlin语言而选择不了java语言
    关于android studio语言选择的问题。 我在进入android studio为什么创建一个新项目之后选择不了java语言有什么办法可以解决。 解决办法:这个模式下选着一个Empty Activity模块就可以使用java语言。 这...
    99+
    2023-09-02
    android studio
  • Java开发中线程安全选择与Swing怎么用
    这篇文章将为大家详细讲解有关Java开发中线程安全选择与Swing怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Swing API的设计目标是强大、灵活和易用。特别地,我们希望能让程序员们方便地建立...
    99+
    2023-06-03
  • NPM VS Maven: Java开发者如何选择?
    随着Java的流行和发展,开发人员需要使用不同的构建工具来管理项目。 NPM和Maven都是流行的构建工具之一,但Java开发者该如何选择?在本文中,我们将探讨NPM和Maven的优缺点以及如何选择适合你的构建工具。 什么是NPM? NPM...
    99+
    2023-11-07
    npm 文件 二维码
  • Android开发如何解决安卓重复点击问题
    这篇文章主要介绍“Android开发如何解决安卓重复点击问题”,在日常操作中,相信很多人在Android开发如何解决安卓重复点击问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android开发如何解决安卓...
    99+
    2023-07-02
  • Go语言的IO库那么多纠结该如何选择
    在计算机和信息技术领域里 I/O 这个术语表示输入 / 输出 ( 英语:Input / Output ) ,通常指数据在存储器(内部和外部)或其他周边设备之间的输入和输出,是信息处理...
    99+
    2024-04-02
  • 硬件抽象编程该如何选择C语言及Rust
    今天给大家介绍一下硬件抽象编程该如何选择C语言及Rust。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。在 Rust 中使用类型级编程可以使硬件抽象更加安全。R...
    99+
    2023-06-16
  • 如何选择一个稳定可靠的Go语言开发环境?
    Go语言开发环境的稳定性 Go语言是一款编译型语言,这意味着它需要在运行之前进行编译。编译器将Go代码转换为机器代码,然后由操作系统执行。Go语言的编译器非常稳定,并且经过了多年的测试。因此,Go语言开发环境...
    99+
    2024-02-01
    版本 go语言 稳定性
  • Unix系统下的Go语言开发:如何选择最佳框架?
    在Unix系统下,Go语言已经成为了一种非常流行的编程语言。它以高效、安全、简洁的代码而著称,因此在开发网络应用程序和分布式系统时也备受青睐。然而,对于那些想要使用Go语言开发应用程序的开发者而言,如何选择最佳的框架可能是一个棘手的问题。...
    99+
    2023-08-02
    linux 框架 unix
  • 如何选择正确的Go语言IDE来提高开发效率
    提升开发效率,选择正确的Go语言IDE,需要具体代码示例 随着Go语言的快速发展和广泛应用,越来越多的开发者选择使用Go进行编程。而选择一个适合的集成开发环境(IDE)不仅可以提高开发效率,还可以简化开发过程...
    99+
    2024-01-23
    Go语言 开发效率 IDE选择
  • Linux 系统下 Python 自然语言处理库的选择:该如何抉择?
    在 Linux 系统下,Python 自然语言处理库的选择是一个不容忽视的问题。Python 作为一种高效、易学、易用的编程语言,已经成为自然语言处理的首选语言。选择一个合适的自然语言处理库,不仅能够提高我们的工作效率,还能够让我们更好地处...
    99+
    2023-08-10
    开发技术 自然语言处理 linux
  • Go语言和Django的API开发:如何在两者之间做出选择?
    随着互联网和移动互联网的快速发展,越来越多的企业和个人开始开发自己的应用程序,而API(应用程序接口)的开发已经成为了应用程序开发中不可或缺的一环。Go语言和Django都是非常流行的API开发语言,但是在选择两者之间的时候,我们应该如何...
    99+
    2023-07-23
    django api http
  • Android中如何在安卓上开发一个微笑抓拍神器
    这篇文章主要介绍“Android中如何在安卓上开发一个微笑抓拍神器”,在日常操作中,相信很多人在Android中如何在安卓上开发一个微笑抓拍神器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android中如...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作