博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3.4Java基本类型转换
阅读量:7242 次
发布时间:2019-06-29

本文共 2449 字,大约阅读时间需要 8 分钟。

hot3.png

1、基本类型自动转换

基本类型的自动转换是比较好理解的,就是值域小点往值域大的类型转换,这个过程中可以自动转换,

自动转换方式

byte----->short---->int----->long----->float------>double

             char--->

布尔类型不能转换

public class AutoTypeCasting {    public static void main(String[] args)     {        //声明所有基本变量        //byte        byte byteValue=56;        //short        short shortValue=666;        //int         int intValue=6666;        //long        long longValue=66666;        //float        float floatValue=66666.66f;        //double        double doubleValue=666666.6666;        //char        char charValue='a';        /*        1.首先由byte向上自动转换        */        //short        short shortValue1=byteValue;        //int         int intValue1=byteValue;        //long        long longValue1=byteValue;        //float        float floatValue1=byteValue;        //double        double doubleValue1=byteValue;        /*        2.首先由short向上自动转换        */        //int        int intValue2=shortValue;        //long        long longValue2=shortValue;        //float        float floatValue2=shortValue;        //double        double doubleValue2=shortValue;        /*        3.首先由int向上自动转换        */        //long        long longValue3=intValue;        //float        float floatValue3=intValue;        //double        double doubleValue3=intValue;        /*        4.首先由long向上自动转换        */        //float        float floatValue4=longValue;        //double        double doubleValue4=longValue;        /*        5.首先由float向上自动转换        */        //double        double doubleValue5=floatValue;        /*        6.首先由char向上自动转换        */        //int        int intValue6=charValue;        //long        long longValue6=charValue;        //float        float floatValue6=charValue;        //double        double doubleValue6=charValue;            }}

上面的类型在转换过程中不会出现任何的错误,都会自动转换,但是如果反过来转换就会报错,必须强制转换才行,并且会损失精度

2.强制类型转换

强制类型转换就是值域大的往值域小的类型转换,这个过程必须强制转换,并且转换过程中可能造成精度缺失,要慎重转换。

我们在前面说过整型默认是int型,浮点型默认是double型,然后就开始纠结了,默认是int型,那么我们声明

byte=88;

short=99;

float=100.01f;

为什么不报错呢,按理说88是整型赋值给比其值域小的类型要报错啊,但是没有报错。

这就涉及到Java的存储管理了,我们可以这么理解,声明变量的时候比如byte

首先会开辟一个byte类型的空间一个字节,即8位,然后将常量(字面量)放进这个空间,若超出范围就会报错,若不超出范围就不会报错。

当然也可以把每个基本类型变量比喻成大小不同的瓶子,往里面装水,只要水不超过瓶子口,即装的水的容量在瓶子容量范围之内,水就不会溢出。

至于超出其范围的就需要强制转换

/*这种情况不会丢失精度*/int intValue=56;byte byteValue=(byte)intValue;/*下面的情况会丢失精度*/double doubleValue=99999999.99999;int intValue1=(int)doubleValue;

所以说对于类型的转换一定要慎重。

下一章节介绍运算符,会继续介绍类型的转换。

转载于:https://my.oschina.net/jettyWang/blog/653881

你可能感兴趣的文章
Java核心技术卷I基础知识2.4 运行图形化应用程序
查看>>
android 减少图片出现oom错误
查看>>
《C语言及程序设计》实践项目——循环嵌套
查看>>
阿里价值“千万”的秒杀场景参数优化
查看>>
互联网创业公司黑话指南,很严肃的,不许笑!
查看>>
设计模式之适配器模式
查看>>
2017新年快乐特效
查看>>
PostgreSQL 9.6 内核优化 - sort性能增强(batch化quicksort代替replacement selection when work_mem small)...
查看>>
Tomcat启动时报错:“ Error starting static Resources”问题解决
查看>>
3月21日云栖精选夜读:用数据统计说话:2016年收入最高的编程语言与流行web框架(程序猿爱看)...
查看>>
Infrastructure as Code——Kubernetes一键编排实践
查看>>
触摸云端编程之道——基于函数计算的serverless应用开发
查看>>
让BASH,VIM美美的Powerline
查看>>
Genymotion安装配置指南
查看>>
最近架设的MUNIN,WEBALIZER,AWSTATS截图存档
查看>>
食物链
查看>>
Adapter 适配器模式(设计模式03)
查看>>
前端调错(一)---ajax返回数据成功,却进入error方法
查看>>
Java千百问_05面向对象(009)_java的多态性都有什么表现
查看>>
SQL Server分页3种方案比拼[转]
查看>>