首页 > 编程知识 正文

js定义对象数组,对象转化为数组

时间:2023-05-06 20:43:19 阅读:106319 作者:3973

kotlin定义对象数组

我最初打算写这篇文章是因为我在玩反光码,觉得自己找到了有趣的东西。 洛杉矶,绝对不是。 相反,它是Kotlin的基本功能,不需要使用或关注。 这篇文章没有表明我希望的样子,但我还是觉得这是一篇可以让这个主题更清晰的好的小文章。

Java具有基本类型及其包版本的概念。 由于是自动装箱和开箱,因此可以在原始版本和装箱版本之间交换类型。 这意味着在大多数情况下,可以使用long代替long,也可以使用long代替long。 如果我不知道最后一句的大写字母在哪里,我想它可能看起来很混乱。 这句话中的措辞也很重要。 更具体地说,声明“大多数情况下”。

如果交换与原始数组包装的(Object )数组,自动装箱和拆包将不起作用。 例如,

publicclassprimitivearrays { publicstaticvoidmain (string args (} (long ) ) longarray=newlong () 1L、2L、3L}; takesinprimitivelongarray; } staticvoidtakesinprimitivelongarray (long [ ] array ) }此操作不起作用,并且在尝试编译时会出现以下错误:

error :不兼容类型: long [ ] cannotbeconvertedtolong [ ] takesinprimitivelongarray (long array; 出于同样的原因,如果将方法切换到Long[]并传递给Long[],编译将失败。 虽然这不是大多数Java开发人员感兴趣的东西,但它有助于为本文的实际内容奠定基础。

Kotlin必须提供与Java原始数组同等的功能。 但是,在Kotlin中不能使用与Java相同的语法定义数组。 在Kotlin中,初始化数组如下所示:

valArray=arraylong(3)/or valarray : array long=array of ) 1、2、3 )强调了array使用通用型的事实不是原始数组在Java和Kotlin中,这是事实。 这意味着泛型类型不是基元。 否则,能切换到Arraylong,我们很高兴。 上面的代码将被编译为Long[]的对象数组,而不是原始Long[]。

这种情况在阵列上是独特的。 单个Kotlin Long可以编译为JVM字节码的Long或Long。 编译的类型取决于字段的可空性。 数组更明确,因此在编译时类型不会改变。

为了避免这种情况,Kotlin允许您选择在向下编译为JVM字节码时将成为原始数组的类。

这些培训班包括:

Kotlin Java字节数组字节[]字符数组字符[]短数组短[]整数数组int []长数组长[]双数组双[]浮动数组浮动[]布尔型[]无符号类型数组包含

这些类也可以在Kotlin和Java之间交换,不需要额外的努力。

作为最后的证据,我将向您展示转换为支持Java的代码的Kotlin的原始数组和包装器/对象数组之间的差异。

字节数组使用Intellij的Kotlin字节码逆编译器。 此代码段按以下方式进行反编译:

字节数组首先,请记住Kotlin为阵列提供了方便的初始化功能。 对于原始数组和对象数组。 接下来,它们是如何编译的? 例如,LongArray为long[],而ArrayLong为long[]。

这样就可以知道这些数组的区别了。 但是,没有提到应该利用哪一个。 必须像Java一样使用基本类型。 这是因为自动装箱和开箱会影响APP应用程序的性能。

如果工作负载很小,结果可能很微不足道。 另一方面,对于性能至关重要的APP应用程序中的大型阵列,这一点小小的更改可能会产生巨大的影响。 有关此主题的详细信息,请参阅此处。

如果需要在数组中存储null值,则必须重新引用包裹/对象数组。 在大多数情况下,我认为应该可以使用原始数组,但是经常不能使用原始数组。 尽管如此,大多数情况下我们只使用List,所以这些都不重要。

现在,您可以更好地了解LongArray类的原始数组与ArrayLong类的对象数组之间的差异。 如果没有,我让你失败了。 关于那个我很抱歉。

翻译自:https://www.Java code geeks.com/2019/07/kot Lin-primitive-object-arrays.html

kotlin定义对象数组

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。