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);
posted @ 2021-07-27 16:40  _SummeRr  阅读(81)  评论(0)    收藏  举报