Java中对象类型转换原则有哪些?
6个回答
展开全部
Java数据类型的转换原则
从低精度向高精度转换
byte 、short、int、long、float、double、char
注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换
基本类型向类类型转换
正向转换:通过类包装器来new出一个新的类类型的变量
Integer a= new Integer(2);
反向转换:通过类包装器来转换
int b=a.intValue();
类类型向字符串转换
正向转换:因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可
反向转换:通过类包装器new出一个新的类类型的变量
eg1: int i=Integer.valueOf(“123”).intValue()
说明:上例是将一个字符串转化成一个Integer对象,然后再调用这个对象的intValue()方法返回其对应的int数值。
eg2: float f=Float.valueOf(“123”).floatValue()
说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。
eg3: boolean b=Boolean.valueOf(“123”).booleanValue()
说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。
eg4:double d=Double.valueOf(“123”).doubleValue()
说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。
eg5: long l=Long.valueOf(“123”).longValue()
说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。
eg6: char=Character.valueOf(“123”).charValue()
说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。
从低精度向高精度转换
byte 、short、int、long、float、double、char
注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换
基本类型向类类型转换
正向转换:通过类包装器来new出一个新的类类型的变量
Integer a= new Integer(2);
反向转换:通过类包装器来转换
int b=a.intValue();
类类型向字符串转换
正向转换:因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可
反向转换:通过类包装器new出一个新的类类型的变量
eg1: int i=Integer.valueOf(“123”).intValue()
说明:上例是将一个字符串转化成一个Integer对象,然后再调用这个对象的intValue()方法返回其对应的int数值。
eg2: float f=Float.valueOf(“123”).floatValue()
说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。
eg3: boolean b=Boolean.valueOf(“123”).booleanValue()
说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。
eg4:double d=Double.valueOf(“123”).doubleValue()
说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。
eg5: long l=Long.valueOf(“123”).longValue()
说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。
eg6: char=Character.valueOf(“123”).charValue()
说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。
展开全部
java中有编译时类型和运行时类型一说,这是多态的一种表现,比如类B继承自类A 可以这样写 A a = new B(); 这条语句在编译和运行时都会通过,接下来如果要写这样一条语句 B b = a;这条语句在编译时时通不过的必须强制类型转换:B b = (B)a; 解释:第一条语句编译时编译器的检测机制会去检测(Java中规定父类引用可以指向子类对象),这时的编译时类型是A,但是实际运行时类型是B ,因为new的是B类型的对象;第二句在编译时如果不强类型转换是通不过的(这是规则,没有为什么),强类型转换之后,编译通过,接下来执行也不会出错。
但是用子类的引用指向父类的对象在运行时是一定会出错的;
但是用子类的引用指向父类的对象在运行时是一定会出错的;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对象类型转换是说一个对象可以强制类型转换成另一种类型,要注意的是:他要转换的目标类型必须是它的子类或父类,与它不相干的类它就不能够转换,不然会出错。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Java又有两种基本的类型转换原则:拓宽转换原则(widening conversion)与缩小转换原则(narrowing conversion)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
子类可自动转换为父类对象,父类对子类的引用可通过强制转换为子类对象
public class A {}
public class B extends A {}
public class C extends A {}
A b = new B() ; A c = new C() ;
B b1 = (B)b ; C c1 = (C) c ;
c和b没关系不能互转。
public class A {}
public class B extends A {}
public class C extends A {}
A b = new B() ; A c = new C() ;
B b1 = (B)b ; C c1 = (C) c ;
c和b没关系不能互转。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询