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