java 变量数据类型转换?byte, short, char, int, long, float, double

float = 3.5 因为浮点型常量是double ,所以要写成(float)3.5 但是 byte b = 3; 3是int类型的 为什么可以呀?
byte b1 = 3; byte b2 = 4; byte b = b1-b2;报错的?那我定义的b1,b2不是没意义?
char c1 = 'c'; char c2 = 23;23是int类型?它们默认排序不是这样么?
byte, short, char, int, long, float, double

简单数据类型之间的转换
在Java中整型、实型、字符型被视为简单数据类型,这些类型由低级到高级分别为(byte,short,char)--int--long--float--double

自动类型转换
低级变量可以直接转换为高级变量,笔者称之为自动类型转换,例如,下面的语句可以在Java中直接通过:
byte b;
int i=b;
long l=b;
float f=b;
double d=b;
如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如r
char c='c';
int i=c;
System.out.println("output:" i);
输出:output:99;
对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。
short i=99;char c=(char)i;System.out.println("output:" c);
public class TestBasicTypeConvert {
static void prt(String s) {
System.out.println(s);
}
void f1(long x) { prt("f1(long)"); }
void f1(float x) { prt("f1(float)"); }
void f1(double x) { prt("f1(double)"); }
public static void main(String [] args){
TestBasicTypeConvert tbConvert=new TestBasicTypeConvert();
tbConvert.f1(1);
}

}
//f1(long)

高转低则要强转
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-12
byte b1 = 3; byte b2 = 4; byte b = b1-b2这个之所以报错,是因为在进行b1-b2的运算时,会自动将b1和b2提升成int型,所以最后结果也是int型,需要进行强制装换,才能赋值给byte型变量

默认排序你似乎有点搞错,应该是byte,char,short,int,long,float,double本回答被网友采纳
相似回答