摘要:
如果一个程序只含有数量固定的对象,而且已知它们存在的时间,那这个程序时相当简单的。 数组 容纳对象有很多方式,数组是其中最为普遍的一种,它主要有如下两个特点:效率和类型。对于Java来说,为保存和访问一系列对象(实际是对象的句柄),最有效率的方法莫过于数组。数组实际是一个简单的线性序列,因此访问速度非常的快,但是它也存在一些限制,如数组的大小是固定的,并且不可以在“存在时间”内发生改变。 对... 阅读全文
摘要:
“Java引人注目的一项特性是代码的重复使用或者再生。但最具革命意义的是,除代码的复制和修改以外,我们还能做多得多的其他事情。” 使用别人已经创建好并调试好的类来创建新类,主要有如下两种办法:(1)在新类里简单地创建原有类的对象,这叫“合成”;(2)原样采取现有类的形式,并在其中添加新的代码来创建一个新类,叫“继承”。 继承与Java(以及其它OOP语言)非常紧密的结合在一起。创建一个类的时候... 阅读全文
摘要:
在面向对象的设计过程中,一个非常重要的一点就是要将发生变化的东西和保持不变的东西分隔开。包是Java中一个很重要的概念,在用Java进行软件开发的时候,经常会使用到包,不同的包里面可能会存在名字相同的类,因此要注意冲突处理。正是由于这种潜在的名字冲突,因此要对Java中的命名空间进行完整的控制。创建Java源码文件的时候,通常叫一个编辑单元(编译单元),它必须以.java作为文件名的后缀,并且编译单元里只有一个public类,它必须与编译文件有相同的名字(包括大小写)。编译一个.Java文件时,会生成一系列.class文件,对应于.Java文件中的每个类。这样最终从少量的.,Java文件中得到 阅读全文
摘要:
随着计算机的进步,“不安全”的程序设计已经成为造成编程代价高昂的罪魁祸首之一。C++中引入了构造器的概念,在对象创建的过程中调用。Java中也沿用这种概念,但新增了自己的“垃圾收集器”,能在资源不再需要的时候自动释放他们。用构造器自动初始化Java中由于构造器的存在,可以确保每个类的对象都能正确的初始化。Java中构造器与类名相同,其原因有二:(1)我们使用的任何名字都有可能和打算作为类成员的名字相冲突;(2)由于编译器要调用构造器,所以它必须知道要调用的是哪个方法。构造器的名字跟类名相同就能很好地解决上面两个问题,这一点跟Delphi中用Create作为构造器的名字有异曲同工之妙。需要注意的 阅读全文
摘要:
用句柄操纵对象在Java里,任何东西都被看成了对象,但是用户实际操作的是指向对象的句柄。创建一个句柄时,无论如何都要初始化,否则在使用的时候会出现错误。Java数据保存的地方(1)寄存器:寄存器是最快的保存区域,因为它位于处理器的内部。但是寄存器的数量有限,故它只能由编译器根据需要进行分配,用户是无法直接跟寄存器打交道的。(2)堆栈:驻留于常规RAM(随机访问存储器)区域,但可通过它的“堆栈指针”获得处理的直接支持。堆栈指针向下移动,会创建新的内存;若向上移动,则会释放那些内存。这是一种特别快、特别有效的数据保存方式,仅次于寄存器。Java对象的句柄一般保存在堆栈里,但是Java对象一般不保存 阅读全文
摘要:
“纯粹”的面向对象程序设计方法 (1) 所有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。理论上讲,可从要解决的问题身上提出所有概念性的组件,然后在程序中将其表达为一个对象。 (2) 程序是一大堆对象的组合;通过消息传递,各对象知道自己该做些什么。为了向对象发出请求,需向那个对象“发送一条消息”。更具体地讲,可将消息想象为一个调用请求,它调用的是从属于目标对... 阅读全文
摘要:
模式匹配算法是字符串模式匹配中一个比较好的算法,但是学起来非常的费解,特别是next数组的产生过程让人有点摸不着头脑。现在尝试对这个方法进行深入的了解,以求熟练掌握这一算法思想。 KMP算法又叫克努特-莫里斯-普拉特操作,是由这三个人发明的。其中的克努特就是《计算机程序设计的艺术》这本书的作者,也是软件界巨匠式的人物。 KMP算法的基本思路是:每当一次匹配过程出现字符比较不等时,不需要回溯i指针,而是利用已经得到的“部分匹配”的结果将模式串“向右”滑动尽可能远的一段距离后,继续进行比较。 需要解决的问题是:当匹配过程中产生“失配”(即si <> pj)的时候,模式串“向右滑动”可行 阅读全文
摘要:
这个问题比较有趣,跟大家分享一下吧。问题来源于昨天要改的一个bug。其表现大概是这样的:在钢筋中打开工程3,在对量中对比工程3和工程4。然后在对量中使用“定位到GGJ”的功能,能够正常应用到工程3(审核)。接着在钢筋中将“工程3”另存为“工程31”,这个时候在对量中使用应用到GGJ的时候,系统没有任何反应。既不告诉不能定位,也没弹出定位列表,但是对量软件最小化了。这说明在钢筋中另存为后,对量使用“定位到GGJ”时,钢筋有响应,但是这个响应有问题。这与我们的直观想象不同,因为我们“定位到GGJ”的原理是首先是通过审核工程名或者送审工程名来找窗体,判断这个工程是否在钢筋软件中打开。那么,一旦另存为 阅读全文
摘要:
用了一段时间VC6,发现里面有一些在Delphi中很常见的功能都没有,所以尝试着自己解决这个问题。 今天主要是解决文件头的注释问题,在网上看了一些博文,然后整理出了一个适合自己的模板,现记录如下:Sub FileComment() 'DESCRIPTION: 文件头的注释ActiveDocument.Selection = "/*--------------------------------------------------------------------" ActiveDocument.Selection.NewLine ActiveDocument.Se 阅读全文
摘要:
Python学习笔记 在windows操作系统中,推出python命令提示行的快捷键是先按ctrl+z,然后再按Enter。 Python是大小写敏感的。要确保每一行的开始字符前没有空格和制表符。 #为注释符号。 如果想要获取某个python函数或者语句的快速帮助信息,可以使用内建的help功能,特别是在使用带提示符的命令行的时候。这个时候可以按q退出帮助。 一、基本概念 1、数 Python中有四种类型的数:整数,长整数,浮点数和复数。 2、字符串 如何在python中使用字符串? (1)使用单引号 原样保留 (2)使用双引号 使用与单引号完全相同。 (3)使... 阅读全文