java3——数据类型转换

基本数据类型转换

在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
        这些类型参与到运算表达式中去的时候,整个运算式按照级别最高的进行计算。
        其余的要转化成为最高类型的计算。

强制转换可以让高精度类型强行转换为低精度,但是会丢失一部分数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值