整形细节
1.Java各基本数据类型有固定的范围和字段长度,不受具体OS(操作系统)的影响,以保证Java程序的可移植性。
2.Java的整型常量默认为int型,声明long型常量须在后面加上'l'或者'L'。
int a = 100L;//这样的声明是错误的
long b = 100L;//这样的声明是正确的
3.Java程序中变量声明为int型,除非不足以表示大数,才使用long。
4. bit:计算机中的最小存储单位。 byte:计算机中基本存储单元。 1byte = 8 bit。
举例:byte n1 = 3 和 short n2 = 3 的存储方式
byte占据一个字节,数值为3,内容为 00000011 。short占据两个字节,数值为3,内容为 00000000 00000011
浮点细节
1.Java的浮点型常量默认为double型,声明float型常量,需要在后面加上'f'或'F'。
float a = 1.1;//错误
float b = 1.1F;//正确
double c = 1.1;//正确
double d = 1.1F;//正确,d仍然是double类型
double e = 3d;//正确,后面加d就代表double类型
2.浮点型常量有两种表示形式——1.十进制:5.12 512.0f .512(如果是0.···,那么0可以省略,.512就表示0.512) 需要注意的是,必须有小数点,即使是整数也要加上 '.0' 2.科学计数法表示:5.12e2(即5.12*10^2) 5.12E-2(即5.12*10^(-2))
3.正常情况都使用double类型,因为比float类型更准确。
4.相除陷阱——double类型进行相除的时候,是以精度的方式返回这个值。
double num1 = 8.1/3;
System.out.print(num1);
因此,我们对两个数之间的比较,其中有运算结果是小数时要小心,不能用 '==' 来判断是否相等,而是以两个数差值的绝对值,在某个精度范围内判断。
public static void main(String[] args){
double num1 = 2.7;
double num2 = 8.1/3;
if(num1 == num2){//这样的判断方法是错误的
System.out.print("两者相等");
}else{
System.out.print("两者不相等");
}
}
public static void main(String[] args){
double num1 = 2.7;
double num2 = 8.1/3;
if(Math.abs(num1 - num2) < 0.00001){//在这里设置精度,使用取绝对值方法
System.out.print("符合规定精度,两者相等");
}
else{
System.out.print("不符合规定精度,两者不相等");
}
}
当然,如果是查询得到或者是直接赋值的小数,可以直接进行比较。