当前位置:首页 » 服务器技术
开发技术指南» 文章正文
    引言: Java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,本文会试图澄清这一概念。
 

 

    摘要:今天与朋友对architecture进行了一番讨论,最后这哥们搬出了《the unified software development process》的资料证明给我看 呵呵,俺不敢妄言uml三巨头的rup有错,但如果行而上,是不是有迷失自己的危险?! 说实话,对uml和rup,小朋友我还初在似懂非懂的阶段。 uml这种东东给我带来对软件研发的思考,首先是从不同的角度去分析软件的合理性,但每个人有每个人的角度,从自己的角度去看问题,得到不同的结论。 ......
    摘要:俺一向信奉“它山之石可以攻玉 ”。 多年从事计算机的经验告诉我,对待棘手问题最有效率的方式是依赖“它山”(可能有人一辈子也找不到这座山!)。 这种思路可能触及了某些技术疯子的敏感神经。但却是俺的切身体会。 抛开软件不谈,以小朋友我对硬件和一些操作系统使用的精力来看 对待某些问题不能一味死钻牛角尖。 殊途同归是老夫到现在还能搞定一些别人反复试验不得解的问题的关键。 对于硬件和操作系统的学习,俺从来没......


JAVA中的指针,引用及对象的clone

java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,本文会试图澄清这一概念。并且由于java不能通过简单的赋值来解决对象复制的问题,在开发过程中,也常常要要应用clone()方法来复制对象。本文会让你了解什么是影子clone与深度clone,认识它们的区别、优点及缺点。 

看到这个标题,是不是有点困惑:java语言明确说明取消了指针,因为指针往往是在带来方便的同时也是导致代码不安全的根源,同时也会使程序的变得非常复杂难以理解,滥用指针写成的代码不亚于使用早已臭名昭著的"goto"语句。java放弃指针的概念绝对是极其明智的。但这只是在java语言中没有明确的指针定义,实质上每一个new语句返回的都是一个指针的引用,只不过在大多时候java中不用关心如何操作这个"指针",更不用象在操作c++的指针那样胆战心惊。唯一要多多关心的是在给函数传递对象的时候。如下例程:  【相关文章:C++源代码的语法加亮(专门用于post

【扩展阅读:一道初学者题目,“ 用1-9数字做不重复

【扩展信息:[推荐]微软开发者系列讲座下载

package reference; 

class obj{ 

string str = "init value"; 

public string tostring(){ 

return str; 

public class objref{ 

obj aobj = new obj(); 

int aint = 11; 

public void changeobj(obj inobj){ 

inobj.str = "changed value"; 

public void changepri(int inint){ 

inint = 22; 

public static void main(string[] args) 

objref oref = new objref(); 

system.out.println("before call changeobj() method: " + oref.aobj); 

oref.changeobj(oref.aobj); 

system.out.println("after call changeobj() method: " + oref.aobj); 

system.out.println("==================print primtive================="); 

system.out.println("before call changepri() method: " + oref.aint); 

oref.changepri(oref.aint); 

system.out.println("after call changepri() method: " + oref.aint); 

/* run result 

before call changeobj() method: init value 

after call changeobj() method: changed value 

==================print primtive================= 

before call changepri() method: 11 

after call changepri() method: 11 

*/ 

这段代码的主要部分调用了两个很相近的方法,changeobj()与changepri()。唯一不同的是它们一个把对象作为输入参数,另一个把java中的基本类型int作为输入参数。并且在这两个函数体内部都对输入的参数进行了改动。看似一样的方法,程序输出的结果却不太一样。changeobj()方法真正的把输入的参数改变了,而changepri()方法对输入的参数没有任何的改变。 

从这个例子知道java对对象与基本的数据类型的处理是不一样的。
...   下一页
 ·实现自己的lisp解释器(一)    »显示摘要«
    摘要: 发了好几篇关于lisp的文章,但是一直苦于手头没有一个合用的lisp解释器,于是狠一狠心,决定自己写一个,一来是为了配合前几篇入门教程,二来也算是打发无聊的时光吧。 花了不到两天时间,写出了一个lisp解释器的雏形,遵照惯例,我给它起名叫lisp48,意思就是48小时内写出的lisp,当然,你也可以把它理解为只完成了48%的lisp。其中还有很多bug,很多语句还不能正常工作,不过我想这应该不妨碍我们理解如何用“命令式语言”......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE