8大基本数据类型
数值型:
一.byte字节型(8bit)
二.short短整型(2byte)
三.int整型(4byte)
1.整数默认类型。
四.long长整型(8byte)
1.定义长整型要在数字后加l。
五.double双精度型(8byte)
1.小数默认类型。
2.计算机是二进制存储的,显示值与存储值有时会不同,表示小数时有误差。
显示值与存储值相等的规律:
有一个小于 1 的小数 d ,如果满足 d*2∧n = 1 则 d 的 显示值 等于 储存值 。( n 为正整数) 。
import java.math.BigDecimal;
/**
* date:2017年7月28日10:07:34
* target:浮点数的显示值,存储值,精确计算。
* @author ypy
*/
public class Float_2{
public static void main(String[] args) {
BigDecimal a1 = new BigDecimal(0.4);
BigDecimal a2 = new BigDecimal(0.2);
System.out.println(a1);//得到存储值
System.out.println(a2);
System.out.println();
System.out.println(0.4+0.2);//计算时用存储值计算,计算完的值在对应的区间会有一个存储值,显示的是其显示值
System.out.println(0.4-0.2);
System.out.println(0.4*0.2);
System.out.println(0.4/0.2);
System.out.println();
//精确计算浮点数 但效率低
BigDecimal b1 = new BigDecimal("0.4");
BigDecimal b2 = new BigDecimal("0.2");
System.out.println(b1.add(b2));
System.out.println(b1.subtract(b2));
System.out.println(b1.multiply(b2));
System.out.println(b1.divide(b2));
}
}
/*
***************JDK1.8运行结果****************
0.40000000000000002220446049250313080847263336181640625
0.200000000000000011102230246251565404236316680908203125
0.6000000000000001
0.2
0.08000000000000002
2.0
0.6
0.2
0.08
2
*/
3.浮点数的比较
/**
* date:2017年7月28日10:45:39
* target:浮点数的比较。
* conclusion:比较浮点数尽量避免用"=="、"!=",而用">="...等代替。
* @author ypy
*/
public class Float_3 {
public static void main(String[] args) {
float a = 10.2222219f;
float b = 10.2222222f;
float c = 0.000f;
System.out.println(Math.abs(c)<=0.000001);//比较浮点数与0,0.000001表示精度,表示误差在该精度范围内相等
System.out.println();
//比较两个浮点数是否相等
System.out.println(a==b);//因为a和b都超出精度,超出精度的会略去,对剩下的部分进行处理,
//而处理后剩下的部分相等,所以判断相等,与事实不符,计算金钱等 需要精确计算
System.out.println(4.9f==4.9);//
System.out.println(Math.abs(4.9f-4.9)<=1e-6);
}
}
/*
***************JDK1.8运行结果****************
true
true
false
true
*/
六.float浮点型(4byte)
1.定义浮点型在数字后加f。
如:float f = 1;编译不报错,因为1是整型的,当转换为float时,存在一个隐试转换,不损失精度。(float范围比int大)
float f = 1.0; 编译报错,因为1.0默认为double,会损失精度(double范围比float大)
字符型:
七.char字符型(2byte,采用Unicode编码,可存储汉字)
布尔型:
八.boolean布尔型(1byte)
1.if语句中只可以是Boolean类型的,不能是其他类型,如if(1)就是错误的。