文章目录
一、Java数据类型的转换
Java的数据类型在定义时就已经确定了,因此不能随意转换成其它的数据类型,但Java允许用户有限度地做类型转换处理。
数据类型的转换方式可分为“自动类型转换”和“强制类型转换”
二、数据类型的自动转换
自动转换的两个条件:
(1)转换前的数据类型与转换后的类型兼容。
(2)转换后的数据类型的表示范围比转换前的类型大。
例如,Java会自动将short类型的变量a转换为int类型。(整数与浮点数亦是兼容的,但需要注意的是!布尔类型只能存放true和false,与整数及字符是不兼容的不可能做)
例:数据类型的转换
public class DataDemo02 {
public static void main(String[] args) {
int x = 30; //定义整型变量
float y = 22.19f; //定义浮点型变量
System.out.println("x / y = "+(x/y)); //除法操作
System.out.println("10 / 3.5 = "+(10/3.5)); //直接使用常量进行除法
System.out.println("10 / 3 = "+(10/3)); //直接使用常量进行除法
}
}
输出结果:
从程序的输出结果可以发现,int和float类型进行计算后输出的结果会变成float型。两个int型进行计算,最终结果还是int型,其小数部分会被忽略。
还有一个重要的知识点是:任何类型的数据都向String转型
有一种表示字符串的数据类型String从其定义上发现其首字母大写,所以作为一个类,属于引用数据类型,但是此类属于系统的类,使用上有一些注意事项,在此我们需要注意两点:
(1)String可以像普通变量那样直接通过赋值的方式声明。字符串是使用双引号("")括起来的。两个字符串之间可以使用 “+” 进行连接。
(2)任何数据类型碰到String类型的变量或常量之后都向String类型转换。
实例1:定义字符串变量
public class DataDemo02 {
public static void main(String[] args) {
String str = "helloworld";
int x = 30;
str = str + x;
System.out.println("str = "+str);
}
}
输出结果:
实例2:字符串常量操作的问题
public class DataDemo02 {
public static void main(String[] args) {
int i = 1;
int j = 2;
System.out.println("1 + 2 = "+i+j);
System.out.println("1 + 2 = "+(i+j));
}
}
输出结果:
由输出结果我么可以发现,在计算i+j的值时,由于碰到了字符串常量,所以所有的数据类型都会变成字符串常量,也就是说此时的“+”实际上表示的是字符串连接的含义。
如果我们要计算整型i+j的值,就要加上括号,就可以得到想要的结果。
三、数据类型的强制转换
例:数据类型的强制转换
public class DataDemo02 {
public static void main(String[] args) {
float f = 30.3f; //定义浮点型变量
int x = (int)f; //强制转换为int型
System.out.println("x = "+x); //输出转型之后的值
System.out.println("10 / 3 = "+((float)10/3)); //常量计算使用强制类型转换
}
}
输出结果:
注意! 若是将一个超出该变量可表示范围的值赋给这个变量时,这种转换称为缩小转换。在转换过程中可能会丢失数据的精确度,Java并不会自动做这些类型的转换,此时就必须要做出强制性的转换。