展开全部
应该对你有帮助的!强制类型转换是基于可以转换过去,就是说圆和正方形可以转化为图形一样,前两者必须是个图形,只是不确定是什么图形故而强转,但是要将圆强转为人类..那不开开开开开开...玩笑么?呵呵java中基础类型有8中,如下byte,short,char,int,long,float,double,boolean虽然是这8个,但是我要这么写顺序,原因就是从后往前都需要强转,boolean除外!byte1一个字节,short占2个字节,char因为java是unicode编码,也是2个字节,int四个小要装大的,必须强行!比如shorta=(short)1;这里1默认是int类型,想变short当然要强制,要不人家地盘大,不会服从的!这里有个小特殊,就是long占8个字节,而float占4个,但是float是浮点型了,不和前面的整形相提并论。除了基本类型数据就是引用类型数据,即对象这种。你上面User就是引用类型,自定义的类而已,而String是JDK定义好的类,我上面说过圆和图形这两个概念,意思就是说必须得是父类强制转换子类,这里的User和String丝毫没任何父子关系,所以不可以转过去。java中Object是一切类的父类,一次任何一个引用类型都可以通过Object强转,比如Objecto=newObject();Useru=(User)o;所以你上面的问题强转是不可能的,默认一个引用类型的toString()方法是继承Object类得来的,因此默认打印就是它所在的内存分配的地址而已,就是个唯一标识!如果你调用自定义类的toString()方法得到一些有关该类的信息,而非看不懂的地址,那么就重写该方法,在该类中定义一个,比如下面这样publicStringtoString(){rerunthis.id+this.name;}那么以后调用该类的toString()方法将返回该类实例的id+name,前提这个类确实有这两个属性!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询