我是Kotlin的新手,正在玩数据类型。我选择了一个Int
类型,然后尝试Double
通过说来将其强制转换为a num as Double
,这在Java中是有效的(从语法上讲,但这是正确的)。但是,此操作失败,表示无法将Int强制转换为Double。我假设这是因为它是基于Integer类而不是原始的int数据类型构建的。我是正确的,最有价值的方法是什么?有一个.toDouble()
功能,但这似乎效率低下且笨拙。
我花了一个
Int
类型,然后试图将它转换为Double
说num as Double
<…>但是这并没有,他说,诚信不能转换为Double
。我假设这是因为它是基于Integer
类而不是原始int
数据类型构建的。
不,有两点需要注意:
科特林定位其数值类型(Int
,Long
,Double
等等)为不相互嵌套,有 没有 这些类型之间的子类型关系。这就是为什么演员intNum as Double
在Kotlin不能成功的原因。这就是为什么这些类型之间没有隐式转换的原因。而是使用相应的函数(例如.toDouble()
)完成数字转换
在可能的情况下,将Kotlin中的数字类型用法编译为JVM原语。某些用法需要装箱的类型(例如,可为空的Int?
需要装箱,使用Int
as作为类型参数的泛型类型实现也需要装箱),但是编译器会确定每种情况下它们是否必需。
<…>转换值的最有效方法是什么?有一个
.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