java3——数据类型转换

来源:互联网 发布:方媛 淘宝店 编辑:程序博客网 时间:2024/06/05 15:41

基本数据类型转换

在8种基本数据类型中,布尔型是不可以和其他数据类型进行运算的,所以这里不对布尔型进行试验。在之前的博文中说过,java是一门强类型的语言。所谓的强类型就是指java语言对数据类型要求严格,不同类型数据不可以进行运算。但是试想一下,默认的int类型,比如5,和一个double类型的3.3进行相加运算,如果不被允许就有些天理难容了。那么一定存在一种规律,让不同类型之间可以互相转换然后进行运算,通过一些代码来总结出规律!

byte,shor,char

public class TestVar6 {        public static void main(String args[]) {                byte b1=111-33;//注意右侧的赋值,是两个默认的int计算结果                System.out.println(b1);//78                /*                byte b2=127+1;                byte类型的表数范围是-128~127                这里会报错,同样也是两个int相加赋值,但是超出了byte类型的表数范围                */                short sh1=33333-3333;                System.out.println(sh1);//30000                /*                short类型的表数范围为正负30000                运算方式与byte类型基本一致,只需要注意表数范围                */                int num1=88+'a';                System.out.println(num1);//185,'a'=97;这里的char类型'a'在Unicode编码表中对应的就是97.                 char ch1='a'+88;                System.out.println(ch1);//i                /*                byte、short、char这三种类型比较特殊,在运算中,都是以int的方式出现,只要不超出他们的表数范围,会自动转换成int类型进行计算                */    }}

int,long,double,float

public class TestVar6 {        public static void main(String args[]) {            long l1=900000+'a'+3;            System.out.println(l1);//900100;            double d1=3.2+2+'a'+90L;            System.out.println(d1);//192.2            float f1=3.2f+2+'a'+90L;            System.out.println(f1);//192.2            /*            一些报错的情况:            int i=3.3+5;  //这里不能把double类型赋值给int            float f2=44.4+3.5f; //double + float的结果为double,不可以赋值给float类型            long l2=3.3f+3.4f;            long l3=5.5+5.4;  //long类型不可以接收float和double            */        }}

强制转换

如果想让一个int类型变量强行去接收一个double数据,或者说让一个低精度类型变量接收一个高精度类型的值,需要怎么做呢?看一段代码:

public class test{        public static void main(String args[]){                double d=8.8;                int i=(int)(d+1);//强制转换                System.out.println(i);//输出了9        }}

发生了什么? 8.8+1=9? ~这就是强制转换的弊端。在运算的过程中,由于高精度数据强行转换成了低精度,导致精度丢失,最后的结果就不会像我们想象的那么准确了。

结论:

在运算中,有一个由低到高的等级:        byte,short,char----->int---->long ----->float---->double        这些类型参与到运算表达式中去的时候,整个运算式按照级别最高的进行计算。        其余的要转化成为最高类型的计算。强制转换可以让高精度类型强行转换为低精度,但是会丢失一部分数据。
原创粉丝点击