搜狐首页 - 新闻 - 体育 - 娱乐 - 财经 - IT - 汽车 - 房产 - 女人 - 短信 - 彩信 - 校友录 - 邮件 - 搜索 - BBS - 搜狗 
搜狐首页 >> 搜狐IT >> 数码天下 >> 网狐教程-搜狐IT >> 程序开发-网狐教程-搜狐IT >> Java
闲话Java中的类型转换
IT.SOHU.COM  2004-06-17 17:12  转自: 天极网
页面功能 【我来说两句】【我要“揪”错】【推荐】【字体: 】【打印】 【关闭

  要说类型转换,首先要说一说java的数据类型。java中的数据类型分为两种:基本类型、引用类型。基本数据类型没有什么好说的bytecharshort int long floatdoubleboolean,这些类型除了boolean之外,其他的与C语言中的类型没有太大的区别。因为这篇文章的论题是类型转换,所以在此不讨论boolean值的用法。

  下面要说的是引用类型。引用在有的书里也叫做句柄,它很类似C/C++中的指针,但要注意引用和指针并不是同一个概念。指针是一个存放地址的变量,他使C/C++程序员能够灵活地访问内存,但这也给程序的安全性带来了很大的隐患,由于程序员可以对指针随意的运算操作,所以一不留神就会破坏其他的存储单位,导致程序中出现意想不到的结果。引用继承了指针节省内存的优点,又限制了对地址的操作,所以他是安全的。引用类型包括所有类生成的实例和数组(不管是对象数组还是基本类型数组都实现Cloneable接口,所以他也是一个对象实例),所有引用类型都继承自t这个类。要说明一点的是java中的所有变量都是一个引用,不管是引用类型还是基本类型。

  现在要正式讨论类型的转换了。用过C/C++的人对基本类型的转换都会很清楚,基本类型转换分为类型提升和强制转换。

  例如:inta=100;longb=a+100;//这个地方就用到了类型提升,a+100从int提升到了longa=(int)b;//这个地方用到了强制转换

  强制类型转换在某种情况下会丢失精度,如:byteb;inta=200;b=(byte)a;//虽然这里用到了强制转换,但因为byte的范围是-127到127//所以强制转换后宽度会被截短

  在java中除了这些转换之外基本数据类型还可以被隐式的转换成String,例如:System.out.print(转换+100);//如果在数据前面有字符串用+连接//就会隐式的转换成String

  引用类型的转换实现起来要比C++简单的多,如果一个对象与另一个对象没有任何的继承关系,那么他们就不能进行类型转换。如果要把一个派生类对象赋值给基类对象这个称为上溯造型。如果要把基类对象赋值给派生类对象就需要强制类型转换,这称为下溯造型,下溯造型有一些危险,要安全的进行下溯造型有一个前题,基类对象必须是从派生类对象中上溯过来的。

  例如:class Baseclass Child extends Base public staticvoidmain(String args)

  Base base=new Child();//上溯造型

  Child child=(Child)base;//下溯造型

  Child child1=(Child)new

  Base();//抛出ClassCastException异常

  最后,谈一谈String与引用类型的转换。前面已经说过,所有的对象都是从t继承过来的,t中有一个toString方法。这个方法是所有的对象都可以转换成String,如果想把自定义的类转换成String,最安全的做法是重写toString方法。和基本类型一样如果对象前有String对象用+连接,对象就会隐式转换成String,这种情况实际上是隐式调用了toString方法。   
页面功能 【我来说两句】【我要“揪”错】【推荐】【字体: 】【打印】 【关闭




ChinaRen - 搜狐招聘 - 网站登录 - 帮助中心 - 设置首页 - 广告服务 - 联系方式 - 保护隐私权 - About SOHU - 公司介绍
Copyright © 2005 Sohu.com Inc. All rights reserved. 搜狐公司 版权所有

相关链接
  • 动态的View Picker Portlet(1)(03/24 19:53)
  • 动态的View Picker Portlet(2)(03/24 19:47)
  • 防御性编码和单元测试规则(1)(03/24 19:41)
  • 防御性编码和单元测试规则(2)(03/24 19:37)
  • J2EE应用服务器与JBuilder集成的实现(03/24 19:33)
  • Java研究:this 之鲜为人知的一面(03/23 18:46)
  • Java Servlet 编程及应用之六(03/22 20:46)
  • javascript版的日期输入控件(03/19 16:40)
  • Java开发技巧:如何计算对数(03/17 19:01)

  •  ■ 我来说两句
    用  户:        匿名发出:
    请各位遵纪守法并注意语言文明。
     
    *经营许可证编号:京ICP00000008号
    *《互联网电子公告服务管理规定》
    *《全国人大常委会关于维护互联网安全的规定》
    短信内容:
    手 机
    自写包月5分钱/条 更多>>
    搜狐天气为你抢先报! 魔力占卜姻缘一线牵!
    金币不是赚的是抢的! 爱情玄机任由你游戏!
    猪八戒这样泡到紫霞! 帅哥一定要看的宝典!
    你受哪颗星星的庇护? 萨达姆最新关押照片!
    精彩彩信
    [和弦]欧若拉 一生有你
    沧海一声笑
    [音效]挪威的森林
    爆铃 MP3 G点图 动画
    [和弦]童话 你到底爱谁
    [原唱]一千年以后 断点
    [爆笑音效]赚钱拉 野花
    [串烧]张韶涵 潘玮柏
    精彩短信
    [和弦]小薇 好心分手
    [音效]当当当当 忘记


    搜狐商城
    ·家电|品牌风扇新品热销
    ·音乐|秦海璐幸福回味
    ·图书|《眼镜蛇事件》
    更多...