今天要讨论的是基本数据类型之间的转换
java的数据类型分类结构如下:(下图截自百度)
先说数值型的转换方式,分为两种
1、直接转换
先来说个例子:500毫升的矿泉水与5升的桶装水,你将矿泉水瓶里面的水倒进空的桶装水桶里面,是不是可以装下没有问题
这个就是直接转换,小容量往大容量赋值
例如
int a = 100;
long b = a;
float c = 3.14f;
double d = c;
2、强制转换
但是反过来,你将一整桶桶装水灌进矿泉水瓶里面,能装完不会漏?不可能吧,肯定会溢出来,因为两者之间的容量有着天壤之别。
那要怎么强制转换?
例如
long b = 10000L;
int a = (int)b;
float c = 3.14f;
int d = (int)c;//这个时候d为3,后面的0.14丢了
这个就是强制转换,大容量往小容量赋值,这个时候肯定是只能转一部分,也就是所谓的损失精度
要转换,必要先知道哪个大哪个小吧
byte <short <int (char) <float <long <double
1个字节 2个字节 4个字节 4个字节 8个字节 8个字节
什么是4个字节、8个字节?就是在内存中开辟空间的大小,可以理解为容量,一个杯子就只能装300毫升水,你可以装200毫升或者100毫升,但是不可以超过300,这个就是容量限制,同理,1个int值是有最大值的,有容量限制的,超过了,只能换个容器,比如转为long
错误的例子
float b = 1f;
int
a = b;
long
b = 1;
int
a = b;
double
b = 1;
long
a = b;
那么数值型与布尔型如何转换?
boolean
a =
true
;
double
b = (
double
)a;
long
c = (
long
)a;
这个也是错误的,不能强转,因为两者不是同一个东西,不可以直接转换,只能说true是1,false是0。
字符型与数值型的转换
字符转数值:
String b = "10";
long
c = Long.parseLong(b);
int
d = Integer.parseInt(b);
double
f = Double.parseDouble(b);
数值转字符:
int
a = 10;
String b = a+
""
;
String e = String.valueOf(a);
char转string:
char
i =
'a'
;
String j = i+
""
;
String k = Character.toString(i);
string转char:
String l =
"abcdefg"
;
char
n = l.charAt(5);
//从0开始,5代表字符串中的第6个字符,即f
char
[] m = l.toCharArray();
//返回一个字符数组