我在这里指的是实际的java编译器实现:
我猜堆栈是作为C结构实现的,但我真正的意思是:
java如何用这种结构计算?例如,如果一个局部变量是字符串或指针类型,而另一个是双精度或整数,而java需要对这些变量进行操作,说两者相加,它是否先将两者转换为相同类型,然后再相加,并返回值?
会或多或少是这样的:
struct var {
dataType type;
union{
char c;
int i;
double d;
void *p;
} value;
}
其中 dataType 是一些数据类型的枚举。
例如:假设变量 A 是一个 double,变量 B 是一个 int,而 C 又是一个 double。
C = A + B 的字节码是如何生成的?虚拟机如何处理这些不同的数据类型?