JAVA基础-----数据类型转换

JAVA基础—–数据类型转换

在进行编程的时候,常常会遇到数据类型转换的问题,现在就进行相应的总结。
八种基本数据类型
这里写图片描述
除了boolean类型以外所有的基本数据类型在进行不同数据类型的运算的时候都要进行类型转换。
一:自动类型转换
这里写图片描述
只要类型转换满足兼容类型,且为从低级别转向高级别(从小向大)转换,就可以进行自动类型转换。
**注意:**char类型,从其他类型转换到char类型需要进行强制类型转换。从char类型转换到其他类型是可以进行自动转换的,但转到byte和short需要进行强制转换。
二:强制类型转换
当需要将高级别的类型转换到低级别的类型的时候需要用到强制类型转换,但是这样做会损失精度。例如将float类型的数值2.1转换到int类型的数值时,就会转换成2,此时的精度就会损失。
注意:强制转换类型的适用范围仍然是上面八个基本数据类型,强制转换类型一定要在兼容的类型中进行转换,强制转换不是将String类型转换成int型,如果想要转换上述两种类型需要使用跨数据类型的方法进行转化。
三:跨数据类型的转换
基本数据类型——包裹类型
1. boolean—–Boolean
2. char———-Character(注意)
3. byte———-Byte
4. short———Short
5. int————-Integer(注意)
6. long———-Long
7. float———-Float
8. double——Double
使用包裹类型的好处就是能够将一个基本数据类型的数据转换成对象的形式,从而使他们可以像对象一样参与运算和传递。这些包裹类型中包含了相对应数据类型的相应的属性,最大值最小值;还有一些相应的方法操作。
拿Integer来举一个例子,
Integer.paserInt()
括号内传入一个数据,用这个方法返回的是一个int类型的数值。
Integer.valueOf()
括号内同样传入一个数据,用这个方法返回的是Integer类型的对象,这个对象的值就是传进去的数据的值。
其中还有引用类型String的转换。也有两个方法:
1:使用toString()方法可以将数据转换成Sring类型的数据
例如:String a = Integer.toString( int i);调用静态方法toString()将Integer对象转换成String类型的对象。
2:使用(+” “),在其他类型的值后边加入连接符和一个空字符串,就能将这个值转换成String 类型的数据。

四:向上,向下类型转换
在学习多态的时候已经详细介绍了向上类型转换,就是父类变量指向子类对象。
如:子类SportCar继承了父类Car,并且重写了父类的方法run();同时又添加了一个新的方法fly();创建对象: Car car1 = new SportCar();此时是向上转换,即父类变量指向子类对象,此时car1.run()是能够顺利执行的,而且执行的是子类中重写的run()方法。但是car1.fly()是没有办法执行的,因为car1虽然实际指向子类的对象,但是由于car1的变量类型是Car所以他只认为自己是一个普通的Car,而不是SportCar因此他也不知道自己还具有fly()这个功能。所以更不能调用了。如果想调用fly()方法的话,更必须向下转换,此时必须进行强制类型转换。
注意:在进行向下类型转换的时候必须要进行判断这个对象是不是由子类实例化出来的即:(car1 instanceOf SportCar)如果返回为真,则可以进行向下类型转换,否则不能进行转化。