Java数据类型总结
Java基本数据类型
-
数据类型分类
Java语言内置了八种数据类型,其中六种数字类型,一种字符类型,一种布尔类型
-
byte
-
数据类型8位,带符号,数值 -128(-27) 至 127(27-1)
-
用在大型数组中节约空间
-
byte num1 = 100;
-
-
short
-
数据类型16位,带符号,数值 -32768(-215) 至 32767(215-1)
-
short num2 = 1000;
-
-
int
-
数据类型32位,带符号,数值 -2,147,483,648(-231) 至 2,147,483,647(231-1)
-
int num3 = 10;
-
-
long
-
数据类型64位,带符号,数值 -263 至 263-1
-
末尾需要增加 L 进行区分
-
long num4 = 100000L;
-
-
float
-
单精度浮点,32位
-
可以在存储大型浮点数组节约空间
-
不能精确表示
-
float num5 = 50.1f;
-
-
double
-
双精度浮点,64位
-
不能精确表示
-
小数点后全部为0可以省略,例如 10.0 可以写成 10. 和 10.D
-
double num6 = 10.0; double num6 = 10.D; double num6 = 10.;
-
-
boolean
- 数据类型1位,只有true和false
-
char
- 表示一个单一的16位Unicode字符(0 - 65536)
-
-
类型转换
-
转换公式: 新类型 新变量 = (新类型) 旧变量;
-
一定要先转换后计算
-
类型Level
- 从低到高: byte,short,char => int => long => float => double
-
转换栗子
-
低等级会自动转为高等级
-
int n1 = 100; long n2 = n1;
-
高等级需要强制转换为低等级
-
long n1 = 100L; int n2 = (int) n1;
-
-
Problem
-
blooean 不能参与转换
-
不能转换完全没有关系的数据类型
-
转换可能会产生内存溢出得不到正确结果,还可能会损失精度
// 内存溢出 int n1 = 128; byte n2 = (byte) n1; // ==> -128 // 丢失精度 float n3 = 10.5F; int n4 = (int) n3; // ==> 10 // 大数时容易丢失产生内存溢出 int n5 = 10_0000_0000; int n6 = 20; int n7 = n5 * n6; // ==> -1474836480 long n8 = n5 * n6; // ==> -1474836480 因为先计算后转换的 // 正确做法 long n9 = (long) n5 * n6; // 因为先转换后计算的
-
-
-
拓展
-
二进制、八进制、十进制、十六进制
-
二进制以0b开头,八进制以0开头,十六进制以0x开头
-
int n1 = 0b10; //2 int n2 = 010; //8 int n3 = 0x10; //16
-
-
float与double对比
-
对比需要用到javas.math里面的BigDecimal
-
float f1 = 0.1; double d1 = 1.0/10.0; System.out.prinyln(f1 == d1) //false
- BigDecimal 后续补充...
-
-
char类型可以与Unicode相互转换
-
char c1 = 'a'; System.out.printlm((int) c1); ==> 97 char c2 = '\u0061'; System.out.println(c2); ==> a
-
-