您的位置:首页 > 编程语言 > Java开发

java基础之数据类型的转换

2015-08-29 17:33 519 查看
前言:即将进入大四,内心不免感到有点心慌,但所幸我已然找到自己感兴趣也愿意为之不断努力的事。经过一段时间对一些技术网站的浏览,发现网络真的是个很神奇的东西,很多技术问题均能在网络上找到答案,看着很多技术大牛们都有写博客的习惯,突然兴致一来,也想记录自己对Java学习的过程,写写博客,但发现CSDN中写博客竟然需要审核,而且还不能够预览,实在是感到麻烦,转而发现QQ中的日志功能强大,完全能够满足自己的需求,故而就在此开始我的技术学习之路,以便将来复习所用。

在此我只对byte,short,char,long,int,float,double这几种数据类型进行讨论。

隐形转换规则(容量小的可以自动转换为容量大的,容量大的转换为容量小的需要强制转换):

(1)char,short,byte->int->long->float->double

(2)byte,short,char之间不会互相转换,它们在运算时自动转换为int类型

直接上代码:

public class TestConvert {
public static void main(String args[]){

int i1=23;
int i2=34;
float f1=i1+i2;//int类型变量自动转换为float型变量
float f2=(float)((i1+i2)*1.2);//浮点型编译器默认double型,需加强制转换符
double d1=123.23;

System.out.println("f1="+f1+","+"f2="+f2+","+"d1="+d1);

byte b1=1;
byte b2=2;
byte b3=(byte)(b1+b2);//byte,short,char型变量运算时自动转换为int型,需加强制转换符

System.out.println("b3="+b3);

double d2=10e200;
//System.out.println("d2="+d2);
float f=(float)d2; //产生溢出
System.out.println("f="+f);

long l1=1000L;
long l2=100L;
float f3=123.2f;//必须加上f
float f4=l1+l2+f3;//系统将转换为float型进行计算
long l=(long)f4;//强制转换会省去小数部分,不是四舍五入,是直接去掉小数部分
System.out.println("f3="+f3+","+"f4="+f4+","+"l="+l);

}
}

下面结合一道改错题进行说明,在此只写一些关键代码:

public static void main(String args[]){

int i=1,j;
float f1=0.1,f2=123;//f1出错,0.1被认为是double型,转float型需强制转换
long l1=12345678,l2=8888888888888;//l2出错,超出int类型容量,必须加上L
double d1=2e20,d2=124;
byte b1=2,b2=1,b3=129;//b3出错,byte最大容量127,超过需强制转换
j=j+10;//出错,j未初始化
i=i/10;
i=i*0.1;//出错,0.1是double类型,需强制转换
char c1='a',c2=125;
byte b=b1-b2;//出错,b1-b2为int类型,需强制转换
char c=c1+c2-1;//出错,int类型赋值给char类型需强制转换
float f3=f1+f2;
float f4=f1+f2*0.1;//出错,0.1为double类型,需强制转换
double d=d1*i+j;
float f=(float)(d1*5+d2);

}

解释说明已经跟在代码后面的注释里,下面给出修正后的代码:

public static void main(String args[]){

int i=1,j=1;
float f1=0.1f,f2=123;
long l1=12345678,l2=8888888888888L;
double d1=2e20,d2=124;
byte b1=2,b2=1,b3=(byte)129;
j=j+10;
i=i/10;
i=(int)(i*0.1);
char c1='a',c2=125;
byte b=(byte)(b1-b2);
char c=(char)(c1+c2-1);
float f3=f1+f2;
float f4=(float)(f1+f2*0.1);
double d=d1*i+j;
float f=(float)(d1*5+d2);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: