网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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,移动开发
本月文章推荐
.JDBC连接数据库经验集萃.
.STRUTS 入门教学(1).
.EJB3 Persistence API标准化持久.
.Java开发框架:关于SSH架构的简单.
.技术分享 配置Eclipse进行远程调.
.性能优化:==代替equals.
.多形性的覆盖与过载.
.脚本问题解答.
.Applet编程技巧.
.Think in java 3rd 中文版12_13.
.查询数据库后返回Iterator.
.JBuilder 编辑器常规设置及优化(.
.J2EE综合:如何处理大数据量的查.
.在Jini,RMI和Applet中如何实现代.
.开发Java系统程序员要注意的基本.
.解析Java的多线程机制(1).
.Spring VS. HiveMind 优点缺点大.
.用Xalan-Java分割字符串.
.X3D实战基础讲座之九.
.Java Web Start入门基础教程.

一个堆栈类

发表日期:2008-1-5


尽管Box 类在说明一个类的必要的元素时是有用的,但它实际应用的价值并不大。为了显示出类的真实的功能,本章将用一个更复杂的例子来说明类的强大功能。假如你回忆起在第2章中讲过的面向对象编程的讨论,你就会想起对象编程的最重要的好处之一是对数据和操作该数据的代码的封装。你已经知道,在Java 中,就是通过类这样的机制来完成封装性。在创建一个类时,你正在创建一种新的数据类型,不但要定义数据的属性,也要定义操作数据的代码。进一步,方法定义了对该类数据相一致的控制接口。因此,你可以通过类的方法来使用类,而没有必要担心它的实现细节或在类的内部数据实际上是如何被治理的。在某种意义上,一个类像“一台数据引擎”。你可以通过操纵杆来控制使用引擎,而不需要知道引擎内是如何工作的。事实上,既然细节被隐蔽,当需要时,它的内部工作可以被改变。只要你的代码通过类的方法来使用它,内部的细节可以改变而不会对类的外部带来负面影响。

为了看看前面讨论概念的一个实际的应用,让我们开发一个封装的典型例子:堆栈(stack)。堆栈用先进后出的顺序存储数据。堆栈通过两个传统的操作来控制:压栈(push)和出栈(pop)。在堆栈的上面加入一项,用压栈,从堆栈中取出一项,用出栈。你将看到,将整个堆栈机制封装是很轻易的。

下面是一个叫做Stack的类,实现整数的堆栈。

// This class defines an integer stack that can hold 10 values.

class Stack {int stck[] = new int[10]; int tos;

// Initialize top-of-stack
Stack() {
tos = -1;
}

// Push an item onto the stack void push(int item) {if(tos==9) System.out.println("Stack is full."); else stck[++tos] = item; }

// Pop an item from the stack int pop() {

if(tos < 0) { System.out.println("Stack underflow."); return 0;

}
else
return stck[tos--];
}
}

正如你看到的,Stack类定义了两个数据项、三个方法。整数堆栈由数组stck存储。该数组的下标由变量tos 控制,该变量总是包含堆栈顶层的下标。Stack()构造函数将tos 初始化为-1,它指向一个空堆栈。方法push() 将一个项目压入堆栈。为了重新取回压入堆栈的项目,调用pop()。既然存取数据通过push()和pop() ,数组中存储堆栈的事实实际上和使用的堆栈不相关。例如,堆栈可以被存储在一个更复杂的数据结构中,例如一个链表,但push()和pop() 定义的接口仍然是一样的。

下面示例的类TestStack,验证了Stack类。该类产生两个整数堆栈,将一些值存入,然后将它们取出。

class TestStack {

public static void main(String args[]) {
Stack mystack1 = new Stack();
Stack mystack2 = new Stack();

// push some numbers onto the stack
for(int i=0; i<10; i++) mystack1.push(i);
for(int i=10; i<20; i++) mystack2.push(i);


上一篇:一个javabean轻松实现对数据库的各种操作 人气:633
下一篇:一个简单的JDBC包装器(2) 人气:906
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐