java八大基本数据类型
整数
int num1 = 10;//4字节
byte num2 = 10;//1字节
short num3 = 10;//2字节
long num4 = 10L;//8字节 long类型需要在数字后面加L/l
小数,浮点数
float num5 = 50.1F;//4字节 float类型要在后面加F/f
double num6 = 3.14159;//8字节
字符
char name = 'A';//2字节
//字符串, String不是关键字,是类
//String name1 = "China"
//占一个位
boolean flag1 = true;
boolean flag2 = false;
进制
二进制数需在数前加0b
十进制数不变
八进制数需在数前加0
十六进制数需在数前加0x
如:
int i1 = 0b10;
int i2 = 010;
int i3 = 10;
int i4 = 0x10;
float与double的注意事项
例子一:
float f = 0.1f;
double d = 1.0/10;
System.out.println(f == d);//输出结果为false
例子二:
float f1 = 2121212121212121f;
float f2 = f1 + 1;
System.out.println(f2 == f1);//输出结果为true
原因:
float是有限的,有舍入误差,接近但不等于
因此最好避免使用浮点数进行比较
如需要进行精确的运算与比较,比如银行业务
则可以使用数学工具类BigDecimal
数据类型转换
自动转换
由低->高:
-
byte,short,char->int->long->float->double
-
不同数据类型运算时会往高级别的转换直到类型相同
-
如:byte和short相加得到的是int
强制转换
-
不能对布尔进行转换
-
不能把对象类型转换为不相干的类型
-
再把高容量转换到低容量的时候,强制转换
-
转换的时候可能内存溢出,或者有精度问题
//操作数比较大的时候,注意溢出问题
int money = 10_0000_0000;//JDK7新特性,数字之间可以用下划线分割
int year = 20;
int total = money*year;//结果-1474836480 计算时产生溢出
long total1 = money*year;
//结果-1474836480,默认是int,在转换之前已经存在问题
long total2 = ((long)money)*year;
//先把一个数转换为long,即可得出正确结果
System.out.println(total);
System.out.println(total1);
System.out.println(total2);
浙公网安备 33010602011771号