数据类型以及三种类型转换
来源:互联网 发布:道德知乎 编辑:程序博客网 时间:2024/05/16 12:55
1.数据类型
byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。
short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。
int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
浮点型的精度为1e-6(0.000001),
默认整数int,默认浮点数double
所以比较是使用2个数的差是否小于1e-6.
例如: float a = 1.00002, b = 5.0;
fabs(a -b) < 1e-6 : a 等于 b
double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
boolean:只有true和false两个取值。
char:16位,存储Unicode码,用单引号赋值,里面只能有一个字母。还有一种情况,char a=98,这个赋值时一个ASCII码,输出也是对应的值。
Java决定了每种简单类型的大小。这些大小并不随着机器结构的变化而变化。这种大小的不可更改正是Java程序具有很强移植能力的原因之一。下表列出了Java中定义的简单类型、占用二进制位数及对应的封装器类。
简单类型
boolean
byte
char
short
Int
long
float
double
void
二进制位数
1
8
16
16
32
64
32
64
--
封装器类
Boolean
Byte
Character
Short
Integer
Long
Float
Double
Void
2.自动类型转换,强制类型转换以及类型提升
⑴自动类型转换
在 Java 程序中,不同的基本数据类型的数据之间经常需要进行相互转换。例如:
,
代码中 int 型变量 score1 可以直接为 double 型变量 score2 完成赋值操作,运行结果为: 82.0
这种转换称为自动类型转换。
当然自动类型转换是需要满足特定的条件的:目标类型大于元类型
⑵强制类型转换
当程序中需要将 double 型变量的值赋给一个 int 型变量,该如何实现呢?
显然,这种转换是不会自动进行的!因为 int 型的存储范围比 double 型的小。此时就需要通过强制类型转换来实现了。
语法:( 数据类型 ) 数值
运行结果:
可以看到,通过强制类型转换将 75.8 赋值给 int 型变量后,结果为 75,数值上并未进行四舍五入,而是直接将小数位截断。
明白了吧,强制类型转换可能会造成数据的丢失哦,小伙伴们在应用时一定要慎重哦!
⑶类型提升
当一个java算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升。Java定义如下的自动提升规则:
1. 所有byte型、short型和char型将被提升到int型。
2. 整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。操作数的等级排列如下图所示,位于箭头右边类型的等级高于位于箭头左边类型的等级。
下面程序示范了一个典型的错误:
//定义一个short类型变量
short sValue = 5;
//表达式中的sValue将自动提升到int类型,则右边的表达式类型为int
//将一个int类型赋给short类型的变量将发生错误。
sValue = sValue - 2;
上面中的sValue -2表达式的类型将被提升到int类型,这样就是把右边的int型值赋给左边的short型变量,从而引起错误。
例题:
byte b1=1,b2=2,b3,b6; final byte b4=4,b5=6; b6=b4+b5; b3=(b1+b2); System.out.println(b3+b6);
语句:b3=b1+b2编译出错
- 数据类型以及三种类型转换
- .net中三种类型转换方式
- 三种类型的DNS攻击以及应对方法
- JavaScript数据类型以及数据类型转换
- 四种类型转换
- 四种类型转换
- 四种类型转换
- 四种类型转换
- php布尔型数据类型以及流程控制的数据类型转换
- JavaSE (三)原生数据类型的8种类型定义、使用和陷阱
- java数据类型的种类以及存放的位置
- Java中的数据类型以及数据类型转换
- JS~数据类型以及类型转换
- JS数据类型以及类型转换
- C++四种类型转换
- 四种类型转换 cast
- c++4种类型转换
- C++四种类型转换
- java-io
- mysql数据库基本操作
- Vector源码解析
- URL
- Hibernate的执行过程
- 数据类型以及三种类型转换
- 聊天框的设计
- Spring mvc 下载文件
- log4j2 配置小计
- css 实现图片动态效果
- 砝码称重I
- OpenGL ES 2.0的渲染管线
- 登陆页面相关测试用例
- git pull 拉取项目文件失败的解决方案