文章目录
- 1. 数据类型转换
- 1.1 基本数据类型的 Casting
- 1.2. 对 Java 对象的强制类型转换(造型)
- 2. 对象类型转换举例
1. 数据类型转换
数据类型转换分为基本数据类型转换和对象类型转换。
1.1 基本数据类型的 Casting
(1) 自动类型转换:小的数据类型可以自动转换成大的数据类型
如
long g=20; double d=12.0f
(2) 强制类型转换:可以把大的数据类型强制转换 (casting) 成小的数据类型
如
float f=(float)12.0; int a=(int)1200L
1.2. 对 Java 对象的强制类型转换(造型)
(1)从子类到父类的类型转换可以自动进行
package day08;
//Student extends Person
public class Test {public static void main(String[] args) {Student s = new Student();Person p = s;//子类到父类的类型转换(自动进行)}
}
(2)从父类到子类的类型转换必须通过造型 ( 强制类型转换 ) 实现
package day08;
//Student extends Person
public class Test {public static void main(String[] args) {Person p = new Person();Student s = (Student) p;//强制类型转换}
}
(3)无继承关系的引用类型间的转换是非法的
package day08;
//Student extends Person
public class Test {public static void main(String[] args) {Test t = new Test();Person p = t;//无继承关系的引用类型间的转换是非法的}
}
更多用法:
(1)子类到父类的自动转换:
package day08;public class Test {public static void main(String[] args) {//Object是所有类的最高父类String s = "hello";Object obj = s;//从子类到父类的类型转换可以自动进行System.out.println(obj);//控制台输出hello }
}
(2)父类到子类的强制类型转换:
package day08;public class Test {public static void main(String[] args) {//Object是所有类的最高父类Object obj = "hello";String s = (String) obj;//从父类到子类的类型转换必须通过造型(强制类型转换)实现System.out.println(s); //控制台输出hello }
}
2. 对象类型转换举例
(1)
package day08;public class Test {public static void main(String[] args) {Test t = new Test();t.method(new Person());}public void method(Person e) {if(e instanceof Student) { //falseStudent s = (Student) e;s.getSchool();}else {e.test();}}}
运行结果:
(2)
package day08;public class Test {public static void main(String[] args) {Test t = new Test();
// t.method(new Person());t.method(new Student()); }public void method(Person e) {if(e instanceof Student) { //trueStudent s = (Student) e;s.getSchool();}else {e.test();}}}
运行结果:
小结: