【java学习—八】对象类型转换Casting(1)

文章目录

  • [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();
		}
	}

}

运行结果:

小结:

相关推荐
蛋蛋的就会顺顺的1 天前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
需要8261 天前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
小 黄 鸡1 天前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
遇印记1 天前
传输层,网络层
运维·服务器·网络·windows·学习
死磕音视频1 天前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
clorinda1 天前
PyQt5学习:从界面搭建到与机器学习实战
学习
伯恩bourne1 天前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
silvamux_1 天前
curl 测试 OpenAI 兼容 API 的完整流程
java·人工智能·缓存·ai·oneapi
省钱兄--zs1 天前
深圳24小时自助健身房软硬件解决方案实战指南与开发流程详解
java·数据仓库·spring boot·小程序·架构
顽疲1 天前
Java vue 养老系统源码详解:月账单 care_month_bill 与 Quartz 扣费 Job 实践
java·开发语言·vue.js·vue养老·springboot养老·java养老