数据类型转换
数值型不同类型数据的转换
???1. 转换前的数据类型与转换后的类型兼容。 ???2. 转换后的数据类型的表示范围比转换前的数据类型表示范围大。
*[注释]: ?????类型的转换只限该语句本身,并不会影响原先变量的类型定义,而且通过自动类型的转换,可以保证数据的精确度,它并不会因为类型转换而损失数据的内容。这种类型的转换方式也称为扩大转换(augmented conversion). ???????在一个表达式中若有整数类型为short或byte的数据参加运算,为了避免溢出,Java会将表达式中的short或byte类型的数据自动转换成int类型。 ???????boolean类型只能存放true或false,与整数及字符不兼容,因此不可能做类型的转换。 【例1】int 与 float的转换
public class Demo001 {
public static void main(String[] args)
{
int a=10;
float b=20.2f;
System.out.println("a="+a+",b="+b);
System.out.println("a/b="+(a/b));
}
}
运行结果: ? ??????由运行结果可以看出,当两个数中有一个为浮点数时,其运算的结果会直接转换为浮点数。也就是说当变量类型不同时,Java会自动将较小的表示范围转换成较大的表示范围然后再计算。
适用环境如:将较长的数据类型转换成较短的数据类型。 方式:(欲转换的数据类型)变量名。 ????????经过强制类型转换,将得到一个括号里声明的数据类型的数据,该数据是从指定变量名中所包含的数据转换而来的,但指定的变量及其数据本身将不会因此而转变。 【例2】浮点数转化为整数
public class Demo001 {
public static void main(String[] args)
{
int a=30;
float b=20.2f;
int c;
c=a/(int)b;
int d;
d=(int)(a/b);
System.out.println("a="+a+",b="+b);
System.out.println("a/b="+(a/b));
System.out.println("a/b="+c);
System.out.println("a/b="+d);
}
}
运行结果: 当两个整数相除时,小数点后的数字会被截断,使得运算的结果保持为整数。所以如果想让整数相除的运行结果为浮点数,就必须将两个整数其中之一或者全部变成浮点数。
*[注释]: ???????在程序设计中,不推荐从较长数据向较短数据转换,因为较长数据向较短数据转换的过程中,由于数据存储位数的缩小,将导致数据精度的降低。
字符串类型数据与整形数据相互转换
字符串转换成数值型数据的方法
转换的方法 | 功能说明 |
---|
Byte.parseByte(String s) | 将数字字符串转换为字节型数据 | Short.parseShort(String s) | 将数字字符串转换为短整型数据 | Integer.parseInt(String s) | 将数字字符串转换为整型数据 | Long.parseLong(String s) | 将数字字符串转换为长整型数据 | Float.parseFloat(String s) | 将数字字符串转换为浮点型数据 | Double.parseDouble(String s) | 将数字字符串转换为双精度型数据 | Boolean.parseBoolean(String s) | 将数字字符串转换为布尔型数据 |
【例3】
String myNumber = "1234.567";
float myFloat = Float.parseFloat(myNumber);
第二条语句将字符串型变量myNumber的值转换成浮点型整数后,赋给变量myFloat。
数值型数据转换成字符串
【例4】
int myInt = 1234;
String myString = ""+myInt;
再Java语言中,字符串可以加号“+”来实现链接操作。所以若其中某个操作数不是字符串,该操作在连接之前会自动将其转换成字符串,因此可以加号来实现自动的转换。
|