- 浏览: 522070 次
- 性别:
- 来自: 杭州
-
文章分类
- 全部博客 (114)
- C基础 (1)
- C指针 (0)
- C语言库函数相关 (1)
- Linux (2)
- Linux网络编程 (1)
- PostgreSQL (0)
- Redis (2)
- Java Web (2)
- JAVA基础 (35)
- Ubuntu (8)
- Android (2)
- MySQL (3)
- 日志 (1)
- 书虫 (1)
- 数据结构 (0)
- 算法 (0)
- 开发工具 (1)
- 转载 (13)
- 英语 (18)
- tomcat启动脚本分析 (3)
- Oracle基础 (4)
- tomcat源码分析 (3)
- tomcat (1)
- Java相关 (1)
- Oracle基本原理--Oracle体系结构 (0)
- Oracle基本原理--表 (0)
- Oracle基本原理--索引 (0)
- Oracle基本原理--事务 (0)
- Oracle开发--SQL (1)
- Oracle基本原理--PL/SQL (0)
- Oracle基本原理--常用函数 (0)
- Oralce管理--用户及权限管理 (0)
- Oracle管理--安装调试 (0)
- Oracle管理--备份恢复 (0)
- Oralce管理--数据迁移 (0)
- Oracle管理--闪回 (0)
- Oracle管理--故障处理 (0)
- Oracle优化原理--统计信息 (0)
- Oracle优化原理--执行计划 (0)
- Oracle优化原理--诊断工具 (0)
- Oracle优化原理--深入理解表 (0)
- Oracle优化原理--深入理解索引 (0)
- Oracle优化原理--表连接原理 (0)
- Java--OOP (0)
- Java--异常 (0)
- Java--泛型 (0)
- Java--集合 (0)
- Java--IO (0)
- Java--枚举类型 (0)
- Java--注释 (0)
- Java--多线程 (0)
- Java--XML (0)
- Java--JDBC (3)
- Servlet (0)
- JSP (0)
- JSTL (0)
- 设计模式 (0)
- DAO与MVC (0)
- Javascript (2)
- Ajax (0)
- JQuery (0)
- HTML/CSS (0)
- 前端相关 (1)
- HTTP (0)
- TCP/IP (0)
- GO基础 (0)
最新评论
-
jsonmong:
推荐一个开发平台,采用的是插件化的设计思想,效果很不错的。ht ...
构建Java Web开发环境 -
wxm198427:
首先表示辛苦了!我想问个问题:我的是windows 7 x64 ...
Oracle 11g R2 for Win7旗舰版(64位)的安装步骤 -
握着橄榄枝的人:
我之前按照你的update mysql.user set pa ...
Windows7下MySQL5.5.20免安装版的配置 -
confident_f:
安装了32的客户端后,用plsql导入导出表有问题,生成不了d ...
Oracle 11g R2 for Win7旗舰版(64位)的安装步骤 -
confident_f:
安装数据库的时候第9步卡住了 是怎么回事呢?
Oracle 11g R2 for Win7旗舰版(64位)的安装步骤
引用类型间的转换有自动类型转换和强制类型转换两种。对于类引用类型,只有具有继承关系的类,即父类与子类之间,才可以进行类型的转换。
当引用了某个子类的变量对引用该子类的父类的变量赋值时,会自动进行类型的转换;反之,父类对子类进行赋值时则需要进行强制类型转换。
例如,A为父类,B、C分别继承自类A,分别定义引用这3个类的变量,然后进行各种赋值操作。
定义引用变量:
● 子类对父类进行赋值:
● 父类对子类进行赋值:
● 两个子类间的赋值:
如果两个不同的子类继承自同一个父类,那么这两个子类之间也不能进行类型转换,因为它们之间没有直接或间接的继承关系。
● 如果声明了一个父类型的变量,但使其引用子类对象,在编译时,java编译器是根据变量被显示声明的类型去编译,因此该变量的类型被看作父类类型。然后将其进行强制类型转换并赋给引用了另一个子类对象的变量时编译成功,但运行时将抛出java.lang.ClassCastException异常,因为这个变量实际引用的是子类对象,两个子类属于不同的类型,也没有继承关系,所以不能将一个子类强制转换为另一个子类。
对于引用类型中的数组引用类型,任何两个不同类型的数组之间不能进行类型的转换,但可以将数组转换为java.lang.Object类。
例如:
这样是不可以的。
最后一点中,int[]之所以能够直接转换成object对象,是因为int[]的父类是Object。
你的代码里,
Object[]是一个对象数组,里面可以放任何对象,你上面放的是4个整型对象,下面我作了下修改,将其中的每一个对象分别转换成相应的对象是可以的:
但是,将一个Object数组里的所有的对象全部转换成一种类型数组里的数据,有点不合理哦,而且Integer[] i是一个对象,只能引用了一个int型数组对象。
当引用了某个子类的变量对引用该子类的父类的变量赋值时,会自动进行类型的转换;反之,父类对子类进行赋值时则需要进行强制类型转换。
例如,A为父类,B、C分别继承自类A,分别定义引用这3个类的变量,然后进行各种赋值操作。
定义引用变量:
Object obj = new Object(); A objA = new A(); B objB = new B(); C objC = new C();
● 子类对父类进行赋值:
obj = objA; //编译成功,将类A赋给直接父类Object,会自动进行类型转换 obj = objB; //编译成功,将子类B赋给间接父类Object,会自动进行类型转换 objA = objC; //编译成功,将子类C赋给直接父类A,会自动进行类型转换
● 父类对子类进行赋值:
objA = obj; //编译出错,将父类Object赋给直接子类A时,需要强制类型转换 objA = (A)obj; //编译成功 objB = obj; //编译出错,将父类Object赋给间接子类B时,需要强制类型转换 objB = (B)obj ; //编译成功 objC = objA; //编译出错,将父类A赋给直接子类C时,需要强制类型转换 objC = (C)objA; //编译成功
● 两个子类间的赋值:
如果两个不同的子类继承自同一个父类,那么这两个子类之间也不能进行类型转换,因为它们之间没有直接或间接的继承关系。
objB = objC; //编译出错,不能从C类型自动转换为B类型 objB = (B)objC; //编译出错,不能从C类型强制转换为B类型
● 如果声明了一个父类型的变量,但使其引用子类对象,在编译时,java编译器是根据变量被显示声明的类型去编译,因此该变量的类型被看作父类类型。然后将其进行强制类型转换并赋给引用了另一个子类对象的变量时编译成功,但运行时将抛出java.lang.ClassCastException异常,因为这个变量实际引用的是子类对象,两个子类属于不同的类型,也没有继承关系,所以不能将一个子类强制转换为另一个子类。
A objAA = new C(); //objAA变量被显示声明为A类型 objB = (B)objAA; //编译时,objAA的类型被视为A类型,所以编译成功 //但运行时抛出java.lang.ClassCastException异常
对于引用类型中的数组引用类型,任何两个不同类型的数组之间不能进行类型的转换,但可以将数组转换为java.lang.Object类。
例如:
Object objArray = new Object(); int num_I[] = {1,2,3}; long num_L[] = {4,5,6}; num_I = num_L; //编译出错,数组引用类型间不能自动进行类型转换 num_I = (int [])num_L; //编译出错,数组引用类型间不能进行强制类型转换 objArray = num_I; //编译成功 objArray = num_L; //编译成功
评论
2 楼
supportopensource
2012-04-11
xiaohuafyle 写道
写得不错,关于最后一点的引用数组的转换我没有看懂.
这样的转换可以不可以呢?
实际上,执行这段代码,编译器是会报ClassCastException的.
可否赐教?
you can mail me, mark.wang.en@qq.com
Object[] ins= { new Integer(0), new Integer(1), new Integer(2), new Integer(3), }; Integer[] i = (Integer[]) ins;
这样的转换可以不可以呢?
实际上,执行这段代码,编译器是会报ClassCastException的.
可否赐教?
you can mail me, mark.wang.en@qq.com
这样是不可以的。
最后一点中,int[]之所以能够直接转换成object对象,是因为int[]的父类是Object。
你的代码里,
Object[]是一个对象数组,里面可以放任何对象,你上面放的是4个整型对象,下面我作了下修改,将其中的每一个对象分别转换成相应的对象是可以的:
Object[] ins= { new Integer(0), new String("abc"), new Integer(2), new Integer(3) }; Integer i = (Integer) ins[0]; String s =(String) ins[1];
但是,将一个Object数组里的所有的对象全部转换成一种类型数组里的数据,有点不合理哦,而且Integer[] i是一个对象,只能引用了一个int型数组对象。
1 楼
xiaohuafyle
2012-04-11
写得不错,关于最后一点的引用数组的转换我没有看懂.
这样的转换可以不可以呢?
实际上,执行这段代码,编译器是会报ClassCastException的.
可否赐教?
you can mail me, mark.wang.en@qq.com
Object[] ins= { new Integer(0), new Integer(1), new Integer(2), new Integer(3), }; Integer[] i = (Integer[]) ins;
这样的转换可以不可以呢?
实际上,执行这段代码,编译器是会报ClassCastException的.
可否赐教?
you can mail me, mark.wang.en@qq.com
发表评论
-
foreach循环
2013-06-24 16:15 1497从JDK1.5开始,Java提供了一个更简单的循环:forea ... -
可变参数
2013-06-24 15:38 1225从JDK1.5开始,Java允许使用可变参数为方法指定数量不确 ... -
泛型(core java 笔记)
2013-06-18 16:18 20741.为什么引入泛型 package generic; ... -
两个程序的说明
2010-10-19 09:26 11671、程序1的结果是: clas ... -
构造器初始化
2010-10-18 14:42 1535可以用构造器来进行初始化。在运行时刻,可以调用方法或执行某些动 ... -
成员初始化
2010-10-18 07:55 1247Java尽力保证:所有变量在使用前都能得到恰当的初始化。 对 ... -
线程的死锁
2010-10-11 19:21 1524当两个线程相互等待对方释放同步监视器时就会发生死锁,Java虚 ... -
线程的同步
2010-10-11 19:00 1290一个经典的关于线程安全性的问题:银行取钱问题。 银行取钱的基 ... -
java网站收集
2010-10-10 18:13 1295JAVA开发者最常去的25个英文网站:http://www.i ... -
控制线程
2010-10-10 16:06 20271、线程睡眠:sleep 如果我们需要让当前正在执行的线程暂 ... -
线程的状态
2010-09-28 19:00 1078线程从创建到执行完毕的整个过程称为线程的生命周期,在整个生命周 ... -
Java中Thread类的start()和run()的区别
2010-09-27 15:33 41391、start()方法来启动线程,真正实现了多线程运行,这时无 ... -
Java中创建线程的两种方法
2010-09-26 10:18 5648在Java中创建线程有两种方法:继承Thread类和实现Run ... -
创建String对象过程的内存分配小结
2010-09-23 20:32 2796常量池(Constant Pool):指的是在编译期被确定,并 ... -
Java堆和栈的区别 经典总结(转载)
2010-09-18 16:48 1289栈与堆都是Java用来在Ram中存放数据的地方。 与C++不 ... -
Java初学者都必须理解的七大问题
2010-09-18 10:36 1134问题一:我声明了什么 ... -
关于计算java程序运行时间(转载)
2010-09-18 09:22 1136//第一种,伪代码 long startTime= ... -
for循环的优化
2010-09-17 20:29 2159在程序中经常用到for循环,当一些算法实时性要求非常高时,对f ... -
详细解析Java中抽象类和接口的区别(转载)
2010-09-17 10:16 1127在Java语言中,abstract class和inter ... -
集合类(四):Map集合
2010-09-16 20:26 21555、Map集合 Map集合为映射类型,映射与集和列表有明显的区 ...
相关推荐
chromedriver-win32-136.0.7070.0.zip
内容概要:该文档详细介绍了智慧平安城市综合服务平台的需求规格,旨在整合多源异构信息,为警务、安防和社会公共信息服务提供技术支持。平台涵盖用户认证、视频监控、安全监测、政务服务、交通服务、社区服务等多个功能子系统。针对不同终端(如电脑端、手机端和大屏端),提供了定制化的展示和管理功能,并支持与其他第三方系统的接口对接,确保系统的全面性和可扩展性。此外,还明确了平台的高可靠性和高性能要求。 适用人群:项目管理人员、研发人员、测试人员及系统运维团队,主要用于理解和指导智慧平安城市的建设及运营。 使用场景及目标:智慧平安城市综合服务平台的设计和实施旨在增强城市管理效率和服务水平,提高市民生活质量,保障公共安全。通过整合和优化城市各部门资源,提升突发事件的响应和处理能力,构建更加和谐、安全的社会环境。 其他说明:项目要求平台能够处理大量并发请求,在确保数据安全的前提下快速响应各类服务请求,特别是在公共安全领域的智能化辨识及预警方面表现出较高准确性。此外,平台还需要具备良好的用户体验设计,方便各类用户群体操作使用。
内容概要:该文档是一份详细的《系统需求分析说明书》,旨在规划一个针对教育领域的教师信息管理系统。它详尽地阐述了项目的目标和意义在于提升师资管理部门的工作效率和服务质量,确保教职工工资发放的公平性,并通过优化信息管理简化日常操作流程。主要内容涵盖从功能需求如新员工入职、转正考核、教师查询等功能模块的具体流程设计,到非功能性的规定,包括安全措施、辅助指导等方面的内容,以及项目的实施时间安排计划,提供了系统开发的全方位指南,同时配合了直观易懂的用例图表来辅助理解和执行具体的操作步骤。 适合人群:本需求分析报告适用于项目经理、系统分析师、程序员和其他参与或关注教师信息管理系统建设的相关人士。 使用场景及目标:这份需求分析书将被用作指导教师信息系统开发工作的核心参考材料,在项目启动之初作为团队成员沟通的基础文件,帮助相关人员明确各自的任务方向,确定各项工作的完成标准及时限;另外也是日后系统运维、升级扩展的重要依据,对促进后续开发迭代有着重要意义。 其他说明:为了更好地满足实际需求,文中还包括了与业务密切相关的术语解释(词汇表),确保文档内的专业用语得到统一规范表达;同时也提供了一些辅助材料,像思
类似购物前后台管理系统,适合小白练习及自己添加更改
【介绍】 斗兽棋,或动物象棋,由两名玩家(红与黑)进行游戏。游戏的目的是在棋盘两端的对手巢穴中放置一块棋子。你也可以通过夺取对手的所有棋子来获胜。 移动-每件作品都可以向前、向后、向左或向右移动一步,但有一些规则。除了老鼠,没有其他动物可以进入河中,而狮子和老虎可以横向或前后跳过河。通过单击一个块(应出现一个蓝色框)并单击目标方块来移动块。只需将棋子移动到对手占据的方格上,即可捕获每个棋子。如果移动是非法的,棋盘将不会对你的第二次点击做出反应。你不能进入自己的巢穴。 捕捉片段-每个片段对应一种动物,即老鼠、猫、狗、狼、豹、老虎、狮子和大象,并按此顺序排列。每只动物只能捕捉到一只排名较低或与自己同等的动物。例外的是,大象不能抓老鼠,而老鼠可以抓大象。任何一块在河里都无法捕捉到另一块。如果两只老鼠都在河里,一只老鼠可以抓住另一只老鼠。 陷阱-巢穴周围的三个方块,标记为“陷阱”,充当对手棋子的陷阱。任何占据其中一个陷阱的对手棋子都会失去其排名,并可能被任何动物捕获。 老鼠、猫、狗、狼、豹、老虎、狮子、大象。
系统采用B/S架构,集成Spring Boot(后端)、Vue.js(前端)和MySQL(数据库),通过RESTful API实现前后端分离。采用MyBatis-Plus优化数据访问,模块化设计与自动配置提升开发效率,结合数据库索引和读写分离确保性能,Element UI提供友好交互,整体具备高扩展性和可维护性。
特易通国产对讲机MD-398 v1.0中英写频软件
数据结构学习
操作系统学习
数据结构学习
内容概要:该文档是一份关于‘信息资源整合及应用服务平台’需求规格说明书的详尽描述,涵盖项目的总体介绍、业务分析、系统需求、功能模块需求和部署环境等多个方面。文中明确了项目目标是对异构信息资源进行全面整合,并提供了详细的架构设计,确保用户在统一平台上享受高效的资源配置和服务体验。此外还介绍了平台的关键技术工具如TRSWCM和HyBase的使用,及各子系统间协作流程,强调了信息收集渠道多样化及其智能化管理水平。 适用人群:面向项目建设方(即负责系统建设和部署的组织或团队),相关用户和技术人员。 使用场景及目标:为建设‘信息资源整合及应用服务平台’提供建设指导和功能需求分析,明确项目范围、质量标准及开发任务分工;同时有助于相关人员更好地理解该平台的工作机制和应用场景。其他说明:此需求说明书亦可用于指导平台未来的维护和技术升级工作。 其他说明: 包含对系统管理、登录管理、日志管理等多个模块的详细说明,并对每个模块的功能进行了细致划分与介绍。文档末尾附带需求跟踪矩阵,用来监测各个阶段的任务完成情况和进度管理。
图书馆自助借还机使用感受
系统采用B/S架构,集成Spring Boot(后端)、Vue.js(前端)和MySQL(数据库),通过RESTful API实现前后端分离。采用MyBatis-Plus优化数据访问,模块化设计与自动配置提升开发效率,结合数据库索引和读写分离确保性能,Element UI提供友好交互,整体具备高扩展性和可维护性。
操作系统学习
功能描述: 就业管理员则负责岗位类型、招聘信息以及简历投递等流程的管理,保障了招聘流程的顺畅和有效。企业用户通过系统发布招聘信息、管理收到的简历,并组织面试流程。学生用户可管理个人资料、投递简历、接收面试邀请并查看面试结果,为他们的就业之路提供便利和支持。 更多详细信息:https://blog.csdn.net/u011832806/article/details/145713085 本项目是基于Springboot+Vue开发的高校毕业生就业信息管理系统,高分通过项目,已获导师指导。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。也可作为课程设计、期末大作业 标价包含:项目源码、万字LW、数据库脚本、开发说明文档、安装部署视频、代码讲解视频、全套软件等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea
传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的政府管理系统实现了字典管理、公告管理、公文管理、会议室管理、会议室预约管理、来访登记管理、信访督办管理、用户管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让政府管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。 关键字:信息管理,时效性,安全性,MySql
操作系统学习
GD32F407完整bootloader与app代码
数据结构学习
数据结构学习