网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.可简化生成JScript过程的自定义标.
.在Web应用中使用XML文件配置数据.
.Apache WS Policy&nbs.
.Java Web Start介绍.
.如何在 SPRING 中实现.
.一个CMP的例子(一).
.评论:Java应用热遍全球.
.Jakarta Commons 内容简介.
.Java与XML联合编程之SAX篇.
.在Weblogic上配置Hibernate为JND.
.Java接口的妙用.
.Shark api 应用:获得子流程(sub.
.Java 访问 Access 的一般方法介绍.
.本源XML数据库Xindice 介绍 (1..
.Java 数据类型 和 与String之间的.
.使用Java操作文本文件.
.Hibernate查询语言:HQL.
.改头换面之:J2EE 更名为 Java EE.
.用java中的canendal 如何计算两个.
.Java从何而来 为什么会如此火爆?.

闲话Java中的类型转换

发表日期:2008-1-5



  要说类型转换,首先要说一说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方法。
上一篇:Java高级编程:使用打印服务API 人气:639
下一篇:WebSphere SAP适配器编程基础 人气:601
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐