日期:2014-05-20  浏览次数:20662 次

基本数据类型转换的几个小问题
希望大家不吝赐教~~

1、我知道short+int时要把short变成int才行,但是呢,下面这个的结果为何是int?

Java code


byte b = 1;
char c = 'A';

// b+c  这个是int型




我想是不是因为char是无符号的?为了绕开符号位只能再往上提高一级?

2、这个也转型?
Java code


byte b = 1;

// b = b+b; b+b是int型。。




3、byte转char时为何要先将byte转成int?

这几个问题实在搞不定了,跪地360度求解。。。

------解决方案--------------------
在JVM中 byte,short,char,int 类型的数值都是以整数形式存储的。
比如这段代码:
Java code

    byte b = 1;
    char c = 1;
    short s = 1;
    int i = 1;

------解决方案--------------------
JVM指令关于两数相加只有 iadd(int相加), ladd(long相加), fadd(flaot相加), dadd(double相加)再没其他的了,加减乘除都一样