数据类型转换
一、自动数据类型转换
需满足两个条件:a. 转换前的数据类型与转换后的类型兼容;b. 转换后的数据类型的表示范围比转换前的类型大
1、int类型和float类型之间的转换
public class DataDemo08 { 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)); } }
运行结果:
x/y=1.3519603 10/3.5=2.857142857142857 10/3=3
注:10/3因为其默认的类型是int型,所以所有的数据都会以整型的形式出现,那么结果就是3,小数点会省略掉
2、任何类型的数据都向String转型
String从其定义上发现首字母大写,所以此为一个类,属于引用数据类型,但是此类属于系统的类。
(1)String像普通变量一样直接通过赋值的方式进行声明。字符串使用双引号括起来。两个字符串使用”+“号进行连接。
(2)任何字符数据类型碰到String类型的变量或常量之后都向String类型转换。
范例:定义字符串变量
public class demon { public static void main(String[] args) { String str = "ZhangSan"; int x = 18; str = str + x; System.out.println("str = " + str); } }
运行结果:
str = ZhangSan18
范例:字符串常量操作的问题
public class demon { public static void main(String[] args) { int a = 1; int b = 2; String str = "1 + 2 = "; System.out.println(str + a + b); } }
程序运行结果:
1 + 2 = 12
程序原本要计算a+b的值,由于碰上了字符串常量,所有的数据类型都会转变为字符串常量,此时的”+“表示的是字符串连接的含义,如果要得到想要的结果,则需修改:
System.out.println(str + (a + b));
即
public class demon { public static void main(String[] args) { int a = 1; int b = 2; String str = "1 + 2 = "; System.out.println(str + (a + b)); } }
程序运行结果:
1 + 2 = 3
加上括号后,表示输出之前先计算两个数字相加的结果。
二、数据类型的强制转换
当两个整数进行运算时,其运算结果也会是整数。举例来说,当做整数除法8/3的运算,其结果为整数2,并不是实际的2.33333......,因此在Java中若是想要得到计算的结果是浮点数时,就必须将数据类型做强制性的转换,转换语法如下:
(欲转换的数据类型)变量名称;
public class DataDemo11 { public static void main(String[] args) { float f = 30.3f; //浮点型 int x = (int)f; //强制类型转换 System.out.println("x=" + x); System.out.println("10/3=" +((float)10/3)); //执行强制转换 } }
执行结果:
x=30 10/3=3.3333333