java:数据类型浮点型,布尔型,8种数据类型转换规则

浮点型数据类型:

float 单精度,4字节
double 双精度,8字节(其实对于财务类软件还是精度比较低)
SUN在基础SE类库中准备了精确度更高的类型,属于引用类型(java.math.BigDecimal)

java程序中SUN提供了很多类库,我们在这一套基础的类库上开发。(如String.class)

SE类库的字节码在哪?

SE类库字节码:在jre文件夹中lib文件夹下的rt.jar
SE类库源码:在jdk文件夹下的src.zip

java中所有浮点型数据默认被当做double型来处理
如果要被当做float处理,需要再字面值后添加f

float f=5.1f (这里5.1是double型,大容量变成小容量要强制类型转换或者在后面加f)

或 
float f=(float)5.1

double 和float在计算机内部二进制存储的时候存储的都是近似值。因为有一些数字是无限循环的。

布尔型:

boolean

只有truefalse
不像c语言中0和1可以表示假和真
存储的时候占用一个字节,实际存储的时候false底层是0,true底层是1
经常使用在逻辑运算和条件控制当中

boolean flag=1不能这么写

正确写法是:
boolean flag=true

8种数据类型之间的转换规则:

1.除了布尔类型,剩下的都可以互相转换

2.小容量到大容量转换–自动类型转换
容量排序: byte<short<int<long<float<double
char(和short平级,可以表示的种类数量相同,但是char可以取更大的正整数)

任何浮点类型不管占用多少字节都比整数型容量大

3.char c=97 是正确的 最终输出的是字符a(算是大容量到小容量之间的转换,但是因为是char类型而且没有超过取值范围所以可以不用加强制类型转换符)

4.大容量到小容量需要强制类型转换,需要加强制类型转换符,但是运行中可能会损失精度。
当整数字面值没有超出byte,short,char的取值范围,可以直接赋值给byte,short,char类型的变量

5.byte short char混合运算的时候各自转换为int类型再做运算。

6.多种数据类型混合运算,先转换成容量最大的那种类型再做运算。

	double 10/3  最后结果是3.0

(因为10/3先按int型计算,得到结果也是int型3,然后再赋值给double)

	double 10.0/3 结果是3.33333333333(double类型)

	byte h=(byte)(int)g/3  数据类型转换的顺序是把g转换为int类型再把g转换为byte类型在用byte类型的g除以int类型的3
					结果是int类型。int类型不能赋值给byte类型的h所以不行。

					虽然最后的结果是3,但是编译期间不进行数值运算只检查语法,3是自己算出来的,计算机没有算,
					他不知道结果在byte的取值范围内,所以还是不行,编译会报错。

编译器会知道3在byte范围,但是不会知道g/3在 byte范围
byte h=(byte)(int)(g/3)是可以的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值