话不多说,看图!!!

 

 

 其实运行结果还不太清晰,再看图

 

 

 第一次打印 是 char 类型的 e ,对应(C);

 第二次打印 是 int 类型的 101,对应(I);

 第三次打印 是 long 类型的 101,对应(J).

 

此时就验证了一些理论:
自动类型转换也叫隐式类型转换

表达式的数据类型自动提升

所有的byte型、short型和char的值将被提升到int型。

如果一个操作数是long型,计算结果就是long型;

如果一个操作数是float型,计算结果就是float型;

如果一个操作数是double型,计算结果就是double型。

 

 详见 《java虚拟机规范》

表 2.3 Java 虚拟机指令集所支持的数据类型
实际类型 运算类型 分类
boolean int 分类一
byte int 分类一
char int 分类一
short int 分类一
int int 分类一
float float 分类一
reference reference 分类一
returnAddress returnAddress 分类一
long long 分类二
double double 分类二
有部分对操作栈进行操作的 Java 虚拟机指令(例如 pop 和 swap 指令)是与具体类型无关
的,不过这些指令也必须受到运算类型分类的限制,这些分类也在表 2.3 中列出了。

 

表 4.2 基本类型字符解释表
字符 类型 含义
B byte 有符号字节型数
C char Unicode 字符,UTF-16 编码
D double 双精度浮点数
F float 单精度浮点数
I int 整型数
J long 长整数
S short 有符号短整数
Z boolean 布尔值 true/false
L Classname; reference 一个名为<Classname>的实例
[ reference 一个一维数组
举个例子:描述 int 实例变量的描述符是“I”;java.lang.Object 的实例描述符是“Ljava/lang/Object;”。注意,这里用到了类 Object 的二进制名的内部形式(此处是内部形式)。double 的三维数组“double d[][][];”的描述符为“[[[D”。 

 

 

 详见 《java虚拟机规范》