AVA学习笔记之变量类型转换和类型自动提升
来源:互联网 发布:南京大学浙江大学知乎 编辑:程序博客网 时间:2024/05/29 07:05
AVA学习笔记之变量类型转换和类型自动提升
(2013-01-22 14:14:18)杂谈
分类: J2SE变量的类型转换
如果下列2个条件都能满足,那么将一种类型的数据赋给另外一种类型变量时,将执行
自动类型转换(automatic type conversion):
· 这2种类型是兼容的。
· 目的类型数的范围比来源类型的大。
当以上2个条件都满足时,拓宽转换(widening conversion)发生。例如,int型的范围比所有byte型的合法范围大,因此不要求显式强制类型转换语句。对于拓宽转换,数字类型,包括整数(integer)和浮点(floating-point)类型都是彼此兼容的,但是,数字类型和字符类型(char)或布尔类型(bollean)是不兼容的。字符类型(char)和布尔类型(bollean)也是互相不兼容的。
2.不兼容类型的强制转换(强制类型转换)
完成两种不兼容类型之间的转换,你就必须进行强制类型转换。所谓强制类型转换只不过是一种显式的类型变换。它的通用格式如下:
(target-type)value
其中,目标类型(target-type)指定了要将指定值转换成的类型。将int型强制转换成byte型。如果整数的值超出了byte型的取值范围,它的值将会因为对byte型值域取模(整数除以byte得到的余数)而减少。当把浮点值赋给整数类型时一种不同的类型转换发生了:截断(truncation)。整数没有小数部分,当把浮点值赋给整数类型时,它的小数部分会被舍去。
类型自动提升
在JAVA表达式中,如果进行运算的几个变量类型不一致,JAVA表达式会采取类型自动提升的操作。在表达式中对中间值的精确要求有时超过任何一个操作数的范围:
但有时也会带来意想不到的情况:
该程序试图将一个完全合法的byte型的值50*2再存储给一个byte型的变量。但是当表达式求值的时候,操作数被自动地提升为int型,计算结果也被提升为int型。这样,表达式的结果现在是int型,不强制转换它就不能被赋为byte型。确实如此,在这个特别的情况下,被赋的值将仍然适合目标类型。
在你理解溢出的后果的情况下,你应该使用一个显式的强制类型转换
类型提升的约定
1、将所有byte short 提升到int
2、如果操作数中有一个long,整个表达式提升到long型;
- AVA学习笔记之变量类型转换和类型自动提升
- 自动类型提升和强制类型转换
- java学习笔记(常量 二进制 其他进制 负数进制 变量 自动类型提升 强制类型转换 )
- 小白Java笔记——基本类型的类型转换和表达式类型的自动提升
- java基础_String类型和char类型、自动类型提升和强制类型转换
- C++ template学习笔记之禁止进行自动类型转换
- JavaScript学习笔记之强大的自动类型转换
- java学习之旅10--基本数据类型自动转换_强制转型_类型提升问题
- 自动类型、强制类型转换、及类型提升问题
- java学习个人笔记---表达式类型的自动提升
- c++学习笔记之变量和基本类型(1)
- c++学习笔记之变量和基本类型(2)
- C++Primer学习笔记之变量和基本类型
- java SE 数据类型转换,类型提升,变量
- 复习笔记2 变量 类型转换 自动升位
- 【慕课笔记】第二章 变量和常量 第7节 JAVA中的自动类型转换
- Java学习笔记之变量类型
- C++学习笔记之变量类型
- VI
- 那些猝死的悲剧说明什么?
- android开发之绝对安全(四) android开发中的加密方法
- 中兴Nubia Z5S mini一键ROOT教程 获取ROOT权限
- QTCreator + QTEmbedded 在Ubuntu上创建嵌入式ARM开发环境
- AVA学习笔记之变量类型转换和类型自动提升
- android textview 详解
- 手动添加本地 Maven 资源
- Java常见知识点
- 莫道君行早更有早来人(二)几点网络技术的想法
- android播放动画
- C#中的抽象类和接口
- UML图-核心基础
- Cubieboard2 debian