2007年7月30日的工作总结

来源:互联网 发布:淘宝一审是什么意思 编辑:程序博客网 时间:2024/06/02 13:35
 
今天在做仿杜邦图的节点交换的时候,犯了一个低级的错误,把java中所有变量皆引用(当然基本类型除外)的概念忘记了。我在交换两个节点顺序时候,是这样做的:
DHBDupontNodeItem tempitem = nodearray[nodenum];
nodearray[nodenum]. setNodeOrder(nodearray[nodesiblingnum]. getNodeOrder());
nodearray[nodesiblingnum]. setNodeOrder(tempitem. getNodeOrder());
 
我的目的是交换nodearray[nodenum]nodearray[nodesiblingnum]两个节点中的order变量的数值,我的思路:把nodearray[nodenum]赋给一个临时的item对象,然后用nodearray[nodesiblingnum]order变量覆盖nodearray[nodenum]order变量,最后再用临时的item对象去覆盖nodearray[nodesiblingnum]order变量。其实第一步已经错了,把nodearray[nodenum]赋给一个临时的item对象,是把nodearray[nodenum]的地址给了tempitem变量,此时临时的变量和nodearray[nodenum]所指的对象是一个,所以在第二步覆盖nodearray[nodenum]order变量的同时也就改变了tempitemorder变量的数值,结果使得nodearray[nodesiblingnum]nodearray[nodenum].order变量数值是一样的。
Java最基本的概念就是类,类包括函数和变量。如果想要应用类,就要把类生成对象,这个过程被称作"类的实例化"。有几种方法把类实例化成对象,最常用的就是用"new"操作符。类实例化成对象后,就意味着要在内存中占据一块空间存放实例。想要对这块空间操作就要应用到对象的引用。引用在Java语言中的体现就是变量,而变量的类型就是这个引用的对象
范围:只有局部的引用,没有局部的对象。引用在Java语言的体现就是变量,而变量在Java语言中是有范围的,可以是局部的,也可以是全局的。
  生存期:程序只能控制引用的生存周期。对象的生存期是由Java控制。用"new Object()"语句生成一个新的对象,是在计算机的内存中声明一块区域存储对象,只有Java的垃圾收集器才能决定在适当的时候回收对象占用的内存
Hashtable表存储的任何一个StringBuffer对象(更确切的说应该是对象的引用)的改动,实际上都是对同一个"StringBuffer"的改动。所以Hashtable并不能真正存储能对象,而只能存储对象的引用。也应该知道这条原则对与Hashtable相似的Vector, List, Map, Set等都是一样的。
 
原创粉丝点击