Java千百问_06数据结构(006)_java基本数据类型如何转换-阿里云开发者社区

开发者社区> ghost丶桃子> 正文

Java千百问_06数据结构(006)_java基本数据类型如何转换

简介:
+关注继续查看

1、基本类型如何相互转换

我们看到,将一种类型的值赋给另一种类型是很常见的。在Java中,boolean类型与所有其他7种类型都不能进行转换,这一点很明确。 
对于其他7中数值类型,它们之间都可以进行转换,但是可能会存在精度损失或者其他一些变化。 
java中8种基本数据类型看这里:java有哪8种基本数据类型 
转换分为自动转换强制转换。对于自动转换(隐式),无需任何操作,而强制类型转换需要显式转换,即使用转换操作符(type)。

首先将7种类型按下面顺序排列一下:

byte <(short=char)< int < long < float < double

如果从小转换到大,可以自动完成,而从大到小,必须强制转换。shortchar两种相同类型也必须强制转换。

2、如何自动转换类型

自动转换时会发生扩宽 (widening conversion)。因为较大的类型(如int)要保存较小的类型(如byte),内存总是足够的,不需要强制转换。 
如果将字面值保存到byte、 short、char、long的时候,也会自动进行类型转换。 
注意区别,此时从int(没有带L的整型字面值为int)到byte/short /char也是自动完成的,虽然它们都比int小。在自动类型转化中,除了以下几种情况可能会导致精度损失以外,其他的转换都不能出现精度损失。 
1. int –> float 
2. long –> float 
3. long –> double 
4. float –> double without strictfp (无符号double) 
除了可能的精度损失外,自动转换不会出现任何运行时(run-time)异常。

3、如何强制转换类型

如果要把大的转成小的, 或者在short与char之间进行转换,就必须强制转换,也被称作缩小转换(narrowing conversion)。 
因为必须显式地使数值更小以适应目标类型。强制转换采用转换操作符(type)。严格地说,将byte转为char不属于缩小转换,因为从byte到char的过程其实是byte–>int–>char,所以widening和narrowing都有。

强制转换除了可能的精度损失外,还可能使模(overall magnitude)发生变化。强制转换格式如下:

target-type val =(target-type) value;

例如:

int a=80;  
byte b;   
b = (byte)a;


但你,如果整数的值超出了byte所能表示的范围,结果将对byte类型的范围取余数。例如:

int a=257;  
byte b;   
b = (byte)a;
System.out.println(b);


结果如下: 
1

因为a=257超出了byte的[-128,127]的范围,所以将257除以byte的范围(256)取余数得到:b=1。需要注意的是,当a=200时,此时除了256取余数应该为-56,而不是200。

将浮点类型赋给整数类型的时候,会发生截尾(truncation)。也就是把小数的部分去掉,只留下整数部分。此时如果整数超出目标类型范围,一样将对目标类型的范围取余数。



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
数据结构之树、森林和二叉树的转换
树转换为二叉树 (1)加线。在所有兄弟结点之间加一条连线。 (2)去线。树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线。
751 0
Java基础-22总结登录注册IO版,数据操作流,内存操作流,打印流,标准输入输出流,转换流,随机访问流,合并流,序列化流,Properties
你需要的是什么,直接评论留言。 获取更多资源加微信公众号“Java帮帮” (是公众号,不是微信好友哦) 还有“Java帮帮”今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 1:登录注册IO版本案例(掌握) 要求,对着写一遍。 cn.i
1727 0
Java 中基本类型和字符串之间的转换
Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换。 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2.
609 0
Java 中基本类型和包装类之间的转换
Java 中基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了。
909 0
1955
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载