03-数据类型转换

nobility 发布于 2021-02-22 2785 次阅读


数据类型转换

字面值常量的自动类型转换

整型

byte a = 1;	//无精度丢失自动转换
byte aa = 200;	//报错,超出byte表示范围,不会自动转换

short b = 2;	//无精度丢失自动转换

int c = 3;	//默认整型是int

long d = 4;	//自动将没有的位补0,自动转换
long dd = 2147483648;	//报错,常量超出默认常量取值范围int
long ddd = 2147483648L;	//指定常量的类型为long型

浮点型

float e = 3.14;	//报错,会精度丢失,无法自动转换
float ee = 3.14F;	//默认浮点数是double型,需要人为指定类型

double f = 3.1415;	//默认浮点型是double

字符型

char g = 'a';	//只能存单个字符
String s = "a";	//字符串可以存单个字符

char gg = '';	//报错,没有空字符
String ss = "";	//可以存空字符串
String sS = null;	//可以存空

char ggg = 'ab';	//报错,一个字符变量只能存一个字符
String sss = "ab";	//字符串可以存多个字符

布尔型

boolean h = true;

变量的类型转换

int a = 1;
int b = a;	//1
//同数据类型无需转换

基本数据类型之间

可以直接转换(自动、强制)

整型与整型之间

比较空间大小,所以大数据类型转小数据类型自动转换,反之需强制转换(可能会丢失部分数据)

byte a = 1;
int b = a;	//1
//小类型到大类型自动转换
int a = 1;
byte b = a;	//报错
int a = 1;
byte b = (byte)a;	//1
//大类型到小类型可能精度丢失,需要强制转换
int a = 1000;
byte b = (byte)a;	//-24,溢出
//大类型到小类型可能精度丢失,需要强制转换
//不报错,超过边界,数据精度丢失,只保留后八个比特位
浮点型与浮点型之间

比较空间大小,所以大数据类型转小数据类型自动转换,反之需强制转换(可能会丢失部分数据)

float a = 3.14F;
double b = a;	//3.14
//小类型到大类型自动转换
double a = 3.14;
float b = a;	//报错
double a = .14;	//0可省
float b = (float)a;	//0.14
//大类型到小类型可能精度丢失,需要强制转换
浮点数与整型之间:

比较精确程度,所以整型转浮点型自动转换,反之需强制转换(会丢失小数部分数据)

int a = 1;
float b = a;	//1.0
int a = 1234567891;
float b = a; //1.23456794E9
//整型转换为单精度浮点类型,可能精度丢失,但是自动转换
int a = 1234567891;
double b = a;	//1.234567891E9
//整型转换为双精度浮点类型,无精度丢失,自动转换
long a = 123456789123456789L;
float b = a;	//1.23456791E17
double c = a;	//1.23456789123456784E17
//长整型转换为浮点类型,可能精度丢失,但是自动转换
float a = 1.9F;
int b = a;	//报错
float a = 1.9F;
int b = (int)a;	//1
//浮点型转换为整型,可能精度丢失,需要强制转换
//只保留整数部分
字符型与整型之间

字符型转换整型自动转换,反之需强制转换

char a = 'a';
int b = a;	//97
//char转换为整型自动转换
int a = 97;
char b = a;	//报错
int a = 97;
char b = (char)a;	//a
//int转换为char,可能精度丢失,需要强制转换
byte a = 97;
char b = a;	//报错
byte a = 97;
char b = (char)a;	//a
//看似没有精度丢失,但是底层算法会将a转换成int再赋给b
char a = 97;	//a
//直接给char赋值为int字面量为97不超过表示范围自动转换
布尔类型不能与其他基本类型进行转换

引用数据类型之间

可以直接转换(自动、强制上下转型)

基本类型与引用类型之间

不能直接转换,使用包装类进行转换

运算中的自动类型转换

整型与整型之间

向大数据类型转换

byte a = 1;
int b = 1;
byte c = a + b;	//报错
int c  = a + b;	//2,结果自动转换为较大数据类型

浮点型与浮点型之间

向大精度数据类型转换

float a = 1.0F;
float b = 1.0F;
float c = a + b;	//2.0

double a = 1.0;
float b = 1.0F;
float c = a + b;	//报错
double c = a + b;	//结果自动转换伟较大精度数据类型

整型与浮点型之间

向为大精度浮点型转换

int a = 1;
double b = 1.0;
float c = a + b;	//报错
double c = a + b;	//2.0,结果向浮点大精度数据类型转

int a = 1;
float b = 1.0F;
float c = a + b;	//2.0

字符型与整型之间

自动转换为整型

System.out.println('a'+1);	//98
//字符类型与整型数相加自动转换为整型
System.out.println(""+'a'+1);	//b
//只要有字符串则会变成字符串拼接

字符串与其他数据之间

只要有字符串则会变成字符串拼接

此作者没有提供个人介绍
最后更新于 2021-02-22