Java基本问题 java中每个类都是都是Object类的子类,当一个对象转换成Object后,这个对象的信息是不是会丢失呢?,还是java中有一些可以保存被装换对象的原有信息,不然当这个对象被转换回来的时候岂不是要失去信息!小弟跪求! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不会丢失,只不过现在只能调用Object中的方法了 1.没明白lz 对象转换成Object 要干么2.不会丢失可以写代码试一下。 答:Object为老祖宗类,任何类向它转换都不会丢失数据,这是向上转型;如果是向下转型则可能会丢失精度,比如float转double。 String s="这是一个字符串"; Object o=(Object)s;//向上转型,此时o指向了堆中的“这是一个字符串”对象,但是不可以借助o来使用String的方法 System.out.println(o.getClass());//o.charAt(0)是错误的 s=(String)o;//s继续指向堆中的“这是一个字符串”对象,和一开始是相同的 System.out.println(s.charAt(0)); 不会丢失的,只是引用变成Object类的了,但是实际的对象还是原来的,对象在堆内存中是永远不会变的。但是当你转换后要调用方法的话,就只能调用Object类有的方法了,而不能调用原来类中定义的Object类没有的方法。当你再转换回来的时候,就有可以了。一点儿都没有变... 在java中任何类型转换为object都不会掉的,这是上型转换,如是是object转换为它下面的一个那任何一个类的时候都是不安全的,这个是下型转换.因为越是向上转换这个类就是越通用,越是向下那这个类就越具体!所以上型转换是安全的!下型转换不安全! 相信LZ理解多态的时候就会很明白了~~祝LZ好运~ 向上转型(如:String->Object)永远是安全的,向下转型(如:Object->String)不一定安全 说实话,这个东西不是一下子就可以理解的,你需要慢慢的去体验(就是不断的写程序) 这个问题就是java的多态性了。首先你应该知道,对象的类型只是用于指明我定义的这个变量到底能储存哪些类型,而不是说我定义成什么类型,我储存的变量就一定严格的是这个类型。 当定义了一个Object的对象变量后,这个变量现在能储存任何的java类型了,但并不是说我储存了一个具体的变量以后,这个变量就变成Object类型了。只是由于这个变量是储存在Object类型中,所以它只能使用从Object继承的属性和方法,但如果你将其强制转换为它自己原本的类型,你会发现它又可以使用属于自己的属性和方法了。 所以,储存在Object中的对象还是保留着自己的类型信息的,只是暂时没有表现出来,必须强制转化为它自己的类型以后才可以。 希望我的说明对你可以由一些帮助! 在java中任何类型转换为object都不会掉的,这是上型转换,如是是object转换为它下面的一个那任何一个类的时候都是不安全的,这个是下型转换.因为越是向上转换这个类就是越通用,越是向下那这个类就越具体!所以上型转换是安全的!下型转换不安全!——————————————————————————Mark了!! 任何类转换为object类都不是不丢失的,这是由子类转换为父类的类型转换,可以用java的继承的知识点理解 而且转换是把一个object类的引用指向这个被转换对象的值,该对象的值没有被改变所以不会丢失 Class.getResource()与Class.getClassLoader().getResource()有什么区别? 笔试题求解 提供行标题栏的表格 获取网页地址中文参数乱码问题 '2009-03-18T10:15:53.086Z' 谁知道这个时间格式 请问我这个到底错在哪里?老是提示这里出错. 看看这段代码 如何读曲远程ftp中的文件表列,并用JTree表示出来 有关数字签名? 这个代码为什么报错 请教jar的清单 请教KeyEvent 在菜单里面加快捷键
2.不会丢失
可以写代码试一下。
Object为老祖宗类,任何类向它转换都不会丢失数据,这是向上转型;如果是向下转型则可能会丢失精度,比如float转double。
Object o=(Object)s;//向上转型,此时o指向了堆中的“这是一个字符串”对象,但是不可以借助o来使用String的方法
System.out.println(o.getClass());//o.charAt(0)是错误的
s=(String)o;//s继续指向堆中的“这是一个字符串”对象,和一开始是相同的
System.out.println(s.charAt(0));
但是当你转换后要调用方法的话,就只能调用Object类有的方法了,而不能调用原来类中定义的Object类没有的方法。
当你再转换回来的时候,就有可以了。
一点儿都没有变...
相信LZ理解多态的时候就会很明白了~~祝LZ好运~
向下转型(如:Object->String)不一定安全