数据类型分类
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
char
类型转换
转换公式: 新类型 新变量 = (新类型) 旧变量;
一定要先转换后计算
类型Level
转换栗子
低等级会自动转为高等级
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
char类型可以与Unicode相互转换
char c1 = ‘a‘;
System.out.printlm((int) c1); ==> 97
char c2 = ‘\u0061‘;
System.out.println(c2); ==> a
原文:https://www.cnblogs.com/rainful/p/14669284.html