`
cakin24
  • 浏览: 1336873 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

强制类型转换讨论

    博客分类:
  • java
阅读更多

一 强制类型转换的两个注意点

  • 基本类型之间转换只能在数值类型之间进行。
  • 引用类型之间的转换只能在具有继承关系的两个类型之间转换。

二强制类型转换应用

1代码示例

public class ConversionTest
{
	public static void main(String[] args)
	{
		double d = 13.4;
		long l = (long)d;
		System.out.println(l);
		int in = 5;
		// 试图把一个数值类型的变量转换为boolean类型,下面代码编译出错
		// 编译时候会提示: 不可转换的类型
		// boolean b = (boolean)in;
		Object obj = "Hello";
		// obj变量的编译类型为Object,Object与String存在继承关系,可以强制类型转换
		// 而且obj变量实际上类型是String类型,所以运行时也可通过
		String objStr = (String)obj;
		System.out.println(objStr);
		// 定义一个objPri变量,编译类型为Object,实际类型为Integer
		Object objPri = new Integer(5);
		// objPri变量的编译时类型为Object,objPri的运行时类型为Integer,Object与Integer存在继承关系
		// 可以强制类型转换,而objPri变量实际上类型是Integer类型,
		// 所以下面代码运行时引发ClassCastException异常
		String str = (String)objPri;
	}
}

 2运行结果

13

Hello

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

at ConversionTest.main(ConversionTest.java:23)

3结果分析

3.1a处代码运行时会引发异常,因为objPri对象运行时的实际类型是Integer,它无法转化为string。

3.2 考虑到进行强制类型时可能出现异常,为了让程序更健壮,a处代码可修改如下:

if(objPri instance of String)
{
    String str=(String)objPri;
}

 

分享到:
评论

相关推荐

    JS在if中的强制类型转换方式

    众所周知,JS在很多情况下会进行强制类型转换,其中,最常见两种是: 1.使用非严格相等进行比较,对==左边的值进行类型转换 2.在if判断时,括号内的值进行类型转换,转化为布尔值 今天,我就来聊一聊JS在if中的强制...

    Java中的强制类型转换 大数转小数

    里主要讨论一下大数转小数,比如int类型转short类型。小数转大数,如short 转 int不做讨论,需要的朋友可以参考下

    final修饰符与类型转化

    类型转换是java编程中比较常见的一种操作,特别是基本数据类型之间的转换,如long型转化为int型,int转化为long等等。 类型的转化可以分成两类:强制转化与自动转化,例如long i=1;这个就叫自动转化,而int i=(long)...

    C#泛型简介

    本页内容简介泛型问题陈述什么是泛型应用泛型一般约束泛型和强制类型转换继承和泛型一般方法一般委托泛型和反射泛型和.NETFramework小结简介泛型是C#2.0的最强大的功能。通过泛型可以定义类型安全的数据结构,而无须...

    course:基于DataLad手册的研讨会的讨论和资料

    DataLad课程资料 基于研讨会讨论和资料。... 您可以根据需要编写自定义强制类型转换。 run '<code>'语句中的所有内容均在Enter上执行, say '<note>'均作为注释写入您的私人终端。 执照 CC-BY-SA:您可以自由选择 共享-

    新手学习C++入门资料

    上面两个都是C风格的强制类型转换,C++还增加了一种转换方式,比较一下上面和下面这个书写方式的不同: long int el=123; short i=int (el); float m=34.56; int i=int (m); 使用强制类型转换的最大好处...

    STL源码剖析

    在动态类型的程序中,所有类型都可以自由的转换成别的类型,而强制类型的程序却不能。但是,强制类型在出错时较容易发现程序错误。 1988年Stepanov先生转至HP公司运行开发泛型程序库的工作。此时,他已经认识C语言中...

    Airbnb JavaScript 风格指南

    类型转换和强制 命名约定 配件 活动 jQuery ECMAScript 5 兼容性 ECMAScript 6+ (ES 2015+) 样式 标准库 测试 表现 资源 在野外 翻译 JavaScript 风格指南 指南 与我们讨论 JavaScript 贡献者 执照 修正案

    《你必须知道的495个C语言问题》

    我试了类型转换,但是不行。 52 第5章 空指针 53 空指针和空指针常量 53 5.1 臭名昭著的空指针到底是什么? 53 5.2 怎样在程序里获得一个空指针? 54 5.3 用缩写的指针比较“if(p)”检查空指针是否有效?...

    计算机图形学opengl版

     ◆ 回顾.NET体系结构、对象、泛型、继承、数组、运算符、类型强制转换、委托、事件、Lambda表达式等  ◆ 详细论述C#中的动态对象、命名参数和可选参数、COM专用的交互操作功能、安全类型变体  ◆ 阐述.NET 4的...

    RINEX文件说明

    字头块中每行的第61~80列为字头标识符,这些标识符具有强制性,有关说明和例子中必须正确显示。这种格式通过在字头部分指示要存储的观测类型得到优化,以满足最小空间的需求。它与某一特定的接收机的不同观测类型...

    最糟糕的扫雷:bomb:有史以来-JavaScript开发

    …或者为什么您应该首选===运算符。 玩受JavaScript等式表启发的游戏关于价值顺序的讨论维基...=)试图保存用户不必将值显式转换(转换)为通用类型以进行比较,因此,例如,“ 5” == 5隐式转换(强制)字符串“ 5”

    C# 使用方法 入门教程

    5.5.1 执行用户定义的类型转换..... 142 5.5.2 多重数据类型转换..... 149 5.6 小结...... 152 第6章 委托和事件.... 153 6.1 委托...... 153 6.1.1 在C#中声明委托..... 154 6.1.2 在C#中使用委托..... 155 6.2 ...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

    2.6 类型转换和类型强制转换 64 2.6.1 赋值语句中的类型转换 65 2.6.2 显式类型转换 65 2.6.3 老式的类型强制转换 66 2.7 AUTO关键字 66 2.8 查看类型 67 2.9 按位运算符 67 2.9.1 按位AND运算符 68 2.9.2 ...

    Java核心技术 卷Ⅰ:基础知识 【中文】(第八版)

    在这里,将展示如何使用强类型机制,而舍弃不安全的强制类 型转换,以及如何处理与旧版本Java兼容而带来的复杂问题。 第13章介绍Java平台的集合框架。当需要将大量对象收集到一起,并在过后要对它们进行 检索时,...

    新概念C语言.李一波(带详细书签).pdf

    2.6.3 强制类型转换表达式 13 2.7 赋值表达式 13 2.7.1 赋值运算符和赋值表达式 13 2.7.2 赋值运算中的类型转换 14 习题 15 第3章 顺序结构程序 16 3.1 复合语句和空语句 16 3.1.1 复合语句 16 3.1.2 空语句...

Global site tag (gtag.js) - Google Analytics