博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
怎样判断对象是否可以转换?
阅读量:4314 次
发布时间:2019-06-06

本文共 952 字,大约阅读时间需要 3 分钟。

  可以使用instanceof运算符判断一个对象是否可以转换为指定的类型:

Object obj="Hello";
if(obj instanceof String)
 System.out.println("obj对象可以被转换为字符串");

下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么?

  m=d;
  d=m;
  d=(Dog)m;
  d=c;(子类是否能给子类赋值)
  c=(Cat)m;

源代码:

class Mammal{}

class Dog extends Mammal {}

class Cat extends Mammal{}

public class TestCast

{

public static void main(String args[])

{

Mammal m;

Dog d=new Dog();

Cat c=new Cat();

m=d;//子类d可以给父类m赋值

//d=m;

d=(Dog)m;

//d=c;//false

//c=(Cat)m;

}

原因:子类对象可以直接赋给基类变量。

 

//d=m;改为d=m;时运行结果如下:

原因分析:子类对象可以直接赋给基类变量。基类对象要赋给子类对象变量,必须执行类型转换

 

//d=c; 改为d=c;时报错,运行结果如下:

原因分析:基类对象要赋给子类对象变量,必须执行类型转换,其语法是:子类对象变量=(子类名)基类对象名;

更改后的代码如下:

class Mammal{}

class Dog extends Mammal {}

class Cat extends Mammal{}

 

public class TestCast

{

public static void main(String args[])

{

Mammal m;

Dog d=new Dog();

Cat c=new Cat();

m=d;//子类d可以给父类m赋值

        d=m;

d=(Dog)m;

//d=c;//false 子类不可以给子类赋值

c=(Cat)m;

 

}

}

更改之后编译并没有报错,因为没有输出语句,所以没有输出。

转载于:https://www.cnblogs.com/1995-qxl/p/4964258.html

你可能感兴趣的文章
第15周个人进度条
查看>>
Vue学习笔记:methods、computed、watch的区别
查看>>
朴素贝叶斯新闻分类,新浪SAE碰到的问题
查看>>
day19 Python super()
查看>>
JavaEE
查看>>
【BZOJ 4059】 (分治暴力|扫描线+线段树)
查看>>
反编译Silverlight项目
查看>>
BZOJ 1066 蜥蜴(网络流)
查看>>
提高批量插入数据的方法
查看>>
Linux重启Mysql命令
查看>>
前端模块化:RequireJS(转)
查看>>
linux 内核的优化
查看>>
Spark笔记之DataFrameNaFunctions
查看>>
Oracle 时间函数 (转)
查看>>
近端梯度算法(Proximal Gradient Descent)
查看>>
DRM-内容数据版权加密保护技术学习(中):License预发放实现 (转)
查看>>
TCP与UDP协议
查看>>
springMVC如何判断入参是默认参数还是请求传过来的参数?
查看>>
事务是什么,以及事务四个特性
查看>>
替换空格
查看>>