浅谈Java中的范例转换
当前位置:以往代写 > JAVA 教程 >浅谈Java中的范例转换
2019-06-14

浅谈Java中的范例转换

浅谈Java中的范例转换

要说范例转换,首先要说一说java的数据范例。java中的数据范例分为两种:根基范例、引用范例。根基数据范例没有什么好说的byte char short int long float double boolean,这些范例除了boolean之外,其他的与C语言中的范例没有太大的区别。因为这篇文章的论题是范例转换,所以在此不接头boolean值的用法。

下面要说的是引用范例。引用在有的书里也叫做句柄,它很雷同C/C++中的指针,但要留意引用和指针并不是同一个观念。指针是一个存放地点的变量,他使C/C++措施员可以或许机动地会见内存,但这也给措施的安详性带来了很大的隐患,由于措施员可以对指针随意的运算操纵,所以一不把稳就会粉碎其他的存储单元,导致措施中呈现意想不到的功效。引用担任了指针节减内存的利益,又限制了对地点的操纵,所以他是安详的。引用范例包罗所有类生成的实例和数组(不管是工具数组照旧根基范例数组都实现Cloneable接口,所以他也是一个工具实例),所有引用范例都担任自Object这个类。要说明一点的是java中的所有变量都是一个引用,不管是引用范例照旧根基范例。

此刻要正式接头范例的转换了。用过C/C++的人对根基范例的转换城市很清楚,根基范例转换分为范例晋升和强制转换。

譬喻:

int a=100;
long b=a+100;//这个处所就用到了范例晋升,a+100从int晋升到了long
a=(int)b;//这个处所用到了强制转换

强制范例转换在某种环境下会丢失精度,如:

byte b;
int a=200;
b=(byte)a;//固然这里用到了强制转换,但因为byte的范畴是-127到127
//所以强制转换后宽度会被截短

在java中除了这些转换之外根基数据范例还可以被隐式的转换成String,譬喻:

System.out.print("转换"+100);//假如在数据前面有字符串用+毗连
//就会隐式的转换成String

引用范例的转换实现起来要比C++简朴的多,假如一个工具与另一个工具没有任何的担任干系,那么他们就不能举办范例转换。假如要把一个派生类工具赋值给基类工具这个称为上溯造型。假如要把基类工具赋值给派生类工具就需要强制范例转换,这称为下溯造型,下溯造型有一些危险,要安详的举办下溯造型有一个前题,基类工具必需是从派生类工具中上溯过来的。

譬喻:

class Base{}
class Child extends Base{
 public static void main(String[] args){
  Base base=new Child();//上溯造型
  Child child=(Child)base;//下溯造型
  Child child1=(Child)new
  Base();//抛出ClassCastException异常
 }
}

最后,谈一谈String与引用范例的转换。前面已经说过,所有的工具都是从Object担任过来的,Object中有一个toString要领。这个要领是所有的工具都可以转换成String,假如想把自界说的类转换成String,最安详的做法是重写toString要领。和根基范例一样假如工具前有String工具用+毗连,工具就会隐式转换成String,这种环境实际上是隐式挪用了toString要领。

    关键字:

在线提交作业