网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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,移动开发
本月文章推荐
.实例讲解:Java中的SOAP技术.
.Cook JDBC with SpringFramework.
.品味Eclipse 3.1 中的新特性.
.专家释疑:轻松提高Java代码的性.
.applet调用javacomm20-win32API注.
.使用JDBC和Hibernate来写入Blob型.
.P2P (Peer-to-peer technology) .
.深入浅出基于Java的代理设计模式.
.java缓冲区溢出编程心得.
.Java Web Framework综述.
.Java访问数据库的速度瓶颈问题的.
.利用JAVA操作EXCEL文件.
.IBM增添Web服务工具.
.Log4J日志管理系统使用心得体会.
.Java Script与Java Applet的综合.
.Java繁体中文处理完全攻略.
.2005年4月8日--正式开始我的Java.
.深入abstract class和interface.
.多附件、带有预览功能的HTML页面.
.Applet编程技巧.

Java中的Vector

发表日期:2008-1-5



  Vector的用法很简单,这已在前面的例子中得到了证实。尽管我们大多数时候只需用addElement()插入对象,用elementAt()一次提取一个对象,并用elements()获得对序列的一个“枚举”。但仍有其他一系列方法是非常有用的。同我们对于Java库惯常的做法一样,在这里并不使用或讲述所有这些方法。但请务必阅读相应的电子文档,对它们的工作有一个大概的熟悉。
  
  1. 崩溃Java
  
  Java标准集合里包含了toString()方法,所以它们能生成自己的String表达方式,包括它们容纳的对象。例如在Vector中,toString()会在Vector的各个元素中步进和遍历,并为每个元素调用toString()。假定我们现在想打印出自己类的地址。看起来似乎简单地引用this即可(非凡是C++程序员有这样做的倾向):
  
  //: CrashJava.java
  // One way to crash Java
  import java.util.*;
  
  public class CrashJava {
   public String toString() {
    return "CrashJava address: " + this + "\n";
   }
   public static void main(String[] args) {
    Vector v = new Vector();
    for(int i = 0; i < 10; i++)
     v.addElement(new CrashJava());
    System.out.println(v);
   }
  } ///:~
  
  若只是简单地创建一个CrashJava对象,并将其打印出来,就会得到无穷无尽的一系列违例错误。然而,假如将CrashJava对象置入一个Vector,并象这里演示的那样打印Vector,就不会出现什么错误提示,甚至连一个违例都不会出现。此时Java只是简单地崩溃(但至少它没有崩溃我的操作系统)。这已在Java 1.1中测试通过。
  此时发生的是字串的自动类型转换。当我们使用下述语句时:
  "CrashJava address: " + this
  编译器就在一个字串后面发现了一个“+”以及好象并非字串的其他东西,所以它会试图将this转换成一个字串。转换时调用的是toString(),后者会产生一个递归调用。若在一个Vector内出现这种事情,看起来堆栈就会溢出,同时违例控制机制根本没有机会作出响应。
  若确实想在这种情况下打印出对象的地址,解决方案就是调用Object的toString方法。此时就不必加入this,只需使用super.toString()。当然,采取这种做法也有一个前提:我们必须从Object直接继续,或者没有一个父类覆盖了toString方法。
上一篇:Java中的排序 人气:1658
下一篇:Java中的BitSet 人气:1030
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐