基本数据类型之间可以很方便的进行转换,主要有几种常见的方法,归纳如下:
(一)自动转换:
因为高类型数据的取值范围大于低类型数据的取值范围,我们可以对低类型数据不做任何处理而直接赋值给高类型的数据,此时的转换类型为隐式的。不过要注意了哦,没有布尔类型的基本数据参与转换,因为呢,Java规定:布尔类型的基本数据时不允许与其他类型的基本数据直接进行转换的;另外还得提醒一点:虽然低类型数据可不做任何处理转换为高类型,但是可能会发生精度损失哦!!!
(二)手动强制类型转换:
这是最常见的一种转换方式,我们经常在编程中会用到,如下:
double d=1.234;
int i=(int)d;
当我们仔细分析下时,其实可以发现,Java强制类型转换时把占用空间大的类型转换为占用空间小的类型所采取的方式是截断,而不是四舍五入,因而也会发生精度损失,甚至得到的值会完全不同,所以使用的时候要考虑清楚。
补充知识:低类型转换为高类型称为扩展转换,相反称为窄向转换。如果short型转换成byte型,会将高8位截断,只赋低8位的值。
(三)隐含强制转换:
实际上呢,在自动转换中就是Java实现了自动强制转换。
此外,我们常使用的字符串String不是基本数据类型,而是一个类:java.lang.String.
所以基本数据类型和String之间的转换是不能直接进行的,要用到基本数据类型的封装类。
*(一)将基本数据类型转换为字符串:
1)第一种方法是非静态转换方法:所有的封装类(包括非基本数据的封装类)都提供了一个toString()方法,该方法继承自Object类,并且在大多数类中实现 了重写。该方法无参数、非静态,其返回封装类对象中封装的值的字符串表示。因此,要想把基本数据类型的值转换为字符串,可以首先创建该值的封装类对象然后 调用所创建对象的toString方法。
例子:
int i=50;
System.ou.prinln(new Integer(i).toString); //输出"50"
2)第二种为静态转换方法:所有的封装类还提供了有参数的、静态的toString。这种方法和上面的区别在于它是静态的。
System.out.println(Integer.toString(50)); //输出"50"
*(二)、将字符串转换为基本数据类型:
几乎每个封装类各自都提供了静态的parseXxx方法,用来将字符串转换为对应基本数据类型的值。
1)parseXxx方法以字符串为参数,返回对应基本类型的值,若字符串参数格式不正确,将抛出NumberFormatException异常。
2)当封装类对应的是四种整数类型的任何一种时,还能通过第二个参数指定字符串转换成的数值进制。
3)这里所说的Xxx代表基本数据类型的名称,例如Xxx为int型那么方法的全写就是parseInt
例子:
String s="12345";
Integer.parseInt(s); //得到整数12345
(一)自动转换:
因为高类型数据的取值范围大于低类型数据的取值范围,我们可以对低类型数据不做任何处理而直接赋值给高类型的数据,此时的转换类型为隐式的。不过要注意了哦,没有布尔类型的基本数据参与转换,因为呢,Java规定:布尔类型的基本数据时不允许与其他类型的基本数据直接进行转换的;另外还得提醒一点:虽然低类型数据可不做任何处理转换为高类型,但是可能会发生精度损失哦!!!
(二)手动强制类型转换:
这是最常见的一种转换方式,我们经常在编程中会用到,如下:
double d=1.234;
int i=(int)d;
当我们仔细分析下时,其实可以发现,Java强制类型转换时把占用空间大的类型转换为占用空间小的类型所采取的方式是截断,而不是四舍五入,因而也会发生精度损失,甚至得到的值会完全不同,所以使用的时候要考虑清楚。
补充知识:低类型转换为高类型称为扩展转换,相反称为窄向转换。如果short型转换成byte型,会将高8位截断,只赋低8位的值。
(三)隐含强制转换:
实际上呢,在自动转换中就是Java实现了自动强制转换。
此外,我们常使用的字符串String不是基本数据类型,而是一个类:java.lang.String.
所以基本数据类型和String之间的转换是不能直接进行的,要用到基本数据类型的封装类。
*(一)将基本数据类型转换为字符串:
1)第一种方法是非静态转换方法:所有的封装类(包括非基本数据的封装类)都提供了一个toString()方法,该方法继承自Object类,并且在大多数类中实现 了重写。该方法无参数、非静态,其返回封装类对象中封装的值的字符串表示。因此,要想把基本数据类型的值转换为字符串,可以首先创建该值的封装类对象然后 调用所创建对象的toString方法。
例子:
int i=50;
System.ou.prinln(new Integer(i).toString); //输出"50"
2)第二种为静态转换方法:所有的封装类还提供了有参数的、静态的toString。这种方法和上面的区别在于它是静态的。
System.out.println(Integer.toString(50)); //输出"50"
*(二)、将字符串转换为基本数据类型:
几乎每个封装类各自都提供了静态的parseXxx方法,用来将字符串转换为对应基本数据类型的值。
1)parseXxx方法以字符串为参数,返回对应基本类型的值,若字符串参数格式不正确,将抛出NumberFormatException异常。
2)当封装类对应的是四种整数类型的任何一种时,还能通过第二个参数指定字符串转换成的数值进制。
3)这里所说的Xxx代表基本数据类型的名称,例如Xxx为int型那么方法的全写就是parseInt
例子:
String s="12345";
Integer.parseInt(s); //得到整数12345