当前位置: 首页 > 面试题库 >

Kotlin数据类型是基于原始Java数据类型还是非原始Java数据类型构建的?

顾正初
2023-03-14
问题内容

我是Kotlin的新手,正在玩数据类型。我选择了一个Int类型,然后尝试Double通过说来将其强制转换为a num as Double,这在Java中是有效的(从语法上讲,但这是正确的)。但是,此操作失败,表示无法将Int强制转换为Double。我假设这是因为它是基于Integer类而不是原始的int数据类型构建的。我是正确的,最有价值的方法是什么?有一个.toDouble()功能,但这似乎效率低下且笨拙。


问题答案:

我花了一个Int类型,然后试图将它转换为Doublenum as Double<…>但是这并没有,他说,诚信不能转换为Double。我假设这是因为它是基于Integer类而不是原始int数据类型构建的。

不,有两点需要注意:

  • 科特林定位其数值类型(IntLongDouble等等)为不相互嵌套,有 没有 这些类型之间的子类型关系。这就是为什么演员intNum as Double在Kotlin不能成功的原因。这就是为什么这些类型之间没有隐式转换的原因。而是使用相应的函数(例如.toDouble())完成数字转换

  • 在可能的情况下,将Kotlin中的数字类型用法编译为JVM原语。某些用法需要装箱的类型(例如,可为空的Int?需要装箱,使用Intas作为类型参数的泛型类型实现也需要装箱),但是编译器会确定每种情况下它们是否必需。

<…>转换值的最有效方法是什么?有一个.toDouble()功能,但这似乎效率低下且笨拙。

最有效的方法是使用数字转换功能,例如.toDouble()。实际上,这些函数是 本能的
,使用它们时没有函数调用开销。它们与javac为Java数字转换或隐式转换所产生的结果紧密编译。您可以检查编译器生成[的字节码,以了解其底层内容,以及特定的转换是否会带来任何开销。



 类似资料:
  • 我是科特林的新手,我在玩数据类型。我取了一个<code>Int</code>类型,然后尝试将其转换为<code>Double</code>,将<code>num表示为Double>/code,这是一个在java中有效的调用(非语法上,但你明白了)。然而,这失败了,表示Int不能强制转换为Double。我假设这是因为它是基于Integer类而不是原始int数据类型构建的。我说得对吗?什么是最有效的价

  • 问题:我无法存储号码“600851475143”。我意识到这个数字比int所能容纳的要大,比最大long值要小。然而,我的程序没有把变量“number”注册成一个long,而是注册成一个int。有人能解释一下这个问题吗? **-问题线 } 解决方案:正如吉姆在下面所说,为了长型,必须在数字末尾加上“L”或“L”。“如果整数文字以字母L或L结尾,则为long类型;否则为int类型。建议使用大写字母L

  • 问题内容: 在Java中,我们可以直接用于声明字符串变量名称并指定其值。即使String是非原始数据类型,也不必通过使用new关键字将字符串定义为数组。 有人可以解释为什么String是非原始数据类型吗? 问题答案: 这是字符串文字。像这样声明字符串时,实际上是在String上调用intern()方法。此方法引用内部字符串对象池。如果已经存在一个字符串值“ This is stringlitera

  • 是否可以只使用一行代码就将输入变量的数据类型(可以是任何基元类型,int、bool、float、double)作为字符串返回?我知道对于字符串类型,使用和可以很容易地做到这一点,但我不确定如何使用这些方法返回基元类型的类型。我还想保持我的代码非常简短,最好只用一行。 我到处找了找,找不到任何地方,这个问题已经以我要求的方式得到了回答。

  • 问题内容: Java中的原始数据类型是否像&线程安全的?我执行了以下代码,但有时无法看到500的预期结果。 在这里,并发500个线程将更新int变量。等待并发更新完成后的主线程输出值。 在这里找到类似的例子 问题答案: 不安全的三种方式: 并且甚至不保证会自动进行更新(您可能会看到来自不同线程的写入的一半) 内存模型不能保证您会看到一个线程在另一个线程中的最新更新,而没有某种额外的内存障碍 无论如

  • 我正在学习Java我有一些不清楚的事情,如果有人能帮忙,我将非常高兴。 第一个问题 int的近似值为:2.147.483647 long的近似值为:9223372036854775807 这个网站说: “如果整型文字以字母L或L结尾,则为long类型;否则为int类型” 这意味着如果我没有在变量名的末尾添加字母L/l 例如: 所以变量被认为是类型而不是长类型。 所以我做了这个节目: 这是输出: i