java 中转换和加载的区别?
Difference between converting and loading in java?
我有一个关于在 java 中转换和加载的问题。如果你使用例如long='A'
。 Java https://docs.oracle.com/javase/specs/jvms/se16/html/jvms-6.html 处的虚拟机规范将此指定为转换。这里 char
被转换为 long
.
但是,如果一个值在变量或数组中,那么 Java 不再是转换,而是加载。这里它说然后加载数组值而不是转换。我之前也知道,如果一个人使用另一种数据类型的变量,这个变量不会被转换,但是通过中间步骤它的信息被获取并且它的信息被转换,而不是变量。 Java 此处描述的转换和加载之间到底有什么区别:https://docs.oracle.com/javase/specs/jvms/se16/html/jvms-6.html?
转换的 JVMS 用法
JVMS 使用负载
转换将值从一种类型更改为另一种类型。
正如 d2f
指令的文档所述,堆栈顶部的双精度值被转换为浮点数并作为浮点数推回堆栈。
加载是将相同类型的值从一个地方移动到另一个地方,而不对该值进行任何更改。
你说的是 JVM 指令,Java 就是编译成的指令。
Java 根据需要进行转换,例如:
double d = 1.0;
float f = (float)d;
将导致从 double 到 float 的转换,大概是使用上面的 d2f
指令实现的。
double[] a = new double[5];
double d = a[0];
将从数组中的单元格中加载一个值到变量 d,但不会发生任何转换。
float f = (float)a[0];
将执行转换。
我有一个关于在 java 中转换和加载的问题。如果你使用例如long='A'
。 Java https://docs.oracle.com/javase/specs/jvms/se16/html/jvms-6.html 处的虚拟机规范将此指定为转换。这里 char
被转换为 long
.
但是,如果一个值在变量或数组中,那么 Java 不再是转换,而是加载。这里它说然后加载数组值而不是转换。我之前也知道,如果一个人使用另一种数据类型的变量,这个变量不会被转换,但是通过中间步骤它的信息被获取并且它的信息被转换,而不是变量。 Java 此处描述的转换和加载之间到底有什么区别:https://docs.oracle.com/javase/specs/jvms/se16/html/jvms-6.html?
转换的 JVMS 用法
JVMS 使用负载
转换将值从一种类型更改为另一种类型。
正如 d2f
指令的文档所述,堆栈顶部的双精度值被转换为浮点数并作为浮点数推回堆栈。
加载是将相同类型的值从一个地方移动到另一个地方,而不对该值进行任何更改。
你说的是 JVM 指令,Java 就是编译成的指令。
Java 根据需要进行转换,例如:
double d = 1.0;
float f = (float)d;
将导致从 double 到 float 的转换,大概是使用上面的 d2f
指令实现的。
double[] a = new double[5];
double d = a[0];
将从数组中的单元格中加载一个值到变量 d,但不会发生任何转换。
float f = (float)a[0];
将执行转换。