`
jgnan
  • 浏览: 89629 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

每天JAVA简单教学:类型强转

阅读更多
关于类型,我们说了不少,现在大家能够理解的是,类型是变量指针所指的特定地址段可存储的数据类型描述。理论上,该段地址只可以接收相同类型的数据。实际上,只要符合今天介绍的几个规则,不同类型之间也可以实现强转。

首先看看以下例子:
package typeconvert;

public class TypeConvertionDemo1 {

	public static void main(String[] args) {
		Object obj = (Object)new Integer(1);
                  System.out.println(obj.getClass());
	}

}

上面的代码是合法的,也就是说,我们把Integer对象实例强行存放到Object类型指针obj中。并且,从控制台显示的结果来看,这个实例仍然是Integer类型,只是由于obj指针对外宣称是Object类型,因此我们无法访问子类Integer的其它方法。

因此我们可以知道,父类指针可以接收子类对象的类型强转。此时父类的指针就是子类实例的一个映射,它只开放父类的方法及属性,而隐含了子类的其它方法及属性。

所以我们也需要更正一下我们对于指针的理解。并不是指针限制了存储数据的大小和类型,而是指针限制了对外访问特定地址段数据的方法。也就是说,指针只是告诉我们某某地址段中我们可以访问什么,如果地址段存储的类和指针类型完全没有交集,即使有关系也无法直接通过类型强转访问。不过后期的代理倒可以做到,不过这个已经是说类映射这种高级行为时介绍的东西了。

除了父类和子类可以强转之外,还有以下类之间可以强转:
实现类  --> 强转为 --> 抽象类
实现类  --> 强转为 --> 接口类
容量小的简单类型 --> 强转 --> 容量大的简单类型
* 容量大的简单类型 --> 强转 --> 容量小的简单类型
$ 父类 --> 强转为 --> 子类

注意*号的转换,虽然时支持的,但是如果待转换的数据大小超出转换后的大小的话,强转之后的结果会和原来的不一样,看看下面的例子:
package typeconvert;

public class PrimitiveConvertionDemo {

	public static void main(String[] args) {
		System.out.println((int)123456789012345678L);
	}

}


执行结果:


所以最后一种我们不建议使用。

当然,像$所指的情况,不会引起编译错误,但是实际上运行的时候会出问题:
package typeconvert;

public class TypeConvertionDemo2 {

	public static void main(String[] args) {
		Integer obj = (Integer)new Object();
		System.out.println(obj.getClass());
	}

}



虽然代码可以编译通过,但是运行结果如下:


综合来说,逆转换都是危险的。大家要去避免。

今天涉及到接口、抽象类这两个概念,将于明天给大家介绍。
  • 大小: 8.8 KB
  • 大小: 12.8 KB
分享到:
评论

相关推荐

    java教学课件:10Java--RMI.ppt

    java教学课件:10Java--RMI.ppt

    深入分析java中的类型转换

    ### 深入分析Java中的类型转换 #### 类型转换概述 类型转换是Java编程语言中的一个重要特性,它使得程序可以在不同类型的数据之间进行转换。在Java中,类型转换主要分为两大类:**隐式自动类型转换**和**强制手动...

    java教学课件:第一章 Java的类.ppt

    java教学课件:第一章 Java的类.ppt

    java教学课件:第7章 多线程.ppt

    java教学课件:第7章 多线程.ppt

    个人java学习项目一:简易拼图游戏.zip

    个人java学习项目一:简易拼图游戏.zip个人java学习项目一:简易拼图游戏.zip 个人java学习项目一:简易拼图游戏.zip个人java学习项目一:简易拼图游戏.zip 个人java学习项目一:简易拼图游戏.zip个人java学习项目一...

    MySql于Java数据类型对应列表

    ### MySQL与Java数据类型对应详解 #### 概述 在进行数据库操作时,尤其是在使用Java进行MySQL数据库开发的过程中,正确地映射数据类型是至关重要的一步。本文将详细介绍MySQL中的各种数据类型及其在Java中的对应...

    Java常用的强转类型,基本数据类型转换,JSONObject强转Map,JSONArray强转List(附源码)

    在Java编程中,类型转换是常见的操作,尤其是在处理对象与基本数据类型,或者不同集合类之间的转换时。本文将深入探讨Java中的一些关键转换技术,包括基本数据类型的转换、JSONObject到Map的转换以及JSONArray到List...

    java中jython操作把python数据类型转成java类型

    在Java中,Jython是一个非常有用的工具,它允许我们在Java应用程序中嵌入Python代码,并能够无缝地在Python数据类型和Java数据类型之间进行转换。这极大地扩展了Java的生态系统,让我们能够利用Python丰富的库和简洁...

    100道Java基础面试题收集整理

    * 显式转换:类型强转,把一个大类型的数据强制赋值给小类型的数据 * 隐式转换:大范围的变量能够接受小范围的数据 拆装箱 * 拆箱:把包装类型转成基本数据类型 * 装箱:把基本数据类型转成包装类型 Java中的包装...

    java 视频教学 下载地址

    根据提供的信息,我们可以总结出以下关于“Java视频教学”的相关知识点: ### Java视频教程概览 #### 标题解析: - **标题:“java 视频教学 下载地址”**:这个标题表明这是一个提供Java视频教学资源下载的地方。...

    Java范例开发大全教学视频及源码(22集)

    资源名称:Java范例开发大全教学视频及源码(22集)资源目录:【】Java范例开发大全教学视频及源码01【】Java范例开发大全教学视频及源码02【】Java范例开发大全教学视频及源码03【】Java范例开发大全教学视频及源码...

    Oracle9i数据类型Java数据类型Schema类型对比.doc

    Oracle9i 数据类型、Java 数据类型以及 Schema 类型之间的对比主要关注它们在存储和处理数据时的差异。这些数据类型是编程和数据库管理中的基础,理解它们的关系对于开发与数据库交互的应用程序至关重要。 1. ...

    java程序设计教学实施报告.pdf

    【Java程序设计教学实施报告】 本报告主要围绕2021年河南省高等职业教育教学能力大赛中的软件技术专业《Java编程基础》课程展开,该课程在比赛中荣获校内一等奖。教学对象为20级高职软件技术07班的学生,共计16课时...

    java基础教学大纲

    ### Java基础教学大纲知识点解析 #### 一、教学目标要求 - **理解Java语言的优点**: - 面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态等特性。 - 平台独立性:Java程序可以在任何安装了Java...

    JAVA程序教学设计: JAVA基本语法——商场购物清单打印.doc

    本教学设计主要关注Java的基本语法,包括代码的基本格式、注释、标识符、关键字以及常量的使用。以下是这些关键概念的详细解释: 1. **Java代码的基本格式**: - Java代码由结构定义语句(如类或方法声明)和功能...

    常用的java工具类:Date和String类型互转,获取想要格式的String类型的日期时间、java导出数据到Excel、http文件下载、HMAC-MD5加密、3DES加密、MD5加密、读写txt文件、zip解压缩文件、文件夹

    一些常用的java工具类:Date和String类型互转,获取想要格式的String类型的日期时间、java导出数据到Excel、http文件下载、HMAC-MD5加密、3DES加密、MD5加密、读写txt文件、zip解压缩文件、文件夹等

    基于项目驱动的Java实践教学.pdf

    "基于项目驱动的Java实践教学" 基于项目驱动的Java实践教学是指在Java教学中,采用项目驱动的方法来培养学生的兴趣和能力。这种方法可以提高学生的学习积极性和创造性,并且可以更好地适应社会的需求。 Java教学中...

    java实现聊天室功能(全部代码,有界面)

    * Java Swing 库:服务器端代码使用 Java Swing 库来创建简单的界面。 * Java 集合框架:服务器端代码使用 Java 集合框架来存储用户信息。 * Java IO 编程:服务器端代码使用 Java IO 编程来读取和写入文件。 结论 ...

    java教学讲义适合java入门

    这份"java教学讲义"旨在为初学者提供一个全面且易懂的学习路径,帮助他们顺利入门Java世界。 讲义内容可能涵盖以下几个关键知识点: 1. **Java简介**:介绍Java的历史、特点和应用领域,解释为什么Java被广泛使用...

Global site tag (gtag.js) - Google Analytics